(function polyfill() {
  const relList = document.createElement("link").relList;
  if (relList && relList.supports && relList.supports("modulepreload")) {
    return;
  }
  for (const link4 of document.querySelectorAll('link[rel="modulepreload"]')) {
    processPreload(link4);
  }
  new MutationObserver((mutations) => {
    for (const mutation of mutations) {
      if (mutation.type !== "childList") {
        continue;
      }
      for (const node of mutation.addedNodes) {
        if (node.tagName === "LINK" && node.rel === "modulepreload")
          processPreload(node);
      }
    }
  }).observe(document, { childList: true, subtree: true });
  function getFetchOpts(link4) {
    const fetchOpts = {};
    if (link4.integrity)
      fetchOpts.integrity = link4.integrity;
    if (link4.referrerPolicy)
      fetchOpts.referrerPolicy = link4.referrerPolicy;
    if (link4.crossOrigin === "use-credentials")
      fetchOpts.credentials = "include";
    else if (link4.crossOrigin === "anonymous")
      fetchOpts.credentials = "omit";
    else
      fetchOpts.credentials = "same-origin";
    return fetchOpts;
  }
  function processPreload(link4) {
    if (link4.ep)
      return;
    link4.ep = true;
    const fetchOpts = getFetchOpts(link4);
    fetch(link4.href, fetchOpts);
  }
})();
function makeMap(str, expectsLowerCase) {
  const map2 = /* @__PURE__ */ Object.create(null);
  const list3 = str.split(",");
  for (let i2 = 0; i2 < list3.length; i2++) {
    map2[list3[i2]] = true;
  }
  return expectsLowerCase ? (val) => !!map2[val.toLowerCase()] : (val) => !!map2[val];
}
const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt";
const isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
function normalizeStyle(value) {
  if (isArray$1(value)) {
    const res = {};
    for (let i2 = 0; i2 < value.length; i2++) {
      const item = value[i2];
      const normalized = isString$4(item) ? parseStringStyle(item) : normalizeStyle(item);
      if (normalized) {
        for (const key in normalized) {
          res[key] = normalized[key];
        }
      }
    }
    return res;
  } else if (isString$4(value)) {
    return value;
  } else if (isObject$4(value)) {
    return value;
  }
}
const listDelimiterRE = /;(?![^(]*\))/g;
const propertyDelimiterRE = /:([^]+)/;
const styleCommentRE = /\/\*.*?\*\//gs;
function parseStringStyle(cssText) {
  const ret = {};
  cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
    if (item) {
      const tmp = item.split(propertyDelimiterRE);
      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
    }
  });
  return ret;
}
function normalizeClass(value) {
  let res = "";
  if (isString$4(value)) {
    res = value;
  } else if (isArray$1(value)) {
    for (let i2 = 0; i2 < value.length; i2++) {
      const normalized = normalizeClass(value[i2]);
      if (normalized) {
        res += normalized + " ";
      }
    }
  } else if (isObject$4(value)) {
    for (const name2 in value) {
      if (value[name2]) {
        res += name2 + " ";
      }
    }
  }
  return res.trim();
}
function normalizeProps(props) {
  if (!props)
    return null;
  let { class: klass, style } = props;
  if (klass && !isString$4(klass)) {
    props.class = normalizeClass(klass);
  }
  if (style) {
    props.style = normalizeStyle(style);
  }
  return props;
}
const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
function includeBooleanAttr(value) {
  return !!value || value === "";
}
function looseCompareArrays(a2, b2) {
  if (a2.length !== b2.length)
    return false;
  let equal = true;
  for (let i2 = 0; equal && i2 < a2.length; i2++) {
    equal = looseEqual(a2[i2], b2[i2]);
  }
  return equal;
}
function looseEqual(a2, b2) {
  if (a2 === b2)
    return true;
  let aValidType = isDate$1(a2);
  let bValidType = isDate$1(b2);
  if (aValidType || bValidType) {
    return aValidType && bValidType ? a2.getTime() === b2.getTime() : false;
  }
  aValidType = isSymbol$1(a2);
  bValidType = isSymbol$1(b2);
  if (aValidType || bValidType) {
    return a2 === b2;
  }
  aValidType = isArray$1(a2);
  bValidType = isArray$1(b2);
  if (aValidType || bValidType) {
    return aValidType && bValidType ? looseCompareArrays(a2, b2) : false;
  }
  aValidType = isObject$4(a2);
  bValidType = isObject$4(b2);
  if (aValidType || bValidType) {
    if (!aValidType || !bValidType) {
      return false;
    }
    const aKeysCount = Object.keys(a2).length;
    const bKeysCount = Object.keys(b2).length;
    if (aKeysCount !== bKeysCount) {
      return false;
    }
    for (const key in a2) {
      const aHasKey = a2.hasOwnProperty(key);
      const bHasKey = b2.hasOwnProperty(key);
      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a2[key], b2[key])) {
        return false;
      }
    }
  }
  return String(a2) === String(b2);
}
function looseIndexOf(arr, val) {
  return arr.findIndex((item) => looseEqual(item, val));
}
const toDisplayString$1 = (val) => {
  return isString$4(val) ? val : val == null ? "" : isArray$1(val) || isObject$4(val) && (val.toString === objectToString$2 || !isFunction$3(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
};
const replacer = (_key, val) => {
  if (val && val.__v_isRef) {
    return replacer(_key, val.value);
  } else if (isMap(val)) {
    return {
      [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
        entries[`${key} =>`] = val2;
        return entries;
      }, {})
    };
  } else if (isSet(val)) {
    return {
      [`Set(${val.size})`]: [...val.values()]
    };
  } else if (isObject$4(val) && !isArray$1(val) && !isPlainObject$2(val)) {
    return String(val);
  }
  return val;
};
const EMPTY_OBJ = {};
const EMPTY_ARR = [];
const NOOP = () => {
};
const NO = () => false;
const onRE = /^on[^a-z]/;
const isOn = (key) => onRE.test(key);
const isModelListener = (key) => key.startsWith("onUpdate:");
const extend = Object.assign;
const remove = (arr, el2) => {
  const i2 = arr.indexOf(el2);
  if (i2 > -1) {
    arr.splice(i2, 1);
  }
};
const hasOwnProperty$4 = Object.prototype.hasOwnProperty;
const hasOwn$1 = (val, key) => hasOwnProperty$4.call(val, key);
const isArray$1 = Array.isArray;
const isMap = (val) => toTypeString$1(val) === "[object Map]";
const isSet = (val) => toTypeString$1(val) === "[object Set]";
const isDate$1 = (val) => toTypeString$1(val) === "[object Date]";
const isRegExp$2 = (val) => toTypeString$1(val) === "[object RegExp]";
const isFunction$3 = (val) => typeof val === "function";
const isString$4 = (val) => typeof val === "string";
const isSymbol$1 = (val) => typeof val === "symbol";
const isObject$4 = (val) => val !== null && typeof val === "object";
const isPromise = (val) => {
  return isObject$4(val) && isFunction$3(val.then) && isFunction$3(val.catch);
};
const objectToString$2 = Object.prototype.toString;
const toTypeString$1 = (value) => objectToString$2.call(value);
const toRawType = (value) => {
  return toTypeString$1(value).slice(8, -1);
};
const isPlainObject$2 = (val) => toTypeString$1(val) === "[object Object]";
const isIntegerKey = (key) => isString$4(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
const isReservedProp = /* @__PURE__ */ makeMap(
  // the leading comma is intentional so empty string "" is also included
  ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
);
const cacheStringFunction = (fn) => {
  const cache2 = /* @__PURE__ */ Object.create(null);
  return (str) => {
    const hit = cache2[str];
    return hit || (cache2[str] = fn(str));
  };
};
const camelizeRE = /-(\w)/g;
const camelize = cacheStringFunction((str) => {
  return str.replace(camelizeRE, (_2, c2) => c2 ? c2.toUpperCase() : "");
});
const hyphenateRE = /\B([A-Z])/g;
const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
const capitalize$1 = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize$1(str)}` : ``);
const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
const invokeArrayFns = (fns, arg) => {
  for (let i2 = 0; i2 < fns.length; i2++) {
    fns[i2](arg);
  }
};
const def = (obj, key, value) => {
  Object.defineProperty(obj, key, {
    configurable: true,
    enumerable: false,
    value
  });
};
const looseToNumber = (val) => {
  const n = parseFloat(val);
  return isNaN(n) ? val : n;
};
const toNumber = (val) => {
  const n = isString$4(val) ? Number(val) : NaN;
  return isNaN(n) ? val : n;
};
let _globalThis$1;
const getGlobalThis$1 = () => {
  return _globalThis$1 || (_globalThis$1 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
};
let activeEffectScope;
class EffectScope {
  constructor(detached = false) {
    this.detached = detached;
    this._active = true;
    this.effects = [];
    this.cleanups = [];
    this.parent = activeEffectScope;
    if (!detached && activeEffectScope) {
      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;
    }
  }
  get active() {
    return this._active;
  }
  run(fn) {
    if (this._active) {
      const currentEffectScope = activeEffectScope;
      try {
        activeEffectScope = this;
        return fn();
      } finally {
        activeEffectScope = currentEffectScope;
      }
    }
  }
  /**
   * This should only be called on non-detached scopes
   * @internal
   */
  on() {
    activeEffectScope = this;
  }
  /**
   * This should only be called on non-detached scopes
   * @internal
   */
  off() {
    activeEffectScope = this.parent;
  }
  stop(fromParent) {
    if (this._active) {
      let i2, l2;
      for (i2 = 0, l2 = this.effects.length; i2 < l2; i2++) {
        this.effects[i2].stop();
      }
      for (i2 = 0, l2 = this.cleanups.length; i2 < l2; i2++) {
        this.cleanups[i2]();
      }
      if (this.scopes) {
        for (i2 = 0, l2 = this.scopes.length; i2 < l2; i2++) {
          this.scopes[i2].stop(true);
        }
      }
      if (!this.detached && this.parent && !fromParent) {
        const last = this.parent.scopes.pop();
        if (last && last !== this) {
          this.parent.scopes[this.index] = last;
          last.index = this.index;
        }
      }
      this.parent = void 0;
      this._active = false;
    }
  }
}
function effectScope(detached) {
  return new EffectScope(detached);
}
function recordEffectScope(effect2, scope = activeEffectScope) {
  if (scope && scope.active) {
    scope.effects.push(effect2);
  }
}
function getCurrentScope() {
  return activeEffectScope;
}
function onScopeDispose(fn) {
  if (activeEffectScope) {
    activeEffectScope.cleanups.push(fn);
  }
}
const createDep = (effects) => {
  const dep = new Set(effects);
  dep.w = 0;
  dep.n = 0;
  return dep;
};
const wasTracked = (dep) => (dep.w & trackOpBit) > 0;
const newTracked = (dep) => (dep.n & trackOpBit) > 0;
const initDepMarkers = ({ deps }) => {
  if (deps.length) {
    for (let i2 = 0; i2 < deps.length; i2++) {
      deps[i2].w |= trackOpBit;
    }
  }
};
const finalizeDepMarkers = (effect2) => {
  const { deps } = effect2;
  if (deps.length) {
    let ptr = 0;
    for (let i2 = 0; i2 < deps.length; i2++) {
      const dep = deps[i2];
      if (wasTracked(dep) && !newTracked(dep)) {
        dep.delete(effect2);
      } else {
        deps[ptr++] = dep;
      }
      dep.w &= ~trackOpBit;
      dep.n &= ~trackOpBit;
    }
    deps.length = ptr;
  }
};
const targetMap = /* @__PURE__ */ new WeakMap();
let effectTrackDepth = 0;
let trackOpBit = 1;
const maxMarkerBits = 30;
let activeEffect;
const ITERATE_KEY = Symbol("");
const MAP_KEY_ITERATE_KEY = Symbol("");
class ReactiveEffect {
  constructor(fn, scheduler = null, scope) {
    this.fn = fn;
    this.scheduler = scheduler;
    this.active = true;
    this.deps = [];
    this.parent = void 0;
    recordEffectScope(this, scope);
  }
  run() {
    if (!this.active) {
      return this.fn();
    }
    let parent = activeEffect;
    let lastShouldTrack = shouldTrack;
    while (parent) {
      if (parent === this) {
        return;
      }
      parent = parent.parent;
    }
    try {
      this.parent = activeEffect;
      activeEffect = this;
      shouldTrack = true;
      trackOpBit = 1 << ++effectTrackDepth;
      if (effectTrackDepth <= maxMarkerBits) {
        initDepMarkers(this);
      } else {
        cleanupEffect(this);
      }
      return this.fn();
    } finally {
      if (effectTrackDepth <= maxMarkerBits) {
        finalizeDepMarkers(this);
      }
      trackOpBit = 1 << --effectTrackDepth;
      activeEffect = this.parent;
      shouldTrack = lastShouldTrack;
      this.parent = void 0;
      if (this.deferStop) {
        this.stop();
      }
    }
  }
  stop() {
    if (activeEffect === this) {
      this.deferStop = true;
    } else if (this.active) {
      cleanupEffect(this);
      if (this.onStop) {
        this.onStop();
      }
      this.active = false;
    }
  }
}
function cleanupEffect(effect2) {
  const { deps } = effect2;
  if (deps.length) {
    for (let i2 = 0; i2 < deps.length; i2++) {
      deps[i2].delete(effect2);
    }
    deps.length = 0;
  }
}
function effect(fn, options2) {
  if (fn.effect) {
    fn = fn.effect.fn;
  }
  const _effect = new ReactiveEffect(fn);
  if (options2) {
    extend(_effect, options2);
    if (options2.scope)
      recordEffectScope(_effect, options2.scope);
  }
  if (!options2 || !options2.lazy) {
    _effect.run();
  }
  const runner = _effect.run.bind(_effect);
  runner.effect = _effect;
  return runner;
}
function stop(runner) {
  runner.effect.stop();
}
let shouldTrack = true;
const trackStack = [];
function pauseTracking() {
  trackStack.push(shouldTrack);
  shouldTrack = false;
}
function resetTracking() {
  const last = trackStack.pop();
  shouldTrack = last === void 0 ? true : last;
}
function track(target2, type2, key) {
  if (shouldTrack && activeEffect) {
    let depsMap = targetMap.get(target2);
    if (!depsMap) {
      targetMap.set(target2, depsMap = /* @__PURE__ */ new Map());
    }
    let dep = depsMap.get(key);
    if (!dep) {
      depsMap.set(key, dep = createDep());
    }
    trackEffects(dep);
  }
}
function trackEffects(dep, debuggerEventExtraInfo) {
  let shouldTrack2 = false;
  if (effectTrackDepth <= maxMarkerBits) {
    if (!newTracked(dep)) {
      dep.n |= trackOpBit;
      shouldTrack2 = !wasTracked(dep);
    }
  } else {
    shouldTrack2 = !dep.has(activeEffect);
  }
  if (shouldTrack2) {
    dep.add(activeEffect);
    activeEffect.deps.push(dep);
  }
}
function trigger(target2, type2, key, newValue, oldValue, oldTarget) {
  const depsMap = targetMap.get(target2);
  if (!depsMap) {
    return;
  }
  let deps = [];
  if (type2 === "clear") {
    deps = [...depsMap.values()];
  } else if (key === "length" && isArray$1(target2)) {
    const newLength = Number(newValue);
    depsMap.forEach((dep, key2) => {
      if (key2 === "length" || key2 >= newLength) {
        deps.push(dep);
      }
    });
  } else {
    if (key !== void 0) {
      deps.push(depsMap.get(key));
    }
    switch (type2) {
      case "add":
        if (!isArray$1(target2)) {
          deps.push(depsMap.get(ITERATE_KEY));
          if (isMap(target2)) {
            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
          }
        } else if (isIntegerKey(key)) {
          deps.push(depsMap.get("length"));
        }
        break;
      case "delete":
        if (!isArray$1(target2)) {
          deps.push(depsMap.get(ITERATE_KEY));
          if (isMap(target2)) {
            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
          }
        }
        break;
      case "set":
        if (isMap(target2)) {
          deps.push(depsMap.get(ITERATE_KEY));
        }
        break;
    }
  }
  if (deps.length === 1) {
    if (deps[0]) {
      {
        triggerEffects(deps[0]);
      }
    }
  } else {
    const effects = [];
    for (const dep of deps) {
      if (dep) {
        effects.push(...dep);
      }
    }
    {
      triggerEffects(createDep(effects));
    }
  }
}
function triggerEffects(dep, debuggerEventExtraInfo) {
  const effects = isArray$1(dep) ? dep : [...dep];
  for (const effect2 of effects) {
    if (effect2.computed) {
      triggerEffect(effect2);
    }
  }
  for (const effect2 of effects) {
    if (!effect2.computed) {
      triggerEffect(effect2);
    }
  }
}
function triggerEffect(effect2, debuggerEventExtraInfo) {
  if (effect2 !== activeEffect || effect2.allowRecurse) {
    if (effect2.scheduler) {
      effect2.scheduler();
    } else {
      effect2.run();
    }
  }
}
function getDepFromReactive(object, key) {
  var _a2;
  return (_a2 = targetMap.get(object)) === null || _a2 === void 0 ? void 0 : _a2.get(key);
}
const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
const builtInSymbols = new Set(
  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol$1)
);
const get$1 = /* @__PURE__ */ createGetter();
const shallowGet = /* @__PURE__ */ createGetter(false, true);
const readonlyGet = /* @__PURE__ */ createGetter(true);
const shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);
const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
function createArrayInstrumentations() {
  const instrumentations = {};
  ["includes", "indexOf", "lastIndexOf"].forEach((key) => {
    instrumentations[key] = function(...args) {
      const arr = toRaw(this);
      for (let i2 = 0, l2 = this.length; i2 < l2; i2++) {
        track(arr, "get", i2 + "");
      }
      const res = arr[key](...args);
      if (res === -1 || res === false) {
        return arr[key](...args.map(toRaw));
      } else {
        return res;
      }
    };
  });
  ["push", "pop", "shift", "unshift", "splice"].forEach((key) => {
    instrumentations[key] = function(...args) {
      pauseTracking();
      const res = toRaw(this)[key].apply(this, args);
      resetTracking();
      return res;
    };
  });
  return instrumentations;
}
function hasOwnProperty$3(key) {
  const obj = toRaw(this);
  track(obj, "has", key);
  return obj.hasOwnProperty(key);
}
function createGetter(isReadonly2 = false, shallow = false) {
  return function get2(target2, key, receiver) {
    if (key === "__v_isReactive") {
      return !isReadonly2;
    } else if (key === "__v_isReadonly") {
      return isReadonly2;
    } else if (key === "__v_isShallow") {
      return shallow;
    } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target2)) {
      return target2;
    }
    const targetIsArray = isArray$1(target2);
    if (!isReadonly2) {
      if (targetIsArray && hasOwn$1(arrayInstrumentations, key)) {
        return Reflect.get(arrayInstrumentations, key, receiver);
      }
      if (key === "hasOwnProperty") {
        return hasOwnProperty$3;
      }
    }
    const res = Reflect.get(target2, key, receiver);
    if (isSymbol$1(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
      return res;
    }
    if (!isReadonly2) {
      track(target2, "get", key);
    }
    if (shallow) {
      return res;
    }
    if (isRef(res)) {
      return targetIsArray && isIntegerKey(key) ? res : res.value;
    }
    if (isObject$4(res)) {
      return isReadonly2 ? readonly(res) : reactive(res);
    }
    return res;
  };
}
const set$1 = /* @__PURE__ */ createSetter();
const shallowSet = /* @__PURE__ */ createSetter(true);
function createSetter(shallow = false) {
  return function set3(target2, key, value, receiver) {
    let oldValue = target2[key];
    if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
      return false;
    }
    if (!shallow) {
      if (!isShallow(value) && !isReadonly(value)) {
        oldValue = toRaw(oldValue);
        value = toRaw(value);
      }
      if (!isArray$1(target2) && isRef(oldValue) && !isRef(value)) {
        oldValue.value = value;
        return true;
      }
    }
    const hadKey = isArray$1(target2) && isIntegerKey(key) ? Number(key) < target2.length : hasOwn$1(target2, key);
    const result = Reflect.set(target2, key, value, receiver);
    if (target2 === toRaw(receiver)) {
      if (!hadKey) {
        trigger(target2, "add", key, value);
      } else if (hasChanged(value, oldValue)) {
        trigger(target2, "set", key, value);
      }
    }
    return result;
  };
}
function deleteProperty(target2, key) {
  const hadKey = hasOwn$1(target2, key);
  target2[key];
  const result = Reflect.deleteProperty(target2, key);
  if (result && hadKey) {
    trigger(target2, "delete", key, void 0);
  }
  return result;
}
function has$1(target2, key) {
  const result = Reflect.has(target2, key);
  if (!isSymbol$1(key) || !builtInSymbols.has(key)) {
    track(target2, "has", key);
  }
  return result;
}
function ownKeys(target2) {
  track(target2, "iterate", isArray$1(target2) ? "length" : ITERATE_KEY);
  return Reflect.ownKeys(target2);
}
const mutableHandlers = {
  get: get$1,
  set: set$1,
  deleteProperty,
  has: has$1,
  ownKeys
};
const readonlyHandlers = {
  get: readonlyGet,
  set(target2, key) {
    return true;
  },
  deleteProperty(target2, key) {
    return true;
  }
};
const shallowReactiveHandlers = /* @__PURE__ */ extend({}, mutableHandlers, {
  get: shallowGet,
  set: shallowSet
});
const shallowReadonlyHandlers = /* @__PURE__ */ extend({}, readonlyHandlers, {
  get: shallowReadonlyGet
});
const toShallow = (value) => value;
const getProto = (v) => Reflect.getPrototypeOf(v);
function get$2(target2, key, isReadonly2 = false, isShallow2 = false) {
  target2 = target2[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  const rawTarget = toRaw(target2);
  const rawKey = toRaw(key);
  if (!isReadonly2) {
    if (key !== rawKey) {
      track(rawTarget, "get", key);
    }
    track(rawTarget, "get", rawKey);
  }
  const { has: has2 } = getProto(rawTarget);
  const wrap2 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
  if (has2.call(rawTarget, key)) {
    return wrap2(target2.get(key));
  } else if (has2.call(rawTarget, rawKey)) {
    return wrap2(target2.get(rawKey));
  } else if (target2 !== rawTarget) {
    target2.get(key);
  }
}
function has$2(key, isReadonly2 = false) {
  const target2 = this[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  const rawTarget = toRaw(target2);
  const rawKey = toRaw(key);
  if (!isReadonly2) {
    if (key !== rawKey) {
      track(rawTarget, "has", key);
    }
    track(rawTarget, "has", rawKey);
  }
  return key === rawKey ? target2.has(key) : target2.has(key) || target2.has(rawKey);
}
function size$1(target2, isReadonly2 = false) {
  target2 = target2[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  !isReadonly2 && track(toRaw(target2), "iterate", ITERATE_KEY);
  return Reflect.get(target2, "size", target2);
}
function add(value) {
  value = toRaw(value);
  const target2 = toRaw(this);
  const proto2 = getProto(target2);
  const hadKey = proto2.has.call(target2, value);
  if (!hadKey) {
    target2.add(value);
    trigger(target2, "add", value, value);
  }
  return this;
}
function set(key, value) {
  value = toRaw(value);
  const target2 = toRaw(this);
  const { has: has2, get: get2 } = getProto(target2);
  let hadKey = has2.call(target2, key);
  if (!hadKey) {
    key = toRaw(key);
    hadKey = has2.call(target2, key);
  }
  const oldValue = get2.call(target2, key);
  target2.set(key, value);
  if (!hadKey) {
    trigger(target2, "add", key, value);
  } else if (hasChanged(value, oldValue)) {
    trigger(target2, "set", key, value);
  }
  return this;
}
function deleteEntry(key) {
  const target2 = toRaw(this);
  const { has: has2, get: get2 } = getProto(target2);
  let hadKey = has2.call(target2, key);
  if (!hadKey) {
    key = toRaw(key);
    hadKey = has2.call(target2, key);
  }
  get2 ? get2.call(target2, key) : void 0;
  const result = target2.delete(key);
  if (hadKey) {
    trigger(target2, "delete", key, void 0);
  }
  return result;
}
function clear() {
  const target2 = toRaw(this);
  const hadItems = target2.size !== 0;
  const result = target2.clear();
  if (hadItems) {
    trigger(target2, "clear", void 0, void 0);
  }
  return result;
}
function createForEach(isReadonly2, isShallow2) {
  return function forEach(callback, thisArg) {
    const observed = this;
    const target2 = observed[
      "__v_raw"
      /* ReactiveFlags.RAW */
    ];
    const rawTarget = toRaw(target2);
    const wrap2 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
    !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY);
    return target2.forEach((value, key) => {
      return callback.call(thisArg, wrap2(value), wrap2(key), observed);
    });
  };
}
function createIterableMethod(method, isReadonly2, isShallow2) {
  return function(...args) {
    const target2 = this[
      "__v_raw"
      /* ReactiveFlags.RAW */
    ];
    const rawTarget = toRaw(target2);
    const targetIsMap = isMap(rawTarget);
    const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
    const isKeyOnly = method === "keys" && targetIsMap;
    const innerIterator = target2[method](...args);
    const wrap2 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
    !isReadonly2 && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
    return {
      // iterator protocol
      next() {
        const { value, done } = innerIterator.next();
        return done ? { value, done } : {
          value: isPair ? [wrap2(value[0]), wrap2(value[1])] : wrap2(value),
          done
        };
      },
      // iterable protocol
      [Symbol.iterator]() {
        return this;
      }
    };
  };
}
function createReadonlyMethod(type2) {
  return function(...args) {
    return type2 === "delete" ? false : this;
  };
}
function createInstrumentations() {
  const mutableInstrumentations2 = {
    get(key) {
      return get$2(this, key);
    },
    get size() {
      return size$1(this);
    },
    has: has$2,
    add,
    set,
    delete: deleteEntry,
    clear,
    forEach: createForEach(false, false)
  };
  const shallowInstrumentations2 = {
    get(key) {
      return get$2(this, key, false, true);
    },
    get size() {
      return size$1(this);
    },
    has: has$2,
    add,
    set,
    delete: deleteEntry,
    clear,
    forEach: createForEach(false, true)
  };
  const readonlyInstrumentations2 = {
    get(key) {
      return get$2(this, key, true);
    },
    get size() {
      return size$1(this, true);
    },
    has(key) {
      return has$2.call(this, key, true);
    },
    add: createReadonlyMethod(
      "add"
      /* TriggerOpTypes.ADD */
    ),
    set: createReadonlyMethod(
      "set"
      /* TriggerOpTypes.SET */
    ),
    delete: createReadonlyMethod(
      "delete"
      /* TriggerOpTypes.DELETE */
    ),
    clear: createReadonlyMethod(
      "clear"
      /* TriggerOpTypes.CLEAR */
    ),
    forEach: createForEach(true, false)
  };
  const shallowReadonlyInstrumentations2 = {
    get(key) {
      return get$2(this, key, true, true);
    },
    get size() {
      return size$1(this, true);
    },
    has(key) {
      return has$2.call(this, key, true);
    },
    add: createReadonlyMethod(
      "add"
      /* TriggerOpTypes.ADD */
    ),
    set: createReadonlyMethod(
      "set"
      /* TriggerOpTypes.SET */
    ),
    delete: createReadonlyMethod(
      "delete"
      /* TriggerOpTypes.DELETE */
    ),
    clear: createReadonlyMethod(
      "clear"
      /* TriggerOpTypes.CLEAR */
    ),
    forEach: createForEach(true, true)
  };
  const iteratorMethods = ["keys", "values", "entries", Symbol.iterator];
  iteratorMethods.forEach((method) => {
    mutableInstrumentations2[method] = createIterableMethod(method, false, false);
    readonlyInstrumentations2[method] = createIterableMethod(method, true, false);
    shallowInstrumentations2[method] = createIterableMethod(method, false, true);
    shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);
  });
  return [
    mutableInstrumentations2,
    readonlyInstrumentations2,
    shallowInstrumentations2,
    shallowReadonlyInstrumentations2
  ];
}
const [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();
function createInstrumentationGetter(isReadonly2, shallow) {
  const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;
  return (target2, key, receiver) => {
    if (key === "__v_isReactive") {
      return !isReadonly2;
    } else if (key === "__v_isReadonly") {
      return isReadonly2;
    } else if (key === "__v_raw") {
      return target2;
    }
    return Reflect.get(hasOwn$1(instrumentations, key) && key in target2 ? instrumentations : target2, key, receiver);
  };
}
const mutableCollectionHandlers = {
  get: /* @__PURE__ */ createInstrumentationGetter(false, false)
};
const shallowCollectionHandlers = {
  get: /* @__PURE__ */ createInstrumentationGetter(false, true)
};
const readonlyCollectionHandlers = {
  get: /* @__PURE__ */ createInstrumentationGetter(true, false)
};
const shallowReadonlyCollectionHandlers = {
  get: /* @__PURE__ */ createInstrumentationGetter(true, true)
};
const reactiveMap = /* @__PURE__ */ new WeakMap();
const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
const readonlyMap = /* @__PURE__ */ new WeakMap();
const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
function targetTypeMap(rawType) {
  switch (rawType) {
    case "Object":
    case "Array":
      return 1;
    case "Map":
    case "Set":
    case "WeakMap":
    case "WeakSet":
      return 2;
    default:
      return 0;
  }
}
function getTargetType(value) {
  return value[
    "__v_skip"
    /* ReactiveFlags.SKIP */
  ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
}
function reactive(target2) {
  if (isReadonly(target2)) {
    return target2;
  }
  return createReactiveObject(target2, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
}
function shallowReactive(target2) {
  return createReactiveObject(target2, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);
}
function readonly(target2) {
  return createReactiveObject(target2, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
}
function shallowReadonly(target2) {
  return createReactiveObject(target2, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);
}
function createReactiveObject(target2, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
  if (!isObject$4(target2)) {
    return target2;
  }
  if (target2[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ] && !(isReadonly2 && target2[
    "__v_isReactive"
    /* ReactiveFlags.IS_REACTIVE */
  ])) {
    return target2;
  }
  const existingProxy = proxyMap.get(target2);
  if (existingProxy) {
    return existingProxy;
  }
  const targetType = getTargetType(target2);
  if (targetType === 0) {
    return target2;
  }
  const proxy = new Proxy(target2, targetType === 2 ? collectionHandlers : baseHandlers);
  proxyMap.set(target2, proxy);
  return proxy;
}
function isReactive(value) {
  if (isReadonly(value)) {
    return isReactive(value[
      "__v_raw"
      /* ReactiveFlags.RAW */
    ]);
  }
  return !!(value && value[
    "__v_isReactive"
    /* ReactiveFlags.IS_REACTIVE */
  ]);
}
function isReadonly(value) {
  return !!(value && value[
    "__v_isReadonly"
    /* ReactiveFlags.IS_READONLY */
  ]);
}
function isShallow(value) {
  return !!(value && value[
    "__v_isShallow"
    /* ReactiveFlags.IS_SHALLOW */
  ]);
}
function isProxy(value) {
  return isReactive(value) || isReadonly(value);
}
function toRaw(observed) {
  const raw = observed && observed[
    "__v_raw"
    /* ReactiveFlags.RAW */
  ];
  return raw ? toRaw(raw) : observed;
}
function markRaw(value) {
  def(value, "__v_skip", true);
  return value;
}
const toReactive = (value) => isObject$4(value) ? reactive(value) : value;
const toReadonly = (value) => isObject$4(value) ? readonly(value) : value;
function trackRefValue(ref2) {
  if (shouldTrack && activeEffect) {
    ref2 = toRaw(ref2);
    {
      trackEffects(ref2.dep || (ref2.dep = createDep()));
    }
  }
}
function triggerRefValue(ref2, newVal) {
  ref2 = toRaw(ref2);
  const dep = ref2.dep;
  if (dep) {
    {
      triggerEffects(dep);
    }
  }
}
function isRef(r2) {
  return !!(r2 && r2.__v_isRef === true);
}
function ref(value) {
  return createRef(value, false);
}
function shallowRef(value) {
  return createRef(value, true);
}
function createRef(rawValue, shallow) {
  if (isRef(rawValue)) {
    return rawValue;
  }
  return new RefImpl(rawValue, shallow);
}
class RefImpl {
  constructor(value, __v_isShallow) {
    this.__v_isShallow = __v_isShallow;
    this.dep = void 0;
    this.__v_isRef = true;
    this._rawValue = __v_isShallow ? value : toRaw(value);
    this._value = __v_isShallow ? value : toReactive(value);
  }
  get value() {
    trackRefValue(this);
    return this._value;
  }
  set value(newVal) {
    const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
    newVal = useDirectValue ? newVal : toRaw(newVal);
    if (hasChanged(newVal, this._rawValue)) {
      this._rawValue = newVal;
      this._value = useDirectValue ? newVal : toReactive(newVal);
      triggerRefValue(this);
    }
  }
}
function triggerRef(ref2) {
  triggerRefValue(ref2);
}
function unref(ref2) {
  return isRef(ref2) ? ref2.value : ref2;
}
const shallowUnwrapHandlers = {
  get: (target2, key, receiver) => unref(Reflect.get(target2, key, receiver)),
  set: (target2, key, value, receiver) => {
    const oldValue = target2[key];
    if (isRef(oldValue) && !isRef(value)) {
      oldValue.value = value;
      return true;
    } else {
      return Reflect.set(target2, key, value, receiver);
    }
  }
};
function proxyRefs(objectWithRefs) {
  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
}
class CustomRefImpl {
  constructor(factory) {
    this.dep = void 0;
    this.__v_isRef = true;
    const { get: get2, set: set3 } = factory(() => trackRefValue(this), () => triggerRefValue(this));
    this._get = get2;
    this._set = set3;
  }
  get value() {
    return this._get();
  }
  set value(newVal) {
    this._set(newVal);
  }
}
function customRef(factory) {
  return new CustomRefImpl(factory);
}
function toRefs(object) {
  const ret = isArray$1(object) ? new Array(object.length) : {};
  for (const key in object) {
    ret[key] = toRef(object, key);
  }
  return ret;
}
class ObjectRefImpl {
  constructor(_object, _key, _defaultValue) {
    this._object = _object;
    this._key = _key;
    this._defaultValue = _defaultValue;
    this.__v_isRef = true;
  }
  get value() {
    const val = this._object[this._key];
    return val === void 0 ? this._defaultValue : val;
  }
  set value(newVal) {
    this._object[this._key] = newVal;
  }
  get dep() {
    return getDepFromReactive(toRaw(this._object), this._key);
  }
}
function toRef(object, key, defaultValue) {
  const val = object[key];
  return isRef(val) ? val : new ObjectRefImpl(object, key, defaultValue);
}
var _a$1;
class ComputedRefImpl {
  constructor(getter, _setter, isReadonly2, isSSR) {
    this._setter = _setter;
    this.dep = void 0;
    this.__v_isRef = true;
    this[_a$1] = false;
    this._dirty = true;
    this.effect = new ReactiveEffect(getter, () => {
      if (!this._dirty) {
        this._dirty = true;
        triggerRefValue(this);
      }
    });
    this.effect.computed = this;
    this.effect.active = this._cacheable = !isSSR;
    this[
      "__v_isReadonly"
      /* ReactiveFlags.IS_READONLY */
    ] = isReadonly2;
  }
  get value() {
    const self2 = toRaw(this);
    trackRefValue(self2);
    if (self2._dirty || !self2._cacheable) {
      self2._dirty = false;
      self2._value = self2.effect.run();
    }
    return self2._value;
  }
  set value(newValue) {
    this._setter(newValue);
  }
}
_a$1 = "__v_isReadonly";
function computed$1(getterOrOptions, debugOptions, isSSR = false) {
  let getter;
  let setter;
  const onlyGetter = isFunction$3(getterOrOptions);
  if (onlyGetter) {
    getter = getterOrOptions;
    setter = NOOP;
  } else {
    getter = getterOrOptions.get;
    setter = getterOrOptions.set;
  }
  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
  return cRef;
}
function warn$1(msg, ...args) {
  return;
}
function assertNumber(val, type2) {
  return;
}
function callWithErrorHandling(fn, instance, type2, args) {
  let res;
  try {
    res = args ? fn(...args) : fn();
  } catch (err) {
    handleError(err, instance, type2);
  }
  return res;
}
function callWithAsyncErrorHandling(fn, instance, type2, args) {
  if (isFunction$3(fn)) {
    const res = callWithErrorHandling(fn, instance, type2, args);
    if (res && isPromise(res)) {
      res.catch((err) => {
        handleError(err, instance, type2);
      });
    }
    return res;
  }
  const values = [];
  for (let i2 = 0; i2 < fn.length; i2++) {
    values.push(callWithAsyncErrorHandling(fn[i2], instance, type2, args));
  }
  return values;
}
function handleError(err, instance, type2, throwInDev = true) {
  const contextVNode = instance ? instance.vnode : null;
  if (instance) {
    let cur = instance.parent;
    const exposedInstance = instance.proxy;
    const errorInfo = type2;
    while (cur) {
      const errorCapturedHooks = cur.ec;
      if (errorCapturedHooks) {
        for (let i2 = 0; i2 < errorCapturedHooks.length; i2++) {
          if (errorCapturedHooks[i2](err, exposedInstance, errorInfo) === false) {
            return;
          }
        }
      }
      cur = cur.parent;
    }
    const appErrorHandler = instance.appContext.config.errorHandler;
    if (appErrorHandler) {
      callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]);
      return;
    }
  }
  logError(err, type2, contextVNode, throwInDev);
}
function logError(err, type2, contextVNode, throwInDev = true) {
  {
    console.error(err);
  }
}
let isFlushing = false;
let isFlushPending = false;
const queue = [];
let flushIndex = 0;
const pendingPostFlushCbs = [];
let activePostFlushCbs = null;
let postFlushIndex = 0;
const resolvedPromise = /* @__PURE__ */ Promise.resolve();
let currentFlushPromise = null;
function nextTick(fn) {
  const p2 = currentFlushPromise || resolvedPromise;
  return fn ? p2.then(this ? fn.bind(this) : fn) : p2;
}
function findInsertionIndex(id2) {
  let start = flushIndex + 1;
  let end = queue.length;
  while (start < end) {
    const middle = start + end >>> 1;
    const middleJobId = getId$1(queue[middle]);
    middleJobId < id2 ? start = middle + 1 : end = middle;
  }
  return start;
}
function queueJob(job) {
  if (!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {
    if (job.id == null) {
      queue.push(job);
    } else {
      queue.splice(findInsertionIndex(job.id), 0, job);
    }
    queueFlush();
  }
}
function queueFlush() {
  if (!isFlushing && !isFlushPending) {
    isFlushPending = true;
    currentFlushPromise = resolvedPromise.then(flushJobs);
  }
}
function invalidateJob(job) {
  const i2 = queue.indexOf(job);
  if (i2 > flushIndex) {
    queue.splice(i2, 1);
  }
}
function queuePostFlushCb(cb) {
  if (!isArray$1(cb)) {
    if (!activePostFlushCbs || !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {
      pendingPostFlushCbs.push(cb);
    }
  } else {
    pendingPostFlushCbs.push(...cb);
  }
  queueFlush();
}
function flushPreFlushCbs(seen, i2 = isFlushing ? flushIndex + 1 : 0) {
  for (; i2 < queue.length; i2++) {
    const cb = queue[i2];
    if (cb && cb.pre) {
      queue.splice(i2, 1);
      i2--;
      cb();
    }
  }
}
function flushPostFlushCbs(seen) {
  if (pendingPostFlushCbs.length) {
    const deduped = [...new Set(pendingPostFlushCbs)];
    pendingPostFlushCbs.length = 0;
    if (activePostFlushCbs) {
      activePostFlushCbs.push(...deduped);
      return;
    }
    activePostFlushCbs = deduped;
    activePostFlushCbs.sort((a2, b2) => getId$1(a2) - getId$1(b2));
    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
      activePostFlushCbs[postFlushIndex]();
    }
    activePostFlushCbs = null;
    postFlushIndex = 0;
  }
}
const getId$1 = (job) => job.id == null ? Infinity : job.id;
const comparator = (a2, b2) => {
  const diff = getId$1(a2) - getId$1(b2);
  if (diff === 0) {
    if (a2.pre && !b2.pre)
      return -1;
    if (b2.pre && !a2.pre)
      return 1;
  }
  return diff;
};
function flushJobs(seen) {
  isFlushPending = false;
  isFlushing = true;
  queue.sort(comparator);
  const check2 = NOOP;
  try {
    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
      const job = queue[flushIndex];
      if (job && job.active !== false) {
        if (false)
          ;
        callWithErrorHandling(
          job,
          null,
          14
          /* ErrorCodes.SCHEDULER */
        );
      }
    }
  } finally {
    flushIndex = 0;
    queue.length = 0;
    flushPostFlushCbs();
    isFlushing = false;
    currentFlushPromise = null;
    if (queue.length || pendingPostFlushCbs.length) {
      flushJobs();
    }
  }
}
let devtools$1;
let buffer = [];
function setDevtoolsHook(hook, target2) {
  var _a2, _b2;
  devtools$1 = hook;
  if (devtools$1) {
    devtools$1.enabled = true;
    buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));
    buffer = [];
  } else if (
    // handle late devtools injection - only do this if we are in an actual
    // browser environment to avoid the timer handle stalling test runner exit
    // (#4815)
    typeof window !== "undefined" && // some envs mock window but not fully
    window.HTMLElement && // also exclude jsdom
    !((_b2 = (_a2 = window.navigator) === null || _a2 === void 0 ? void 0 : _a2.userAgent) === null || _b2 === void 0 ? void 0 : _b2.includes("jsdom"))
  ) {
    const replay = target2.__VUE_DEVTOOLS_HOOK_REPLAY__ = target2.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];
    replay.push((newHook) => {
      setDevtoolsHook(newHook, target2);
    });
    setTimeout(() => {
      if (!devtools$1) {
        target2.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
        buffer = [];
      }
    }, 3e3);
  } else {
    buffer = [];
  }
}
function emit(instance, event, ...rawArgs) {
  if (instance.isUnmounted)
    return;
  const props = instance.vnode.props || EMPTY_OBJ;
  let args = rawArgs;
  const isModelListener2 = event.startsWith("update:");
  const modelArg = isModelListener2 && event.slice(7);
  if (modelArg && modelArg in props) {
    const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`;
    const { number: number2, trim: trim2 } = props[modifiersKey] || EMPTY_OBJ;
    if (trim2) {
      args = rawArgs.map((a2) => isString$4(a2) ? a2.trim() : a2);
    }
    if (number2) {
      args = rawArgs.map(looseToNumber);
    }
  }
  let handlerName;
  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
  props[handlerName = toHandlerKey(camelize(event))];
  if (!handler && isModelListener2) {
    handler = props[handlerName = toHandlerKey(hyphenate(event))];
  }
  if (handler) {
    callWithAsyncErrorHandling(handler, instance, 6, args);
  }
  const onceHandler = props[handlerName + `Once`];
  if (onceHandler) {
    if (!instance.emitted) {
      instance.emitted = {};
    } else if (instance.emitted[handlerName]) {
      return;
    }
    instance.emitted[handlerName] = true;
    callWithAsyncErrorHandling(onceHandler, instance, 6, args);
  }
}
function normalizeEmitsOptions(comp2, appContext, asMixin = false) {
  const cache2 = appContext.emitsCache;
  const cached = cache2.get(comp2);
  if (cached !== void 0) {
    return cached;
  }
  const raw = comp2.emits;
  let normalized = {};
  let hasExtends = false;
  if (!isFunction$3(comp2)) {
    const extendEmits = (raw2) => {
      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
      if (normalizedFromExtend) {
        hasExtends = true;
        extend(normalized, normalizedFromExtend);
      }
    };
    if (!asMixin && appContext.mixins.length) {
      appContext.mixins.forEach(extendEmits);
    }
    if (comp2.extends) {
      extendEmits(comp2.extends);
    }
    if (comp2.mixins) {
      comp2.mixins.forEach(extendEmits);
    }
  }
  if (!raw && !hasExtends) {
    if (isObject$4(comp2)) {
      cache2.set(comp2, null);
    }
    return null;
  }
  if (isArray$1(raw)) {
    raw.forEach((key) => normalized[key] = null);
  } else {
    extend(normalized, raw);
  }
  if (isObject$4(comp2)) {
    cache2.set(comp2, normalized);
  }
  return normalized;
}
function isEmitListener(options2, key) {
  if (!options2 || !isOn(key)) {
    return false;
  }
  key = key.slice(2).replace(/Once$/, "");
  return hasOwn$1(options2, key[0].toLowerCase() + key.slice(1)) || hasOwn$1(options2, hyphenate(key)) || hasOwn$1(options2, key);
}
let currentRenderingInstance = null;
let currentScopeId = null;
function setCurrentRenderingInstance(instance) {
  const prev2 = currentRenderingInstance;
  currentRenderingInstance = instance;
  currentScopeId = instance && instance.type.__scopeId || null;
  return prev2;
}
function pushScopeId(id2) {
  currentScopeId = id2;
}
function popScopeId() {
  currentScopeId = null;
}
const withScopeId = (_id) => withCtx;
function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {
  if (!ctx)
    return fn;
  if (fn._n) {
    return fn;
  }
  const renderFnWithContext = (...args) => {
    if (renderFnWithContext._d) {
      setBlockTracking(-1);
    }
    const prevInstance = setCurrentRenderingInstance(ctx);
    let res;
    try {
      res = fn(...args);
    } finally {
      setCurrentRenderingInstance(prevInstance);
      if (renderFnWithContext._d) {
        setBlockTracking(1);
      }
    }
    return res;
  };
  renderFnWithContext._n = true;
  renderFnWithContext._c = true;
  renderFnWithContext._d = true;
  return renderFnWithContext;
}
function markAttrsAccessed() {
}
function renderComponentRoot(instance) {
  const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit: emit2, render: render2, renderCache, data, setupState, ctx, inheritAttrs } = instance;
  let result;
  let fallthroughAttrs;
  const prev2 = setCurrentRenderingInstance(instance);
  try {
    if (vnode.shapeFlag & 4) {
      const proxyToUse = withProxy || proxy;
      result = normalizeVNode(render2.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));
      fallthroughAttrs = attrs;
    } else {
      const render3 = Component;
      if (false)
        ;
      result = normalizeVNode(render3.length > 1 ? render3(props, false ? {
        get attrs() {
          markAttrsAccessed();
          return attrs;
        },
        slots,
        emit: emit2
      } : { attrs, slots, emit: emit2 }) : render3(
        props,
        null
        /* we know it doesn't need it */
      ));
      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
    }
  } catch (err) {
    blockStack.length = 0;
    handleError(
      err,
      instance,
      1
      /* ErrorCodes.RENDER_FUNCTION */
    );
    result = createVNode(Comment);
  }
  let root2 = result;
  if (fallthroughAttrs && inheritAttrs !== false) {
    const keys = Object.keys(fallthroughAttrs);
    const { shapeFlag } = root2;
    if (keys.length) {
      if (shapeFlag & (1 | 6)) {
        if (propsOptions && keys.some(isModelListener)) {
          fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);
        }
        root2 = cloneVNode(root2, fallthroughAttrs);
      }
    }
  }
  if (vnode.dirs) {
    root2 = cloneVNode(root2);
    root2.dirs = root2.dirs ? root2.dirs.concat(vnode.dirs) : vnode.dirs;
  }
  if (vnode.transition) {
    root2.transition = vnode.transition;
  }
  {
    result = root2;
  }
  setCurrentRenderingInstance(prev2);
  return result;
}
function filterSingleRoot(children) {
  let singleRoot;
  for (let i2 = 0; i2 < children.length; i2++) {
    const child = children[i2];
    if (isVNode(child)) {
      if (child.type !== Comment || child.children === "v-if") {
        if (singleRoot) {
          return;
        } else {
          singleRoot = child;
        }
      }
    } else {
      return;
    }
  }
  return singleRoot;
}
const getFunctionalFallthrough = (attrs) => {
  let res;
  for (const key in attrs) {
    if (key === "class" || key === "style" || isOn(key)) {
      (res || (res = {}))[key] = attrs[key];
    }
  }
  return res;
};
const filterModelListeners = (attrs, props) => {
  const res = {};
  for (const key in attrs) {
    if (!isModelListener(key) || !(key.slice(9) in props)) {
      res[key] = attrs[key];
    }
  }
  return res;
};
function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
  const { props: prevProps, children: prevChildren, component } = prevVNode;
  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
  const emits = component.emitsOptions;
  if (nextVNode.dirs || nextVNode.transition) {
    return true;
  }
  if (optimized && patchFlag >= 0) {
    if (patchFlag & 1024) {
      return true;
    }
    if (patchFlag & 16) {
      if (!prevProps) {
        return !!nextProps;
      }
      return hasPropsChanged(prevProps, nextProps, emits);
    } else if (patchFlag & 8) {
      const dynamicProps = nextVNode.dynamicProps;
      for (let i2 = 0; i2 < dynamicProps.length; i2++) {
        const key = dynamicProps[i2];
        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
          return true;
        }
      }
    }
  } else {
    if (prevChildren || nextChildren) {
      if (!nextChildren || !nextChildren.$stable) {
        return true;
      }
    }
    if (prevProps === nextProps) {
      return false;
    }
    if (!prevProps) {
      return !!nextProps;
    }
    if (!nextProps) {
      return true;
    }
    return hasPropsChanged(prevProps, nextProps, emits);
  }
  return false;
}
function hasPropsChanged(prevProps, nextProps, emitsOptions) {
  const nextKeys = Object.keys(nextProps);
  if (nextKeys.length !== Object.keys(prevProps).length) {
    return true;
  }
  for (let i2 = 0; i2 < nextKeys.length; i2++) {
    const key = nextKeys[i2];
    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
      return true;
    }
  }
  return false;
}
function updateHOCHostEl({ vnode, parent }, el2) {
  while (parent && parent.subTree === vnode) {
    (vnode = parent.vnode).el = el2;
    parent = parent.parent;
  }
}
const isSuspense = (type2) => type2.__isSuspense;
const SuspenseImpl = {
  name: "Suspense",
  // In order to make Suspense tree-shakable, we need to avoid importing it
  // directly in the renderer. The renderer checks for the __isSuspense flag
  // on a vnode's type and calls the `process` method, passing in renderer
  // internals.
  __isSuspense: true,
  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {
    if (n1 == null) {
      mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);
    } else {
      patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);
    }
  },
  hydrate: hydrateSuspense,
  create: createSuspenseBoundary,
  normalize: normalizeSuspenseChildren
};
const Suspense = SuspenseImpl;
function triggerEvent(vnode, name2) {
  const eventListener = vnode.props && vnode.props[name2];
  if (isFunction$3(eventListener)) {
    eventListener();
  }
}
function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {
  const { p: patch, o: { createElement } } = rendererInternals;
  const hiddenContainer = createElement("div");
  const suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals);
  patch(null, suspense.pendingBranch = vnode.ssContent, hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);
  if (suspense.deps > 0) {
    triggerEvent(vnode, "onPending");
    triggerEvent(vnode, "onFallback");
    patch(
      null,
      vnode.ssFallback,
      container,
      anchor,
      parentComponent,
      null,
      // fallback tree will not have suspense context
      isSVG,
      slotScopeIds
    );
    setActiveBranch(suspense, vnode.ssFallback);
  } else {
    suspense.resolve();
  }
}
function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {
  const suspense = n2.suspense = n1.suspense;
  suspense.vnode = n2;
  n2.el = n1.el;
  const newBranch = n2.ssContent;
  const newFallback = n2.ssFallback;
  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;
  if (pendingBranch) {
    suspense.pendingBranch = newBranch;
    if (isSameVNodeType(newBranch, pendingBranch)) {
      patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
      if (suspense.deps <= 0) {
        suspense.resolve();
      } else if (isInFallback) {
        patch(
          activeBranch,
          newFallback,
          container,
          anchor,
          parentComponent,
          null,
          // fallback tree will not have suspense context
          isSVG,
          slotScopeIds,
          optimized
        );
        setActiveBranch(suspense, newFallback);
      }
    } else {
      suspense.pendingId++;
      if (isHydrating) {
        suspense.isHydrating = false;
        suspense.activeBranch = pendingBranch;
      } else {
        unmount(pendingBranch, parentComponent, suspense);
      }
      suspense.deps = 0;
      suspense.effects.length = 0;
      suspense.hiddenContainer = createElement("div");
      if (isInFallback) {
        patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
        if (suspense.deps <= 0) {
          suspense.resolve();
        } else {
          patch(
            activeBranch,
            newFallback,
            container,
            anchor,
            parentComponent,
            null,
            // fallback tree will not have suspense context
            isSVG,
            slotScopeIds,
            optimized
          );
          setActiveBranch(suspense, newFallback);
        }
      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
        patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);
        suspense.resolve(true);
      } else {
        patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
        if (suspense.deps <= 0) {
          suspense.resolve();
        }
      }
    }
  } else {
    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
      patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);
      setActiveBranch(suspense, newBranch);
    } else {
      triggerEvent(n2, "onPending");
      suspense.pendingBranch = newBranch;
      suspense.pendingId++;
      patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
      if (suspense.deps <= 0) {
        suspense.resolve();
      } else {
        const { timeout, pendingId } = suspense;
        if (timeout > 0) {
          setTimeout(() => {
            if (suspense.pendingId === pendingId) {
              suspense.fallback(newFallback);
            }
          }, timeout);
        } else if (timeout === 0) {
          suspense.fallback(newFallback);
        }
      }
    }
  }
}
function createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {
  const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove: remove2 } } = rendererInternals;
  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;
  const suspense = {
    vnode,
    parent,
    parentComponent,
    isSVG,
    container,
    hiddenContainer,
    anchor,
    deps: 0,
    pendingId: 0,
    timeout: typeof timeout === "number" ? timeout : -1,
    activeBranch: null,
    pendingBranch: null,
    isInFallback: true,
    isHydrating,
    isUnmounted: false,
    effects: [],
    resolve(resume = false) {
      const { vnode: vnode2, activeBranch, pendingBranch, pendingId, effects, parentComponent: parentComponent2, container: container2 } = suspense;
      if (suspense.isHydrating) {
        suspense.isHydrating = false;
      } else if (!resume) {
        const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in";
        if (delayEnter) {
          activeBranch.transition.afterLeave = () => {
            if (pendingId === suspense.pendingId) {
              move(
                pendingBranch,
                container2,
                anchor2,
                0
                /* MoveType.ENTER */
              );
            }
          };
        }
        let { anchor: anchor2 } = suspense;
        if (activeBranch) {
          anchor2 = next(activeBranch);
          unmount(activeBranch, parentComponent2, suspense, true);
        }
        if (!delayEnter) {
          move(
            pendingBranch,
            container2,
            anchor2,
            0
            /* MoveType.ENTER */
          );
        }
      }
      setActiveBranch(suspense, pendingBranch);
      suspense.pendingBranch = null;
      suspense.isInFallback = false;
      let parent2 = suspense.parent;
      let hasUnresolvedAncestor = false;
      while (parent2) {
        if (parent2.pendingBranch) {
          parent2.effects.push(...effects);
          hasUnresolvedAncestor = true;
          break;
        }
        parent2 = parent2.parent;
      }
      if (!hasUnresolvedAncestor) {
        queuePostFlushCb(effects);
      }
      suspense.effects = [];
      triggerEvent(vnode2, "onResolve");
    },
    fallback(fallbackVNode) {
      if (!suspense.pendingBranch) {
        return;
      }
      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;
      triggerEvent(vnode2, "onFallback");
      const anchor2 = next(activeBranch);
      const mountFallback = () => {
        if (!suspense.isInFallback) {
          return;
        }
        patch(
          null,
          fallbackVNode,
          container2,
          anchor2,
          parentComponent2,
          null,
          // fallback tree will not have suspense context
          isSVG2,
          slotScopeIds,
          optimized
        );
        setActiveBranch(suspense, fallbackVNode);
      };
      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in";
      if (delayEnter) {
        activeBranch.transition.afterLeave = mountFallback;
      }
      suspense.isInFallback = true;
      unmount(
        activeBranch,
        parentComponent2,
        null,
        // no suspense so unmount hooks fire now
        true
        // shouldRemove
      );
      if (!delayEnter) {
        mountFallback();
      }
    },
    move(container2, anchor2, type2) {
      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type2);
      suspense.container = container2;
    },
    next() {
      return suspense.activeBranch && next(suspense.activeBranch);
    },
    registerDep(instance, setupRenderEffect) {
      const isInPendingSuspense = !!suspense.pendingBranch;
      if (isInPendingSuspense) {
        suspense.deps++;
      }
      const hydratedEl = instance.vnode.el;
      instance.asyncDep.catch((err) => {
        handleError(
          err,
          instance,
          0
          /* ErrorCodes.SETUP_FUNCTION */
        );
      }).then((asyncSetupResult) => {
        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {
          return;
        }
        instance.asyncResolved = true;
        const { vnode: vnode2 } = instance;
        handleSetupResult(instance, asyncSetupResult, false);
        if (hydratedEl) {
          vnode2.el = hydratedEl;
        }
        const placeholder = !hydratedEl && instance.subTree.el;
        setupRenderEffect(
          instance,
          vnode2,
          // component may have been moved before resolve.
          // if this is not a hydration, instance.subTree will be the comment
          // placeholder.
          parentNode(hydratedEl || instance.subTree.el),
          // anchor will not be used if this is hydration, so only need to
          // consider the comment placeholder case.
          hydratedEl ? null : next(instance.subTree),
          suspense,
          isSVG,
          optimized
        );
        if (placeholder) {
          remove2(placeholder);
        }
        updateHOCHostEl(instance, vnode2.el);
        if (isInPendingSuspense && --suspense.deps === 0) {
          suspense.resolve();
        }
      });
    },
    unmount(parentSuspense, doRemove) {
      suspense.isUnmounted = true;
      if (suspense.activeBranch) {
        unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);
      }
      if (suspense.pendingBranch) {
        unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);
      }
    }
  };
  return suspense;
}
function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {
  const suspense = vnode.suspense = createSuspenseBoundary(
    vnode,
    parentSuspense,
    parentComponent,
    node.parentNode,
    document.createElement("div"),
    null,
    isSVG,
    slotScopeIds,
    optimized,
    rendererInternals,
    true
    /* hydrating */
  );
  const result = hydrateNode(node, suspense.pendingBranch = vnode.ssContent, parentComponent, suspense, slotScopeIds, optimized);
  if (suspense.deps === 0) {
    suspense.resolve();
  }
  return result;
}
function normalizeSuspenseChildren(vnode) {
  const { shapeFlag, children } = vnode;
  const isSlotChildren = shapeFlag & 32;
  vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);
  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);
}
function normalizeSuspenseSlot(s2) {
  let block3;
  if (isFunction$3(s2)) {
    const trackBlock = isBlockTreeEnabled && s2._c;
    if (trackBlock) {
      s2._d = false;
      openBlock();
    }
    s2 = s2();
    if (trackBlock) {
      s2._d = true;
      block3 = currentBlock;
      closeBlock();
    }
  }
  if (isArray$1(s2)) {
    const singleChild = filterSingleRoot(s2);
    s2 = singleChild;
  }
  s2 = normalizeVNode(s2);
  if (block3 && !s2.dynamicChildren) {
    s2.dynamicChildren = block3.filter((c2) => c2 !== s2);
  }
  return s2;
}
function queueEffectWithSuspense(fn, suspense) {
  if (suspense && suspense.pendingBranch) {
    if (isArray$1(fn)) {
      suspense.effects.push(...fn);
    } else {
      suspense.effects.push(fn);
    }
  } else {
    queuePostFlushCb(fn);
  }
}
function setActiveBranch(suspense, branch) {
  suspense.activeBranch = branch;
  const { vnode, parentComponent } = suspense;
  const el2 = vnode.el = branch.el;
  if (parentComponent && parentComponent.subTree === vnode) {
    parentComponent.vnode.el = el2;
    updateHOCHostEl(parentComponent, el2);
  }
}
function provide(key, value) {
  if (!currentInstance)
    ;
  else {
    let provides = currentInstance.provides;
    const parentProvides = currentInstance.parent && currentInstance.parent.provides;
    if (parentProvides === provides) {
      provides = currentInstance.provides = Object.create(parentProvides);
    }
    provides[key] = value;
  }
}
function inject(key, defaultValue, treatDefaultAsFactory = false) {
  const instance = currentInstance || currentRenderingInstance;
  if (instance) {
    const provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides;
    if (provides && key in provides) {
      return provides[key];
    } else if (arguments.length > 1) {
      return treatDefaultAsFactory && isFunction$3(defaultValue) ? defaultValue.call(instance.proxy) : defaultValue;
    } else
      ;
  }
}
function watchEffect(effect2, options2) {
  return doWatch(effect2, null, options2);
}
function watchPostEffect(effect2, options2) {
  return doWatch(effect2, null, { flush: "post" });
}
function watchSyncEffect(effect2, options2) {
  return doWatch(effect2, null, { flush: "sync" });
}
const INITIAL_WATCHER_VALUE = {};
function watch(source, cb, options2) {
  return doWatch(source, cb, options2);
}
function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {
  const instance = getCurrentScope() === (currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance.scope) ? currentInstance : null;
  let getter;
  let forceTrigger = false;
  let isMultiSource = false;
  if (isRef(source)) {
    getter = () => source.value;
    forceTrigger = isShallow(source);
  } else if (isReactive(source)) {
    getter = () => source;
    deep = true;
  } else if (isArray$1(source)) {
    isMultiSource = true;
    forceTrigger = source.some((s2) => isReactive(s2) || isShallow(s2));
    getter = () => source.map((s2) => {
      if (isRef(s2)) {
        return s2.value;
      } else if (isReactive(s2)) {
        return traverse(s2);
      } else if (isFunction$3(s2)) {
        return callWithErrorHandling(
          s2,
          instance,
          2
          /* ErrorCodes.WATCH_GETTER */
        );
      } else
        ;
    });
  } else if (isFunction$3(source)) {
    if (cb) {
      getter = () => callWithErrorHandling(
        source,
        instance,
        2
        /* ErrorCodes.WATCH_GETTER */
      );
    } else {
      getter = () => {
        if (instance && instance.isUnmounted) {
          return;
        }
        if (cleanup) {
          cleanup();
        }
        return callWithAsyncErrorHandling(source, instance, 3, [onCleanup]);
      };
    }
  } else {
    getter = NOOP;
  }
  if (cb && deep) {
    const baseGetter = getter;
    getter = () => traverse(baseGetter());
  }
  let cleanup;
  let onCleanup = (fn) => {
    cleanup = effect2.onStop = () => {
      callWithErrorHandling(
        fn,
        instance,
        4
        /* ErrorCodes.WATCH_CLEANUP */
      );
    };
  };
  let ssrCleanup;
  if (isInSSRComponentSetup) {
    onCleanup = NOOP;
    if (!cb) {
      getter();
    } else if (immediate) {
      callWithAsyncErrorHandling(cb, instance, 3, [
        getter(),
        isMultiSource ? [] : void 0,
        onCleanup
      ]);
    }
    if (flush === "sync") {
      const ctx = useSSRContext();
      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
    } else {
      return NOOP;
    }
  }
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
  const job = () => {
    if (!effect2.active) {
      return;
    }
    if (cb) {
      const newValue = effect2.run();
      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i2) => hasChanged(v, oldValue[i2])) : hasChanged(newValue, oldValue)) || false) {
        if (cleanup) {
          cleanup();
        }
        callWithAsyncErrorHandling(cb, instance, 3, [
          newValue,
          // pass undefined as the old value when it's changed for the first time
          oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
          onCleanup
        ]);
        oldValue = newValue;
      }
    } else {
      effect2.run();
    }
  };
  job.allowRecurse = !!cb;
  let scheduler;
  if (flush === "sync") {
    scheduler = job;
  } else if (flush === "post") {
    scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);
  } else {
    job.pre = true;
    if (instance)
      job.id = instance.uid;
    scheduler = () => queueJob(job);
  }
  const effect2 = new ReactiveEffect(getter, scheduler);
  if (cb) {
    if (immediate) {
      job();
    } else {
      oldValue = effect2.run();
    }
  } else if (flush === "post") {
    queuePostRenderEffect(effect2.run.bind(effect2), instance && instance.suspense);
  } else {
    effect2.run();
  }
  const unwatch = () => {
    effect2.stop();
    if (instance && instance.scope) {
      remove(instance.scope.effects, effect2);
    }
  };
  if (ssrCleanup)
    ssrCleanup.push(unwatch);
  return unwatch;
}
function instanceWatch(source, value, options2) {
  const publicThis = this.proxy;
  const getter = isString$4(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
  let cb;
  if (isFunction$3(value)) {
    cb = value;
  } else {
    cb = value.handler;
    options2 = value;
  }
  const cur = currentInstance;
  setCurrentInstance(this);
  const res = doWatch(getter, cb.bind(publicThis), options2);
  if (cur) {
    setCurrentInstance(cur);
  } else {
    unsetCurrentInstance();
  }
  return res;
}
function createPathGetter(ctx, path) {
  const segments = path.split(".");
  return () => {
    let cur = ctx;
    for (let i2 = 0; i2 < segments.length && cur; i2++) {
      cur = cur[segments[i2]];
    }
    return cur;
  };
}
function traverse(value, seen) {
  if (!isObject$4(value) || value[
    "__v_skip"
    /* ReactiveFlags.SKIP */
  ]) {
    return value;
  }
  seen = seen || /* @__PURE__ */ new Set();
  if (seen.has(value)) {
    return value;
  }
  seen.add(value);
  if (isRef(value)) {
    traverse(value.value, seen);
  } else if (isArray$1(value)) {
    for (let i2 = 0; i2 < value.length; i2++) {
      traverse(value[i2], seen);
    }
  } else if (isSet(value) || isMap(value)) {
    value.forEach((v) => {
      traverse(v, seen);
    });
  } else if (isPlainObject$2(value)) {
    for (const key in value) {
      traverse(value[key], seen);
    }
  }
  return value;
}
function useTransitionState() {
  const state = {
    isMounted: false,
    isLeaving: false,
    isUnmounting: false,
    leavingVNodes: /* @__PURE__ */ new Map()
  };
  onMounted(() => {
    state.isMounted = true;
  });
  onBeforeUnmount(() => {
    state.isUnmounting = true;
  });
  return state;
}
const TransitionHookValidator = [Function, Array];
const BaseTransitionImpl = {
  name: `BaseTransition`,
  props: {
    mode: String,
    appear: Boolean,
    persisted: Boolean,
    // enter
    onBeforeEnter: TransitionHookValidator,
    onEnter: TransitionHookValidator,
    onAfterEnter: TransitionHookValidator,
    onEnterCancelled: TransitionHookValidator,
    // leave
    onBeforeLeave: TransitionHookValidator,
    onLeave: TransitionHookValidator,
    onAfterLeave: TransitionHookValidator,
    onLeaveCancelled: TransitionHookValidator,
    // appear
    onBeforeAppear: TransitionHookValidator,
    onAppear: TransitionHookValidator,
    onAfterAppear: TransitionHookValidator,
    onAppearCancelled: TransitionHookValidator
  },
  setup(props, { slots }) {
    const instance = getCurrentInstance();
    const state = useTransitionState();
    let prevTransitionKey;
    return () => {
      const children = slots.default && getTransitionRawChildren(slots.default(), true);
      if (!children || !children.length) {
        return;
      }
      let child = children[0];
      if (children.length > 1) {
        for (const c2 of children) {
          if (c2.type !== Comment) {
            child = c2;
            break;
          }
        }
      }
      const rawProps = toRaw(props);
      const { mode } = rawProps;
      if (state.isLeaving) {
        return emptyPlaceholder(child);
      }
      const innerChild = getKeepAliveChild(child);
      if (!innerChild) {
        return emptyPlaceholder(child);
      }
      const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);
      setTransitionHooks(innerChild, enterHooks);
      const oldChild = instance.subTree;
      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
      let transitionKeyChanged = false;
      const { getTransitionKey } = innerChild.type;
      if (getTransitionKey) {
        const key = getTransitionKey();
        if (prevTransitionKey === void 0) {
          prevTransitionKey = key;
        } else if (key !== prevTransitionKey) {
          prevTransitionKey = key;
          transitionKeyChanged = true;
        }
      }
      if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
        const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);
        setTransitionHooks(oldInnerChild, leavingHooks);
        if (mode === "out-in") {
          state.isLeaving = true;
          leavingHooks.afterLeave = () => {
            state.isLeaving = false;
            if (instance.update.active !== false) {
              instance.update();
            }
          };
          return emptyPlaceholder(child);
        } else if (mode === "in-out" && innerChild.type !== Comment) {
          leavingHooks.delayLeave = (el2, earlyRemove, delayedLeave) => {
            const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);
            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
            el2._leaveCb = () => {
              earlyRemove();
              el2._leaveCb = void 0;
              delete enterHooks.delayedLeave;
            };
            enterHooks.delayedLeave = delayedLeave;
          };
        }
      }
      return child;
    };
  }
};
const BaseTransition = BaseTransitionImpl;
function getLeavingNodesForType(state, vnode) {
  const { leavingVNodes } = state;
  let leavingVNodesCache = leavingVNodes.get(vnode.type);
  if (!leavingVNodesCache) {
    leavingVNodesCache = /* @__PURE__ */ Object.create(null);
    leavingVNodes.set(vnode.type, leavingVNodesCache);
  }
  return leavingVNodesCache;
}
function resolveTransitionHooks(vnode, props, state, instance) {
  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;
  const key = String(vnode.key);
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
  const callHook2 = (hook, args) => {
    hook && callWithAsyncErrorHandling(hook, instance, 9, args);
  };
  const callAsyncHook = (hook, args) => {
    const done = args[1];
    callHook2(hook, args);
    if (isArray$1(hook)) {
      if (hook.every((hook2) => hook2.length <= 1))
        done();
    } else if (hook.length <= 1) {
      done();
    }
  };
  const hooks = {
    mode,
    persisted,
    beforeEnter(el2) {
      let hook = onBeforeEnter;
      if (!state.isMounted) {
        if (appear) {
          hook = onBeforeAppear || onBeforeEnter;
        } else {
          return;
        }
      }
      if (el2._leaveCb) {
        el2._leaveCb(
          true
          /* cancelled */
        );
      }
      const leavingVNode = leavingVNodesCache[key];
      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {
        leavingVNode.el._leaveCb();
      }
      callHook2(hook, [el2]);
    },
    enter(el2) {
      let hook = onEnter;
      let afterHook = onAfterEnter;
      let cancelHook = onEnterCancelled;
      if (!state.isMounted) {
        if (appear) {
          hook = onAppear || onEnter;
          afterHook = onAfterAppear || onAfterEnter;
          cancelHook = onAppearCancelled || onEnterCancelled;
        } else {
          return;
        }
      }
      let called = false;
      const done = el2._enterCb = (cancelled) => {
        if (called)
          return;
        called = true;
        if (cancelled) {
          callHook2(cancelHook, [el2]);
        } else {
          callHook2(afterHook, [el2]);
        }
        if (hooks.delayedLeave) {
          hooks.delayedLeave();
        }
        el2._enterCb = void 0;
      };
      if (hook) {
        callAsyncHook(hook, [el2, done]);
      } else {
        done();
      }
    },
    leave(el2, remove2) {
      const key2 = String(vnode.key);
      if (el2._enterCb) {
        el2._enterCb(
          true
          /* cancelled */
        );
      }
      if (state.isUnmounting) {
        return remove2();
      }
      callHook2(onBeforeLeave, [el2]);
      let called = false;
      const done = el2._leaveCb = (cancelled) => {
        if (called)
          return;
        called = true;
        remove2();
        if (cancelled) {
          callHook2(onLeaveCancelled, [el2]);
        } else {
          callHook2(onAfterLeave, [el2]);
        }
        el2._leaveCb = void 0;
        if (leavingVNodesCache[key2] === vnode) {
          delete leavingVNodesCache[key2];
        }
      };
      leavingVNodesCache[key2] = vnode;
      if (onLeave) {
        callAsyncHook(onLeave, [el2, done]);
      } else {
        done();
      }
    },
    clone(vnode2) {
      return resolveTransitionHooks(vnode2, props, state, instance);
    }
  };
  return hooks;
}
function emptyPlaceholder(vnode) {
  if (isKeepAlive(vnode)) {
    vnode = cloneVNode(vnode);
    vnode.children = null;
    return vnode;
  }
}
function getKeepAliveChild(vnode) {
  return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;
}
function setTransitionHooks(vnode, hooks) {
  if (vnode.shapeFlag & 6 && vnode.component) {
    setTransitionHooks(vnode.component.subTree, hooks);
  } else if (vnode.shapeFlag & 128) {
    vnode.ssContent.transition = hooks.clone(vnode.ssContent);
    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
  } else {
    vnode.transition = hooks;
  }
}
function getTransitionRawChildren(children, keepComment = false, parentKey) {
  let ret = [];
  let keyedFragmentCount = 0;
  for (let i2 = 0; i2 < children.length; i2++) {
    let child = children[i2];
    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i2);
    if (child.type === Fragment) {
      if (child.patchFlag & 128)
        keyedFragmentCount++;
      ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
    } else if (keepComment || child.type !== Comment) {
      ret.push(key != null ? cloneVNode(child, { key }) : child);
    }
  }
  if (keyedFragmentCount > 1) {
    for (let i2 = 0; i2 < ret.length; i2++) {
      ret[i2].patchFlag = -2;
    }
  }
  return ret;
}
function defineComponent(options2) {
  return isFunction$3(options2) ? { setup: options2, name: options2.name } : options2;
}
const isAsyncWrapper = (i2) => !!i2.type.__asyncLoader;
function defineAsyncComponent(source) {
  if (isFunction$3(source)) {
    source = { loader: source };
  }
  const {
    loader,
    loadingComponent,
    errorComponent,
    delay = 200,
    timeout,
    // undefined = never times out
    suspensible = true,
    onError: userOnError
  } = source;
  let pendingRequest = null;
  let resolvedComp;
  let retries = 0;
  const retry = () => {
    retries++;
    pendingRequest = null;
    return load();
  };
  const load = () => {
    let thisRequest;
    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {
      err = err instanceof Error ? err : new Error(String(err));
      if (userOnError) {
        return new Promise((resolve3, reject) => {
          const userRetry = () => resolve3(retry());
          const userFail = () => reject(err);
          userOnError(err, userRetry, userFail, retries + 1);
        });
      } else {
        throw err;
      }
    }).then((comp2) => {
      if (thisRequest !== pendingRequest && pendingRequest) {
        return pendingRequest;
      }
      if (comp2 && (comp2.__esModule || comp2[Symbol.toStringTag] === "Module")) {
        comp2 = comp2.default;
      }
      resolvedComp = comp2;
      return comp2;
    }));
  };
  return defineComponent({
    name: "AsyncComponentWrapper",
    __asyncLoader: load,
    get __asyncResolved() {
      return resolvedComp;
    },
    setup() {
      const instance = currentInstance;
      if (resolvedComp) {
        return () => createInnerComp(resolvedComp, instance);
      }
      const onError = (err) => {
        pendingRequest = null;
        handleError(
          err,
          instance,
          13,
          !errorComponent
          /* do not throw in dev if user provided error component */
        );
      };
      if (suspensible && instance.suspense || isInSSRComponentSetup) {
        return load().then((comp2) => {
          return () => createInnerComp(comp2, instance);
        }).catch((err) => {
          onError(err);
          return () => errorComponent ? createVNode(errorComponent, {
            error: err
          }) : null;
        });
      }
      const loaded = ref(false);
      const error2 = ref();
      const delayed = ref(!!delay);
      if (delay) {
        setTimeout(() => {
          delayed.value = false;
        }, delay);
      }
      if (timeout != null) {
        setTimeout(() => {
          if (!loaded.value && !error2.value) {
            const err = new Error(`Async component timed out after ${timeout}ms.`);
            onError(err);
            error2.value = err;
          }
        }, timeout);
      }
      load().then(() => {
        loaded.value = true;
        if (instance.parent && isKeepAlive(instance.parent.vnode)) {
          queueJob(instance.parent.update);
        }
      }).catch((err) => {
        onError(err);
        error2.value = err;
      });
      return () => {
        if (loaded.value && resolvedComp) {
          return createInnerComp(resolvedComp, instance);
        } else if (error2.value && errorComponent) {
          return createVNode(errorComponent, {
            error: error2.value
          });
        } else if (loadingComponent && !delayed.value) {
          return createVNode(loadingComponent);
        }
      };
    }
  });
}
function createInnerComp(comp2, parent) {
  const { ref: ref2, props, children, ce } = parent.vnode;
  const vnode = createVNode(comp2, props, children);
  vnode.ref = ref2;
  vnode.ce = ce;
  delete parent.vnode.ce;
  return vnode;
}
const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
const KeepAliveImpl = {
  name: `KeepAlive`,
  // Marker for special handling inside the renderer. We are not using a ===
  // check directly on KeepAlive in the renderer, because importing it directly
  // would prevent it from being tree-shaken.
  __isKeepAlive: true,
  props: {
    include: [String, RegExp, Array],
    exclude: [String, RegExp, Array],
    max: [String, Number]
  },
  setup(props, { slots }) {
    const instance = getCurrentInstance();
    const sharedContext = instance.ctx;
    if (!sharedContext.renderer) {
      return () => {
        const children = slots.default && slots.default();
        return children && children.length === 1 ? children[0] : children;
      };
    }
    const cache2 = /* @__PURE__ */ new Map();
    const keys = /* @__PURE__ */ new Set();
    let current = null;
    const parentSuspense = instance.suspense;
    const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;
    const storageContainer = createElement("div");
    sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {
      const instance2 = vnode.component;
      move(vnode, container, anchor, 0, parentSuspense);
      patch(instance2.vnode, vnode, container, anchor, instance2, parentSuspense, isSVG, vnode.slotScopeIds, optimized);
      queuePostRenderEffect(() => {
        instance2.isDeactivated = false;
        if (instance2.a) {
          invokeArrayFns(instance2.a);
        }
        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;
        if (vnodeHook) {
          invokeVNodeHook(vnodeHook, instance2.parent, vnode);
        }
      }, parentSuspense);
    };
    sharedContext.deactivate = (vnode) => {
      const instance2 = vnode.component;
      move(vnode, storageContainer, null, 1, parentSuspense);
      queuePostRenderEffect(() => {
        if (instance2.da) {
          invokeArrayFns(instance2.da);
        }
        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
        if (vnodeHook) {
          invokeVNodeHook(vnodeHook, instance2.parent, vnode);
        }
        instance2.isDeactivated = true;
      }, parentSuspense);
    };
    function unmount(vnode) {
      resetShapeFlag(vnode);
      _unmount(vnode, instance, parentSuspense, true);
    }
    function pruneCache(filter) {
      cache2.forEach((vnode, key) => {
        const name2 = getComponentName(vnode.type);
        if (name2 && (!filter || !filter(name2))) {
          pruneCacheEntry(key);
        }
      });
    }
    function pruneCacheEntry(key) {
      const cached = cache2.get(key);
      if (!current || !isSameVNodeType(cached, current)) {
        unmount(cached);
      } else if (current) {
        resetShapeFlag(current);
      }
      cache2.delete(key);
      keys.delete(key);
    }
    watch(
      () => [props.include, props.exclude],
      ([include, exclude]) => {
        include && pruneCache((name2) => matches$1(include, name2));
        exclude && pruneCache((name2) => !matches$1(exclude, name2));
      },
      // prune post-render after `current` has been updated
      { flush: "post", deep: true }
    );
    let pendingCacheKey = null;
    const cacheSubtree = () => {
      if (pendingCacheKey != null) {
        cache2.set(pendingCacheKey, getInnerChild(instance.subTree));
      }
    };
    onMounted(cacheSubtree);
    onUpdated(cacheSubtree);
    onBeforeUnmount(() => {
      cache2.forEach((cached) => {
        const { subTree, suspense } = instance;
        const vnode = getInnerChild(subTree);
        if (cached.type === vnode.type && cached.key === vnode.key) {
          resetShapeFlag(vnode);
          const da = vnode.component.da;
          da && queuePostRenderEffect(da, suspense);
          return;
        }
        unmount(cached);
      });
    });
    return () => {
      pendingCacheKey = null;
      if (!slots.default) {
        return null;
      }
      const children = slots.default();
      const rawVNode = children[0];
      if (children.length > 1) {
        current = null;
        return children;
      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {
        current = null;
        return rawVNode;
      }
      let vnode = getInnerChild(rawVNode);
      const comp2 = vnode.type;
      const name2 = getComponentName(isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp2);
      const { include, exclude, max: max2 } = props;
      if (include && (!name2 || !matches$1(include, name2)) || exclude && name2 && matches$1(exclude, name2)) {
        current = vnode;
        return rawVNode;
      }
      const key = vnode.key == null ? comp2 : vnode.key;
      const cachedVNode = cache2.get(key);
      if (vnode.el) {
        vnode = cloneVNode(vnode);
        if (rawVNode.shapeFlag & 128) {
          rawVNode.ssContent = vnode;
        }
      }
      pendingCacheKey = key;
      if (cachedVNode) {
        vnode.el = cachedVNode.el;
        vnode.component = cachedVNode.component;
        if (vnode.transition) {
          setTransitionHooks(vnode, vnode.transition);
        }
        vnode.shapeFlag |= 512;
        keys.delete(key);
        keys.add(key);
      } else {
        keys.add(key);
        if (max2 && keys.size > parseInt(max2, 10)) {
          pruneCacheEntry(keys.values().next().value);
        }
      }
      vnode.shapeFlag |= 256;
      current = vnode;
      return isSuspense(rawVNode.type) ? rawVNode : vnode;
    };
  }
};
const KeepAlive = KeepAliveImpl;
function matches$1(pattern, name2) {
  if (isArray$1(pattern)) {
    return pattern.some((p2) => matches$1(p2, name2));
  } else if (isString$4(pattern)) {
    return pattern.split(",").includes(name2);
  } else if (isRegExp$2(pattern)) {
    return pattern.test(name2);
  }
  return false;
}
function onActivated(hook, target2) {
  registerKeepAliveHook(hook, "a", target2);
}
function onDeactivated(hook, target2) {
  registerKeepAliveHook(hook, "da", target2);
}
function registerKeepAliveHook(hook, type2, target2 = currentInstance) {
  const wrappedHook = hook.__wdc || (hook.__wdc = () => {
    let current = target2;
    while (current) {
      if (current.isDeactivated) {
        return;
      }
      current = current.parent;
    }
    return hook();
  });
  injectHook(type2, wrappedHook, target2);
  if (target2) {
    let current = target2.parent;
    while (current && current.parent) {
      if (isKeepAlive(current.parent.vnode)) {
        injectToKeepAliveRoot(wrappedHook, type2, target2, current);
      }
      current = current.parent;
    }
  }
}
function injectToKeepAliveRoot(hook, type2, target2, keepAliveRoot) {
  const injected = injectHook(
    type2,
    hook,
    keepAliveRoot,
    true
    /* prepend */
  );
  onUnmounted(() => {
    remove(keepAliveRoot[type2], injected);
  }, target2);
}
function resetShapeFlag(vnode) {
  vnode.shapeFlag &= ~256;
  vnode.shapeFlag &= ~512;
}
function getInnerChild(vnode) {
  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
}
function injectHook(type2, hook, target2 = currentInstance, prepend = false) {
  if (target2) {
    const hooks = target2[type2] || (target2[type2] = []);
    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
      if (target2.isUnmounted) {
        return;
      }
      pauseTracking();
      setCurrentInstance(target2);
      const res = callWithAsyncErrorHandling(hook, target2, type2, args);
      unsetCurrentInstance();
      resetTracking();
      return res;
    });
    if (prepend) {
      hooks.unshift(wrappedHook);
    } else {
      hooks.push(wrappedHook);
    }
    return wrappedHook;
  }
}
const createHook = (lifecycle) => (hook, target2 = currentInstance) => (
  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
  (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target2)
);
const onBeforeMount = createHook(
  "bm"
  /* LifecycleHooks.BEFORE_MOUNT */
);
const onMounted = createHook(
  "m"
  /* LifecycleHooks.MOUNTED */
);
const onBeforeUpdate = createHook(
  "bu"
  /* LifecycleHooks.BEFORE_UPDATE */
);
const onUpdated = createHook(
  "u"
  /* LifecycleHooks.UPDATED */
);
const onBeforeUnmount = createHook(
  "bum"
  /* LifecycleHooks.BEFORE_UNMOUNT */
);
const onUnmounted = createHook(
  "um"
  /* LifecycleHooks.UNMOUNTED */
);
const onServerPrefetch = createHook(
  "sp"
  /* LifecycleHooks.SERVER_PREFETCH */
);
const onRenderTriggered = createHook(
  "rtg"
  /* LifecycleHooks.RENDER_TRIGGERED */
);
const onRenderTracked = createHook(
  "rtc"
  /* LifecycleHooks.RENDER_TRACKED */
);
function onErrorCaptured(hook, target2 = currentInstance) {
  injectHook("ec", hook, target2);
}
function withDirectives(vnode, directives) {
  const internalInstance = currentRenderingInstance;
  if (internalInstance === null) {
    return vnode;
  }
  const instance = getExposeProxy(internalInstance) || internalInstance.proxy;
  const bindings = vnode.dirs || (vnode.dirs = []);
  for (let i2 = 0; i2 < directives.length; i2++) {
    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i2];
    if (dir) {
      if (isFunction$3(dir)) {
        dir = {
          mounted: dir,
          updated: dir
        };
      }
      if (dir.deep) {
        traverse(value);
      }
      bindings.push({
        dir,
        instance,
        value,
        oldValue: void 0,
        arg,
        modifiers
      });
    }
  }
  return vnode;
}
function invokeDirectiveHook(vnode, prevVNode, instance, name2) {
  const bindings = vnode.dirs;
  const oldBindings = prevVNode && prevVNode.dirs;
  for (let i2 = 0; i2 < bindings.length; i2++) {
    const binding = bindings[i2];
    if (oldBindings) {
      binding.oldValue = oldBindings[i2].value;
    }
    let hook = binding.dir[name2];
    if (hook) {
      pauseTracking();
      callWithAsyncErrorHandling(hook, instance, 8, [
        vnode.el,
        binding,
        vnode,
        prevVNode
      ]);
      resetTracking();
    }
  }
}
const COMPONENTS = "components";
const DIRECTIVES = "directives";
function resolveComponent(name2, maybeSelfReference) {
  return resolveAsset(COMPONENTS, name2, true, maybeSelfReference) || name2;
}
const NULL_DYNAMIC_COMPONENT = Symbol();
function resolveDynamicComponent(component) {
  if (isString$4(component)) {
    return resolveAsset(COMPONENTS, component, false) || component;
  } else {
    return component || NULL_DYNAMIC_COMPONENT;
  }
}
function resolveDirective(name2) {
  return resolveAsset(DIRECTIVES, name2);
}
function resolveAsset(type2, name2, warnMissing = true, maybeSelfReference = false) {
  const instance = currentRenderingInstance || currentInstance;
  if (instance) {
    const Component = instance.type;
    if (type2 === COMPONENTS) {
      const selfName = getComponentName(
        Component,
        false
        /* do not include inferred name to avoid breaking existing code */
      );
      if (selfName && (selfName === name2 || selfName === camelize(name2) || selfName === capitalize$1(camelize(name2)))) {
        return Component;
      }
    }
    const res = (
      // local registration
      // check instance[type] first which is resolved for options API
      resolve(instance[type2] || Component[type2], name2) || // global registration
      resolve(instance.appContext[type2], name2)
    );
    if (!res && maybeSelfReference) {
      return Component;
    }
    return res;
  }
}
function resolve(registry, name2) {
  return registry && (registry[name2] || registry[camelize(name2)] || registry[capitalize$1(camelize(name2))]);
}
function renderList(source, renderItem, cache2, index2) {
  let ret;
  const cached = cache2 && cache2[index2];
  if (isArray$1(source) || isString$4(source)) {
    ret = new Array(source.length);
    for (let i2 = 0, l2 = source.length; i2 < l2; i2++) {
      ret[i2] = renderItem(source[i2], i2, void 0, cached && cached[i2]);
    }
  } else if (typeof source === "number") {
    ret = new Array(source);
    for (let i2 = 0; i2 < source; i2++) {
      ret[i2] = renderItem(i2 + 1, i2, void 0, cached && cached[i2]);
    }
  } else if (isObject$4(source)) {
    if (source[Symbol.iterator]) {
      ret = Array.from(source, (item, i2) => renderItem(item, i2, void 0, cached && cached[i2]));
    } else {
      const keys = Object.keys(source);
      ret = new Array(keys.length);
      for (let i2 = 0, l2 = keys.length; i2 < l2; i2++) {
        const key = keys[i2];
        ret[i2] = renderItem(source[key], key, i2, cached && cached[i2]);
      }
    }
  } else {
    ret = [];
  }
  if (cache2) {
    cache2[index2] = ret;
  }
  return ret;
}
function createSlots(slots, dynamicSlots) {
  for (let i2 = 0; i2 < dynamicSlots.length; i2++) {
    const slot = dynamicSlots[i2];
    if (isArray$1(slot)) {
      for (let j = 0; j < slot.length; j++) {
        slots[slot[j].name] = slot[j].fn;
      }
    } else if (slot) {
      slots[slot.name] = slot.key ? (...args) => {
        const res = slot.fn(...args);
        if (res)
          res.key = slot.key;
        return res;
      } : slot.fn;
    }
  }
  return slots;
}
function renderSlot(slots, name2, props = {}, fallback, noSlotted) {
  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {
    if (name2 !== "default")
      props.name = name2;
    return createVNode("slot", props, fallback && fallback());
  }
  let slot = slots[name2];
  if (slot && slot._c) {
    slot._d = false;
  }
  openBlock();
  const validSlotContent = slot && ensureValidVNode(slot(props));
  const rendered = createBlock(
    Fragment,
    {
      key: props.key || // slot content array of a dynamic conditional slot may have a branch
      // key attached in the `createSlots` helper, respect that
      validSlotContent && validSlotContent.key || `_${name2}`
    },
    validSlotContent || (fallback ? fallback() : []),
    validSlotContent && slots._ === 1 ? 64 : -2
    /* PatchFlags.BAIL */
  );
  if (!noSlotted && rendered.scopeId) {
    rendered.slotScopeIds = [rendered.scopeId + "-s"];
  }
  if (slot && slot._c) {
    slot._d = true;
  }
  return rendered;
}
function ensureValidVNode(vnodes) {
  return vnodes.some((child) => {
    if (!isVNode(child))
      return true;
    if (child.type === Comment)
      return false;
    if (child.type === Fragment && !ensureValidVNode(child.children))
      return false;
    return true;
  }) ? vnodes : null;
}
function toHandlers(obj, preserveCaseIfNecessary) {
  const ret = {};
  for (const key in obj) {
    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];
  }
  return ret;
}
const getPublicInstance = (i2) => {
  if (!i2)
    return null;
  if (isStatefulComponent(i2))
    return getExposeProxy(i2) || i2.proxy;
  return getPublicInstance(i2.parent);
};
const publicPropertiesMap = (
  // Move PURE marker to new line to workaround compiler discarding it
  // due to type annotation
  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {
    $: (i2) => i2,
    $el: (i2) => i2.vnode.el,
    $data: (i2) => i2.data,
    $props: (i2) => i2.props,
    $attrs: (i2) => i2.attrs,
    $slots: (i2) => i2.slots,
    $refs: (i2) => i2.refs,
    $parent: (i2) => getPublicInstance(i2.parent),
    $root: (i2) => getPublicInstance(i2.root),
    $emit: (i2) => i2.emit,
    $options: (i2) => resolveMergedOptions(i2),
    $forceUpdate: (i2) => i2.f || (i2.f = () => queueJob(i2.update)),
    $nextTick: (i2) => i2.n || (i2.n = nextTick.bind(i2.proxy)),
    $watch: (i2) => instanceWatch.bind(i2)
  })
);
const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn$1(state, key);
const PublicInstanceProxyHandlers = {
  get({ _: instance }, key) {
    const { ctx, setupState, data, props, accessCache, type: type2, appContext } = instance;
    let normalizedProps;
    if (key[0] !== "$") {
      const n = accessCache[key];
      if (n !== void 0) {
        switch (n) {
          case 1:
            return setupState[key];
          case 2:
            return data[key];
          case 4:
            return ctx[key];
          case 3:
            return props[key];
        }
      } else if (hasSetupBinding(setupState, key)) {
        accessCache[key] = 1;
        return setupState[key];
      } else if (data !== EMPTY_OBJ && hasOwn$1(data, key)) {
        accessCache[key] = 2;
        return data[key];
      } else if (
        // only cache other properties when instance has declared (thus stable)
        // props
        (normalizedProps = instance.propsOptions[0]) && hasOwn$1(normalizedProps, key)
      ) {
        accessCache[key] = 3;
        return props[key];
      } else if (ctx !== EMPTY_OBJ && hasOwn$1(ctx, key)) {
        accessCache[key] = 4;
        return ctx[key];
      } else if (shouldCacheAccess) {
        accessCache[key] = 0;
      }
    }
    const publicGetter = publicPropertiesMap[key];
    let cssModule, globalProperties;
    if (publicGetter) {
      if (key === "$attrs") {
        track(instance, "get", key);
      }
      return publicGetter(instance);
    } else if (
      // css module (injected by vue-loader)
      (cssModule = type2.__cssModules) && (cssModule = cssModule[key])
    ) {
      return cssModule;
    } else if (ctx !== EMPTY_OBJ && hasOwn$1(ctx, key)) {
      accessCache[key] = 4;
      return ctx[key];
    } else if (
      // global properties
      globalProperties = appContext.config.globalProperties, hasOwn$1(globalProperties, key)
    ) {
      {
        return globalProperties[key];
      }
    } else
      ;
  },
  set({ _: instance }, key, value) {
    const { data, setupState, ctx } = instance;
    if (hasSetupBinding(setupState, key)) {
      setupState[key] = value;
      return true;
    } else if (data !== EMPTY_OBJ && hasOwn$1(data, key)) {
      data[key] = value;
      return true;
    } else if (hasOwn$1(instance.props, key)) {
      return false;
    }
    if (key[0] === "$" && key.slice(1) in instance) {
      return false;
    } else {
      {
        ctx[key] = value;
      }
    }
    return true;
  },
  has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {
    let normalizedProps;
    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn$1(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn$1(normalizedProps, key) || hasOwn$1(ctx, key) || hasOwn$1(publicPropertiesMap, key) || hasOwn$1(appContext.config.globalProperties, key);
  },
  defineProperty(target2, key, descriptor) {
    if (descriptor.get != null) {
      target2._.accessCache[key] = 0;
    } else if (hasOwn$1(descriptor, "value")) {
      this.set(target2, key, descriptor.value, null);
    }
    return Reflect.defineProperty(target2, key, descriptor);
  }
};
const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, {
  get(target2, key) {
    if (key === Symbol.unscopables) {
      return;
    }
    return PublicInstanceProxyHandlers.get(target2, key, target2);
  },
  has(_2, key) {
    const has2 = key[0] !== "_" && !isGloballyWhitelisted(key);
    return has2;
  }
});
let shouldCacheAccess = true;
function applyOptions(instance) {
  const options2 = resolveMergedOptions(instance);
  const publicThis = instance.proxy;
  const ctx = instance.ctx;
  shouldCacheAccess = false;
  if (options2.beforeCreate) {
    callHook$1(
      options2.beforeCreate,
      instance,
      "bc"
      /* LifecycleHooks.BEFORE_CREATE */
    );
  }
  const {
    // state
    data: dataOptions,
    computed: computedOptions,
    methods,
    watch: watchOptions,
    provide: provideOptions,
    inject: injectOptions,
    // lifecycle
    created,
    beforeMount,
    mounted,
    beforeUpdate,
    updated,
    activated,
    deactivated,
    beforeDestroy,
    beforeUnmount,
    destroyed,
    unmounted,
    render: render2,
    renderTracked,
    renderTriggered,
    errorCaptured,
    serverPrefetch,
    // public API
    expose,
    inheritAttrs,
    // assets
    components,
    directives,
    filters
  } = options2;
  const checkDuplicateProperties = null;
  if (injectOptions) {
    resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);
  }
  if (methods) {
    for (const key in methods) {
      const methodHandler = methods[key];
      if (isFunction$3(methodHandler)) {
        {
          ctx[key] = methodHandler.bind(publicThis);
        }
      }
    }
  }
  if (dataOptions) {
    const data = dataOptions.call(publicThis, publicThis);
    if (!isObject$4(data))
      ;
    else {
      instance.data = reactive(data);
    }
  }
  shouldCacheAccess = true;
  if (computedOptions) {
    for (const key in computedOptions) {
      const opt = computedOptions[key];
      const get2 = isFunction$3(opt) ? opt.bind(publicThis, publicThis) : isFunction$3(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
      const set3 = !isFunction$3(opt) && isFunction$3(opt.set) ? opt.set.bind(publicThis) : NOOP;
      const c2 = computed({
        get: get2,
        set: set3
      });
      Object.defineProperty(ctx, key, {
        enumerable: true,
        configurable: true,
        get: () => c2.value,
        set: (v) => c2.value = v
      });
    }
  }
  if (watchOptions) {
    for (const key in watchOptions) {
      createWatcher(watchOptions[key], ctx, publicThis, key);
    }
  }
  if (provideOptions) {
    const provides = isFunction$3(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
    Reflect.ownKeys(provides).forEach((key) => {
      provide(key, provides[key]);
    });
  }
  if (created) {
    callHook$1(
      created,
      instance,
      "c"
      /* LifecycleHooks.CREATED */
    );
  }
  function registerLifecycleHook(register, hook) {
    if (isArray$1(hook)) {
      hook.forEach((_hook) => register(_hook.bind(publicThis)));
    } else if (hook) {
      register(hook.bind(publicThis));
    }
  }
  registerLifecycleHook(onBeforeMount, beforeMount);
  registerLifecycleHook(onMounted, mounted);
  registerLifecycleHook(onBeforeUpdate, beforeUpdate);
  registerLifecycleHook(onUpdated, updated);
  registerLifecycleHook(onActivated, activated);
  registerLifecycleHook(onDeactivated, deactivated);
  registerLifecycleHook(onErrorCaptured, errorCaptured);
  registerLifecycleHook(onRenderTracked, renderTracked);
  registerLifecycleHook(onRenderTriggered, renderTriggered);
  registerLifecycleHook(onBeforeUnmount, beforeUnmount);
  registerLifecycleHook(onUnmounted, unmounted);
  registerLifecycleHook(onServerPrefetch, serverPrefetch);
  if (isArray$1(expose)) {
    if (expose.length) {
      const exposed = instance.exposed || (instance.exposed = {});
      expose.forEach((key) => {
        Object.defineProperty(exposed, key, {
          get: () => publicThis[key],
          set: (val) => publicThis[key] = val
        });
      });
    } else if (!instance.exposed) {
      instance.exposed = {};
    }
  }
  if (render2 && instance.render === NOOP) {
    instance.render = render2;
  }
  if (inheritAttrs != null) {
    instance.inheritAttrs = inheritAttrs;
  }
  if (components)
    instance.components = components;
  if (directives)
    instance.directives = directives;
}
function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {
  if (isArray$1(injectOptions)) {
    injectOptions = normalizeInject(injectOptions);
  }
  for (const key in injectOptions) {
    const opt = injectOptions[key];
    let injected;
    if (isObject$4(opt)) {
      if ("default" in opt) {
        injected = inject(
          opt.from || key,
          opt.default,
          true
          /* treat default function as factory */
        );
      } else {
        injected = inject(opt.from || key);
      }
    } else {
      injected = inject(opt);
    }
    if (isRef(injected)) {
      if (unwrapRef) {
        Object.defineProperty(ctx, key, {
          enumerable: true,
          configurable: true,
          get: () => injected.value,
          set: (v) => injected.value = v
        });
      } else {
        ctx[key] = injected;
      }
    } else {
      ctx[key] = injected;
    }
  }
}
function callHook$1(hook, instance, type2) {
  callWithAsyncErrorHandling(isArray$1(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy), instance, type2);
}
function createWatcher(raw, ctx, publicThis, key) {
  const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
  if (isString$4(raw)) {
    const handler = ctx[raw];
    if (isFunction$3(handler)) {
      watch(getter, handler);
    }
  } else if (isFunction$3(raw)) {
    watch(getter, raw.bind(publicThis));
  } else if (isObject$4(raw)) {
    if (isArray$1(raw)) {
      raw.forEach((r2) => createWatcher(r2, ctx, publicThis, key));
    } else {
      const handler = isFunction$3(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
      if (isFunction$3(handler)) {
        watch(getter, handler, raw);
      }
    }
  } else
    ;
}
function resolveMergedOptions(instance) {
  const base2 = instance.type;
  const { mixins, extends: extendsOptions } = base2;
  const { mixins: globalMixins, optionsCache: cache2, config: { optionMergeStrategies } } = instance.appContext;
  const cached = cache2.get(base2);
  let resolved;
  if (cached) {
    resolved = cached;
  } else if (!globalMixins.length && !mixins && !extendsOptions) {
    {
      resolved = base2;
    }
  } else {
    resolved = {};
    if (globalMixins.length) {
      globalMixins.forEach((m2) => mergeOptions(resolved, m2, optionMergeStrategies, true));
    }
    mergeOptions(resolved, base2, optionMergeStrategies);
  }
  if (isObject$4(base2)) {
    cache2.set(base2, resolved);
  }
  return resolved;
}
function mergeOptions(to, from, strats, asMixin = false) {
  const { mixins, extends: extendsOptions } = from;
  if (extendsOptions) {
    mergeOptions(to, extendsOptions, strats, true);
  }
  if (mixins) {
    mixins.forEach((m2) => mergeOptions(to, m2, strats, true));
  }
  for (const key in from) {
    if (asMixin && key === "expose")
      ;
    else {
      const strat = internalOptionMergeStrats[key] || strats && strats[key];
      to[key] = strat ? strat(to[key], from[key]) : from[key];
    }
  }
  return to;
}
const internalOptionMergeStrats = {
  data: mergeDataFn,
  props: mergeObjectOptions,
  emits: mergeObjectOptions,
  // objects
  methods: mergeObjectOptions,
  computed: mergeObjectOptions,
  // lifecycle
  beforeCreate: mergeAsArray,
  created: mergeAsArray,
  beforeMount: mergeAsArray,
  mounted: mergeAsArray,
  beforeUpdate: mergeAsArray,
  updated: mergeAsArray,
  beforeDestroy: mergeAsArray,
  beforeUnmount: mergeAsArray,
  destroyed: mergeAsArray,
  unmounted: mergeAsArray,
  activated: mergeAsArray,
  deactivated: mergeAsArray,
  errorCaptured: mergeAsArray,
  serverPrefetch: mergeAsArray,
  // assets
  components: mergeObjectOptions,
  directives: mergeObjectOptions,
  // watch
  watch: mergeWatchOptions,
  // provide / inject
  provide: mergeDataFn,
  inject: mergeInject
};
function mergeDataFn(to, from) {
  if (!from) {
    return to;
  }
  if (!to) {
    return from;
  }
  return function mergedDataFn() {
    return extend(isFunction$3(to) ? to.call(this, this) : to, isFunction$3(from) ? from.call(this, this) : from);
  };
}
function mergeInject(to, from) {
  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
}
function normalizeInject(raw) {
  if (isArray$1(raw)) {
    const res = {};
    for (let i2 = 0; i2 < raw.length; i2++) {
      res[raw[i2]] = raw[i2];
    }
    return res;
  }
  return raw;
}
function mergeAsArray(to, from) {
  return to ? [...new Set([].concat(to, from))] : from;
}
function mergeObjectOptions(to, from) {
  return to ? extend(extend(/* @__PURE__ */ Object.create(null), to), from) : from;
}
function mergeWatchOptions(to, from) {
  if (!to)
    return from;
  if (!from)
    return to;
  const merged = extend(/* @__PURE__ */ Object.create(null), to);
  for (const key in from) {
    merged[key] = mergeAsArray(to[key], from[key]);
  }
  return merged;
}
function initProps(instance, rawProps, isStateful, isSSR = false) {
  const props = {};
  const attrs = {};
  def(attrs, InternalObjectKey, 1);
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
  setFullProps(instance, rawProps, props, attrs);
  for (const key in instance.propsOptions[0]) {
    if (!(key in props)) {
      props[key] = void 0;
    }
  }
  if (isStateful) {
    instance.props = isSSR ? props : shallowReactive(props);
  } else {
    if (!instance.type.props) {
      instance.props = attrs;
    } else {
      instance.props = props;
    }
  }
  instance.attrs = attrs;
}
function updateProps(instance, rawProps, rawPrevProps, optimized) {
  const { props, attrs, vnode: { patchFlag } } = instance;
  const rawCurrentProps = toRaw(props);
  const [options2] = instance.propsOptions;
  let hasAttrsChanged = false;
  if (
    // always force full diff in dev
    // - #1942 if hmr is enabled with sfc component
    // - vite#872 non-sfc component used by sfc component
    (optimized || patchFlag > 0) && !(patchFlag & 16)
  ) {
    if (patchFlag & 8) {
      const propsToUpdate = instance.vnode.dynamicProps;
      for (let i2 = 0; i2 < propsToUpdate.length; i2++) {
        let key = propsToUpdate[i2];
        if (isEmitListener(instance.emitsOptions, key)) {
          continue;
        }
        const value = rawProps[key];
        if (options2) {
          if (hasOwn$1(attrs, key)) {
            if (value !== attrs[key]) {
              attrs[key] = value;
              hasAttrsChanged = true;
            }
          } else {
            const camelizedKey = camelize(key);
            props[camelizedKey] = resolvePropValue(
              options2,
              rawCurrentProps,
              camelizedKey,
              value,
              instance,
              false
              /* isAbsent */
            );
          }
        } else {
          if (value !== attrs[key]) {
            attrs[key] = value;
            hasAttrsChanged = true;
          }
        }
      }
    }
  } else {
    if (setFullProps(instance, rawProps, props, attrs)) {
      hasAttrsChanged = true;
    }
    let kebabKey;
    for (const key in rawCurrentProps) {
      if (!rawProps || // for camelCase
      !hasOwn$1(rawProps, key) && // it's possible the original props was passed in as kebab-case
      // and converted to camelCase (#955)
      ((kebabKey = hyphenate(key)) === key || !hasOwn$1(rawProps, kebabKey))) {
        if (options2) {
          if (rawPrevProps && // for camelCase
          (rawPrevProps[key] !== void 0 || // for kebab-case
          rawPrevProps[kebabKey] !== void 0)) {
            props[key] = resolvePropValue(
              options2,
              rawCurrentProps,
              key,
              void 0,
              instance,
              true
              /* isAbsent */
            );
          }
        } else {
          delete props[key];
        }
      }
    }
    if (attrs !== rawCurrentProps) {
      for (const key in attrs) {
        if (!rawProps || !hasOwn$1(rawProps, key) && true) {
          delete attrs[key];
          hasAttrsChanged = true;
        }
      }
    }
  }
  if (hasAttrsChanged) {
    trigger(instance, "set", "$attrs");
  }
}
function setFullProps(instance, rawProps, props, attrs) {
  const [options2, needCastKeys] = instance.propsOptions;
  let hasAttrsChanged = false;
  let rawCastValues;
  if (rawProps) {
    for (let key in rawProps) {
      if (isReservedProp(key)) {
        continue;
      }
      const value = rawProps[key];
      let camelKey;
      if (options2 && hasOwn$1(options2, camelKey = camelize(key))) {
        if (!needCastKeys || !needCastKeys.includes(camelKey)) {
          props[camelKey] = value;
        } else {
          (rawCastValues || (rawCastValues = {}))[camelKey] = value;
        }
      } else if (!isEmitListener(instance.emitsOptions, key)) {
        if (!(key in attrs) || value !== attrs[key]) {
          attrs[key] = value;
          hasAttrsChanged = true;
        }
      }
    }
  }
  if (needCastKeys) {
    const rawCurrentProps = toRaw(props);
    const castValues = rawCastValues || EMPTY_OBJ;
    for (let i2 = 0; i2 < needCastKeys.length; i2++) {
      const key = needCastKeys[i2];
      props[key] = resolvePropValue(options2, rawCurrentProps, key, castValues[key], instance, !hasOwn$1(castValues, key));
    }
  }
  return hasAttrsChanged;
}
function resolvePropValue(options2, props, key, value, instance, isAbsent) {
  const opt = options2[key];
  if (opt != null) {
    const hasDefault = hasOwn$1(opt, "default");
    if (hasDefault && value === void 0) {
      const defaultValue = opt.default;
      if (opt.type !== Function && isFunction$3(defaultValue)) {
        const { propsDefaults } = instance;
        if (key in propsDefaults) {
          value = propsDefaults[key];
        } else {
          setCurrentInstance(instance);
          value = propsDefaults[key] = defaultValue.call(null, props);
          unsetCurrentInstance();
        }
      } else {
        value = defaultValue;
      }
    }
    if (opt[
      0
      /* BooleanFlags.shouldCast */
    ]) {
      if (isAbsent && !hasDefault) {
        value = false;
      } else if (opt[
        1
        /* BooleanFlags.shouldCastTrue */
      ] && (value === "" || value === hyphenate(key))) {
        value = true;
      }
    }
  }
  return value;
}
function normalizePropsOptions(comp2, appContext, asMixin = false) {
  const cache2 = appContext.propsCache;
  const cached = cache2.get(comp2);
  if (cached) {
    return cached;
  }
  const raw = comp2.props;
  const normalized = {};
  const needCastKeys = [];
  let hasExtends = false;
  if (!isFunction$3(comp2)) {
    const extendProps = (raw2) => {
      hasExtends = true;
      const [props, keys] = normalizePropsOptions(raw2, appContext, true);
      extend(normalized, props);
      if (keys)
        needCastKeys.push(...keys);
    };
    if (!asMixin && appContext.mixins.length) {
      appContext.mixins.forEach(extendProps);
    }
    if (comp2.extends) {
      extendProps(comp2.extends);
    }
    if (comp2.mixins) {
      comp2.mixins.forEach(extendProps);
    }
  }
  if (!raw && !hasExtends) {
    if (isObject$4(comp2)) {
      cache2.set(comp2, EMPTY_ARR);
    }
    return EMPTY_ARR;
  }
  if (isArray$1(raw)) {
    for (let i2 = 0; i2 < raw.length; i2++) {
      const normalizedKey = camelize(raw[i2]);
      if (validatePropName(normalizedKey)) {
        normalized[normalizedKey] = EMPTY_OBJ;
      }
    }
  } else if (raw) {
    for (const key in raw) {
      const normalizedKey = camelize(key);
      if (validatePropName(normalizedKey)) {
        const opt = raw[key];
        const prop2 = normalized[normalizedKey] = isArray$1(opt) || isFunction$3(opt) ? { type: opt } : Object.assign({}, opt);
        if (prop2) {
          const booleanIndex = getTypeIndex(Boolean, prop2.type);
          const stringIndex = getTypeIndex(String, prop2.type);
          prop2[
            0
            /* BooleanFlags.shouldCast */
          ] = booleanIndex > -1;
          prop2[
            1
            /* BooleanFlags.shouldCastTrue */
          ] = stringIndex < 0 || booleanIndex < stringIndex;
          if (booleanIndex > -1 || hasOwn$1(prop2, "default")) {
            needCastKeys.push(normalizedKey);
          }
        }
      }
    }
  }
  const res = [normalized, needCastKeys];
  if (isObject$4(comp2)) {
    cache2.set(comp2, res);
  }
  return res;
}
function validatePropName(key) {
  if (key[0] !== "$") {
    return true;
  }
  return false;
}
function getType(ctor) {
  const match3 = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/);
  return match3 ? match3[2] : ctor === null ? "null" : "";
}
function isSameType(a2, b2) {
  return getType(a2) === getType(b2);
}
function getTypeIndex(type2, expectedTypes) {
  if (isArray$1(expectedTypes)) {
    return expectedTypes.findIndex((t2) => isSameType(t2, type2));
  } else if (isFunction$3(expectedTypes)) {
    return isSameType(expectedTypes, type2) ? 0 : -1;
  }
  return -1;
}
const isInternalKey = (key) => key[0] === "_" || key === "$stable";
const normalizeSlotValue = (value) => isArray$1(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
const normalizeSlot = (key, rawSlot, ctx) => {
  if (rawSlot._n) {
    return rawSlot;
  }
  const normalized = withCtx((...args) => {
    if (false)
      ;
    return normalizeSlotValue(rawSlot(...args));
  }, ctx);
  normalized._c = false;
  return normalized;
};
const normalizeObjectSlots = (rawSlots, slots, instance) => {
  const ctx = rawSlots._ctx;
  for (const key in rawSlots) {
    if (isInternalKey(key))
      continue;
    const value = rawSlots[key];
    if (isFunction$3(value)) {
      slots[key] = normalizeSlot(key, value, ctx);
    } else if (value != null) {
      const normalized = normalizeSlotValue(value);
      slots[key] = () => normalized;
    }
  }
};
const normalizeVNodeSlots = (instance, children) => {
  const normalized = normalizeSlotValue(children);
  instance.slots.default = () => normalized;
};
const initSlots = (instance, children) => {
  if (instance.vnode.shapeFlag & 32) {
    const type2 = children._;
    if (type2) {
      instance.slots = toRaw(children);
      def(children, "_", type2);
    } else {
      normalizeObjectSlots(children, instance.slots = {});
    }
  } else {
    instance.slots = {};
    if (children) {
      normalizeVNodeSlots(instance, children);
    }
  }
  def(instance.slots, InternalObjectKey, 1);
};
const updateSlots = (instance, children, optimized) => {
  const { vnode, slots } = instance;
  let needDeletionCheck = true;
  let deletionComparisonTarget = EMPTY_OBJ;
  if (vnode.shapeFlag & 32) {
    const type2 = children._;
    if (type2) {
      if (optimized && type2 === 1) {
        needDeletionCheck = false;
      } else {
        extend(slots, children);
        if (!optimized && type2 === 1) {
          delete slots._;
        }
      }
    } else {
      needDeletionCheck = !children.$stable;
      normalizeObjectSlots(children, slots);
    }
    deletionComparisonTarget = children;
  } else if (children) {
    normalizeVNodeSlots(instance, children);
    deletionComparisonTarget = { default: 1 };
  }
  if (needDeletionCheck) {
    for (const key in slots) {
      if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {
        delete slots[key];
      }
    }
  }
};
function createAppContext() {
  return {
    app: null,
    config: {
      isNativeTag: NO,
      performance: false,
      globalProperties: {},
      optionMergeStrategies: {},
      errorHandler: void 0,
      warnHandler: void 0,
      compilerOptions: {}
    },
    mixins: [],
    components: {},
    directives: {},
    provides: /* @__PURE__ */ Object.create(null),
    optionsCache: /* @__PURE__ */ new WeakMap(),
    propsCache: /* @__PURE__ */ new WeakMap(),
    emitsCache: /* @__PURE__ */ new WeakMap()
  };
}
let uid$1 = 0;
function createAppAPI(render2, hydrate2) {
  return function createApp2(rootComponent, rootProps = null) {
    if (!isFunction$3(rootComponent)) {
      rootComponent = Object.assign({}, rootComponent);
    }
    if (rootProps != null && !isObject$4(rootProps)) {
      rootProps = null;
    }
    const context = createAppContext();
    const installedPlugins = /* @__PURE__ */ new Set();
    let isMounted = false;
    const app2 = context.app = {
      _uid: uid$1++,
      _component: rootComponent,
      _props: rootProps,
      _container: null,
      _context: context,
      _instance: null,
      version: version$9,
      get config() {
        return context.config;
      },
      set config(v) {
      },
      use(plugin, ...options2) {
        if (installedPlugins.has(plugin))
          ;
        else if (plugin && isFunction$3(plugin.install)) {
          installedPlugins.add(plugin);
          plugin.install(app2, ...options2);
        } else if (isFunction$3(plugin)) {
          installedPlugins.add(plugin);
          plugin(app2, ...options2);
        } else
          ;
        return app2;
      },
      mixin(mixin) {
        {
          if (!context.mixins.includes(mixin)) {
            context.mixins.push(mixin);
          }
        }
        return app2;
      },
      component(name2, component) {
        if (!component) {
          return context.components[name2];
        }
        context.components[name2] = component;
        return app2;
      },
      directive(name2, directive) {
        if (!directive) {
          return context.directives[name2];
        }
        context.directives[name2] = directive;
        return app2;
      },
      mount(rootContainer, isHydrate, isSVG) {
        if (!isMounted) {
          const vnode = createVNode(rootComponent, rootProps);
          vnode.appContext = context;
          if (isHydrate && hydrate2) {
            hydrate2(vnode, rootContainer);
          } else {
            render2(vnode, rootContainer, isSVG);
          }
          isMounted = true;
          app2._container = rootContainer;
          rootContainer.__vue_app__ = app2;
          return getExposeProxy(vnode.component) || vnode.component.proxy;
        }
      },
      unmount() {
        if (isMounted) {
          render2(null, app2._container);
          delete app2._container.__vue_app__;
        }
      },
      provide(key, value) {
        context.provides[key] = value;
        return app2;
      }
    };
    return app2;
  };
}
function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
  if (isArray$1(rawRef)) {
    rawRef.forEach((r2, i2) => setRef(r2, oldRawRef && (isArray$1(oldRawRef) ? oldRawRef[i2] : oldRawRef), parentSuspense, vnode, isUnmount));
    return;
  }
  if (isAsyncWrapper(vnode) && !isUnmount) {
    return;
  }
  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;
  const value = isUnmount ? null : refValue;
  const { i: owner, r: ref2 } = rawRef;
  const oldRef = oldRawRef && oldRawRef.r;
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
  const setupState = owner.setupState;
  if (oldRef != null && oldRef !== ref2) {
    if (isString$4(oldRef)) {
      refs[oldRef] = null;
      if (hasOwn$1(setupState, oldRef)) {
        setupState[oldRef] = null;
      }
    } else if (isRef(oldRef)) {
      oldRef.value = null;
    }
  }
  if (isFunction$3(ref2)) {
    callWithErrorHandling(ref2, owner, 12, [value, refs]);
  } else {
    const _isString = isString$4(ref2);
    const _isRef = isRef(ref2);
    if (_isString || _isRef) {
      const doSet = () => {
        if (rawRef.f) {
          const existing = _isString ? hasOwn$1(setupState, ref2) ? setupState[ref2] : refs[ref2] : ref2.value;
          if (isUnmount) {
            isArray$1(existing) && remove(existing, refValue);
          } else {
            if (!isArray$1(existing)) {
              if (_isString) {
                refs[ref2] = [refValue];
                if (hasOwn$1(setupState, ref2)) {
                  setupState[ref2] = refs[ref2];
                }
              } else {
                ref2.value = [refValue];
                if (rawRef.k)
                  refs[rawRef.k] = ref2.value;
              }
            } else if (!existing.includes(refValue)) {
              existing.push(refValue);
            }
          }
        } else if (_isString) {
          refs[ref2] = value;
          if (hasOwn$1(setupState, ref2)) {
            setupState[ref2] = value;
          }
        } else if (_isRef) {
          ref2.value = value;
          if (rawRef.k)
            refs[rawRef.k] = value;
        } else
          ;
      };
      if (value) {
        doSet.id = -1;
        queuePostRenderEffect(doSet, parentSuspense);
      } else {
        doSet();
      }
    }
  }
}
let hasMismatch = false;
const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== "foreignObject";
const isComment = (node) => node.nodeType === 8;
function createHydrationFunctions(rendererInternals) {
  const { mt: mountComponent, p: patch, o: { patchProp: patchProp2, createText, nextSibling, parentNode, remove: remove2, insert: insert2, createComment } } = rendererInternals;
  const hydrate2 = (vnode, container) => {
    if (!container.hasChildNodes()) {
      patch(null, vnode, container);
      flushPostFlushCbs();
      container._vnode = vnode;
      return;
    }
    hasMismatch = false;
    hydrateNode(container.firstChild, vnode, null, null, null);
    flushPostFlushCbs();
    container._vnode = vnode;
    if (hasMismatch && true) {
      console.error(`Hydration completed but contains mismatches.`);
    }
  };
  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
    const isFragmentStart = isComment(node) && node.data === "[";
    const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
    const { type: type2, ref: ref2, shapeFlag, patchFlag } = vnode;
    let domType = node.nodeType;
    vnode.el = node;
    if (patchFlag === -2) {
      optimized = false;
      vnode.dynamicChildren = null;
    }
    let nextNode = null;
    switch (type2) {
      case Text:
        if (domType !== 3) {
          if (vnode.children === "") {
            insert2(vnode.el = createText(""), parentNode(node), node);
            nextNode = node;
          } else {
            nextNode = onMismatch();
          }
        } else {
          if (node.data !== vnode.children) {
            hasMismatch = true;
            node.data = vnode.children;
          }
          nextNode = nextSibling(node);
        }
        break;
      case Comment:
        if (domType !== 8 || isFragmentStart) {
          nextNode = onMismatch();
        } else {
          nextNode = nextSibling(node);
        }
        break;
      case Static:
        if (isFragmentStart) {
          node = nextSibling(node);
          domType = node.nodeType;
        }
        if (domType === 1 || domType === 3) {
          nextNode = node;
          const needToAdoptContent = !vnode.children.length;
          for (let i2 = 0; i2 < vnode.staticCount; i2++) {
            if (needToAdoptContent)
              vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;
            if (i2 === vnode.staticCount - 1) {
              vnode.anchor = nextNode;
            }
            nextNode = nextSibling(nextNode);
          }
          return isFragmentStart ? nextSibling(nextNode) : nextNode;
        } else {
          onMismatch();
        }
        break;
      case Fragment:
        if (!isFragmentStart) {
          nextNode = onMismatch();
        } else {
          nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
        }
        break;
      default:
        if (shapeFlag & 1) {
          if (domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) {
            nextNode = onMismatch();
          } else {
            nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
          }
        } else if (shapeFlag & 6) {
          vnode.slotScopeIds = slotScopeIds;
          const container = parentNode(node);
          mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);
          nextNode = isFragmentStart ? locateClosingAsyncAnchor(node) : nextSibling(node);
          if (nextNode && isComment(nextNode) && nextNode.data === "teleport end") {
            nextNode = nextSibling(nextNode);
          }
          if (isAsyncWrapper(vnode)) {
            let subTree;
            if (isFragmentStart) {
              subTree = createVNode(Fragment);
              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
            } else {
              subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
            }
            subTree.el = node;
            vnode.component.subTree = subTree;
          }
        } else if (shapeFlag & 64) {
          if (domType !== 8) {
            nextNode = onMismatch();
          } else {
            nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);
          }
        } else if (shapeFlag & 128) {
          nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);
        } else
          ;
    }
    if (ref2 != null) {
      setRef(ref2, null, parentSuspense, vnode);
    }
    return nextNode;
  };
  const hydrateElement = (el2, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
    optimized = optimized || !!vnode.dynamicChildren;
    const { type: type2, props, patchFlag, shapeFlag, dirs } = vnode;
    const forcePatchValue = type2 === "input" && dirs || type2 === "option";
    if (forcePatchValue || patchFlag !== -1) {
      if (dirs) {
        invokeDirectiveHook(vnode, null, parentComponent, "created");
      }
      if (props) {
        if (forcePatchValue || !optimized || patchFlag & (16 | 32)) {
          for (const key in props) {
            if (forcePatchValue && key.endsWith("value") || isOn(key) && !isReservedProp(key)) {
              patchProp2(el2, key, null, props[key], false, void 0, parentComponent);
            }
          }
        } else if (props.onClick) {
          patchProp2(el2, "onClick", null, props.onClick, false, void 0, parentComponent);
        }
      }
      let vnodeHooks;
      if (vnodeHooks = props && props.onVnodeBeforeMount) {
        invokeVNodeHook(vnodeHooks, parentComponent, vnode);
      }
      if (dirs) {
        invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
      }
      if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {
        queueEffectWithSuspense(() => {
          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
          dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
        }, parentSuspense);
      }
      if (shapeFlag & 16 && // skip if element has innerHTML / textContent
      !(props && (props.innerHTML || props.textContent))) {
        let next = hydrateChildren(el2.firstChild, vnode, el2, parentComponent, parentSuspense, slotScopeIds, optimized);
        while (next) {
          hasMismatch = true;
          const cur = next;
          next = next.nextSibling;
          remove2(cur);
        }
      } else if (shapeFlag & 8) {
        if (el2.textContent !== vnode.children) {
          hasMismatch = true;
          el2.textContent = vnode.children;
        }
      }
    }
    return el2.nextSibling;
  };
  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {
    optimized = optimized || !!parentVNode.dynamicChildren;
    const children = parentVNode.children;
    const l2 = children.length;
    for (let i2 = 0; i2 < l2; i2++) {
      const vnode = optimized ? children[i2] : children[i2] = normalizeVNode(children[i2]);
      if (node) {
        node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
      } else if (vnode.type === Text && !vnode.children) {
        continue;
      } else {
        hasMismatch = true;
        patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);
      }
    }
    return node;
  };
  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
    const { slotScopeIds: fragmentSlotScopeIds } = vnode;
    if (fragmentSlotScopeIds) {
      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
    }
    const container = parentNode(node);
    const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
    if (next && isComment(next) && next.data === "]") {
      return nextSibling(vnode.anchor = next);
    } else {
      hasMismatch = true;
      insert2(vnode.anchor = createComment(`]`), container, next);
      return next;
    }
  };
  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
    hasMismatch = true;
    vnode.el = null;
    if (isFragment) {
      const end = locateClosingAsyncAnchor(node);
      while (true) {
        const next2 = nextSibling(node);
        if (next2 && next2 !== end) {
          remove2(next2);
        } else {
          break;
        }
      }
    }
    const next = nextSibling(node);
    const container = parentNode(node);
    remove2(node);
    patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);
    return next;
  };
  const locateClosingAsyncAnchor = (node) => {
    let match3 = 0;
    while (node) {
      node = nextSibling(node);
      if (node && isComment(node)) {
        if (node.data === "[")
          match3++;
        if (node.data === "]") {
          if (match3 === 0) {
            return nextSibling(node);
          } else {
            match3--;
          }
        }
      }
    }
    return node;
  };
  return [hydrate2, hydrateNode];
}
const queuePostRenderEffect = queueEffectWithSuspense;
function createRenderer(options2) {
  return baseCreateRenderer(options2);
}
function createHydrationRenderer(options2) {
  return baseCreateRenderer(options2, createHydrationFunctions);
}
function baseCreateRenderer(options2, createHydrationFns) {
  const target2 = getGlobalThis$1();
  target2.__VUE__ = true;
  const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options2;
  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {
    if (n1 === n2) {
      return;
    }
    if (n1 && !isSameVNodeType(n1, n2)) {
      anchor = getNextHostNode(n1);
      unmount(n1, parentComponent, parentSuspense, true);
      n1 = null;
    }
    if (n2.patchFlag === -2) {
      optimized = false;
      n2.dynamicChildren = null;
    }
    const { type: type2, ref: ref2, shapeFlag } = n2;
    switch (type2) {
      case Text:
        processText(n1, n2, container, anchor);
        break;
      case Comment:
        processCommentNode(n1, n2, container, anchor);
        break;
      case Static:
        if (n1 == null) {
          mountStaticNode(n2, container, anchor, isSVG);
        }
        break;
      case Fragment:
        processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        break;
      default:
        if (shapeFlag & 1) {
          processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else if (shapeFlag & 6) {
          processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else if (shapeFlag & 64) {
          type2.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
        } else if (shapeFlag & 128) {
          type2.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
        } else
          ;
    }
    if (ref2 != null && parentComponent) {
      setRef(ref2, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
    }
  };
  const processText = (n1, n2, container, anchor) => {
    if (n1 == null) {
      hostInsert(n2.el = hostCreateText(n2.children), container, anchor);
    } else {
      const el2 = n2.el = n1.el;
      if (n2.children !== n1.children) {
        hostSetText(el2, n2.children);
      }
    }
  };
  const processCommentNode = (n1, n2, container, anchor) => {
    if (n1 == null) {
      hostInsert(n2.el = hostCreateComment(n2.children || ""), container, anchor);
    } else {
      n2.el = n1.el;
    }
  };
  const mountStaticNode = (n2, container, anchor, isSVG) => {
    [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);
  };
  const moveStaticNode = ({ el: el2, anchor }, container, nextSibling) => {
    let next;
    while (el2 && el2 !== anchor) {
      next = hostNextSibling(el2);
      hostInsert(el2, container, nextSibling);
      el2 = next;
    }
    hostInsert(anchor, container, nextSibling);
  };
  const removeStaticNode = ({ el: el2, anchor }) => {
    let next;
    while (el2 && el2 !== anchor) {
      next = hostNextSibling(el2);
      hostRemove(el2);
      el2 = next;
    }
    hostRemove(anchor);
  };
  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    isSVG = isSVG || n2.type === "svg";
    if (n1 == null) {
      mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    } else {
      patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    }
  };
  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    let el2;
    let vnodeHook;
    const { type: type2, props, shapeFlag, transition, dirs } = vnode;
    el2 = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);
    if (shapeFlag & 8) {
      hostSetElementText(el2, vnode.children);
    } else if (shapeFlag & 16) {
      mountChildren(vnode.children, el2, null, parentComponent, parentSuspense, isSVG && type2 !== "foreignObject", slotScopeIds, optimized);
    }
    if (dirs) {
      invokeDirectiveHook(vnode, null, parentComponent, "created");
    }
    setScopeId(el2, vnode, vnode.scopeId, slotScopeIds, parentComponent);
    if (props) {
      for (const key in props) {
        if (key !== "value" && !isReservedProp(key)) {
          hostPatchProp(el2, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
        }
      }
      if ("value" in props) {
        hostPatchProp(el2, "value", null, props.value);
      }
      if (vnodeHook = props.onVnodeBeforeMount) {
        invokeVNodeHook(vnodeHook, parentComponent, vnode);
      }
    }
    if (dirs) {
      invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
    }
    const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
    if (needCallTransitionHooks) {
      transition.beforeEnter(el2);
    }
    hostInsert(el2, container, anchor);
    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
      queuePostRenderEffect(() => {
        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
        needCallTransitionHooks && transition.enter(el2);
        dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
      }, parentSuspense);
    }
  };
  const setScopeId = (el2, vnode, scopeId, slotScopeIds, parentComponent) => {
    if (scopeId) {
      hostSetScopeId(el2, scopeId);
    }
    if (slotScopeIds) {
      for (let i2 = 0; i2 < slotScopeIds.length; i2++) {
        hostSetScopeId(el2, slotScopeIds[i2]);
      }
    }
    if (parentComponent) {
      let subTree = parentComponent.subTree;
      if (vnode === subTree) {
        const parentVNode = parentComponent.vnode;
        setScopeId(el2, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);
      }
    }
  };
  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {
    for (let i2 = start; i2 < children.length; i2++) {
      const child = children[i2] = optimized ? cloneIfMounted(children[i2]) : normalizeVNode(children[i2]);
      patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    }
  };
  const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    const el2 = n2.el = n1.el;
    let { patchFlag, dynamicChildren, dirs } = n2;
    patchFlag |= n1.patchFlag & 16;
    const oldProps = n1.props || EMPTY_OBJ;
    const newProps = n2.props || EMPTY_OBJ;
    let vnodeHook;
    parentComponent && toggleRecurse(parentComponent, false);
    if (vnodeHook = newProps.onVnodeBeforeUpdate) {
      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
    }
    if (dirs) {
      invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
    }
    parentComponent && toggleRecurse(parentComponent, true);
    const areChildrenSVG = isSVG && n2.type !== "foreignObject";
    if (dynamicChildren) {
      patchBlockChildren(n1.dynamicChildren, dynamicChildren, el2, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);
    } else if (!optimized) {
      patchChildren(n1, n2, el2, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);
    }
    if (patchFlag > 0) {
      if (patchFlag & 16) {
        patchProps(el2, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);
      } else {
        if (patchFlag & 2) {
          if (oldProps.class !== newProps.class) {
            hostPatchProp(el2, "class", null, newProps.class, isSVG);
          }
        }
        if (patchFlag & 4) {
          hostPatchProp(el2, "style", oldProps.style, newProps.style, isSVG);
        }
        if (patchFlag & 8) {
          const propsToUpdate = n2.dynamicProps;
          for (let i2 = 0; i2 < propsToUpdate.length; i2++) {
            const key = propsToUpdate[i2];
            const prev2 = oldProps[key];
            const next = newProps[key];
            if (next !== prev2 || key === "value") {
              hostPatchProp(el2, key, prev2, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);
            }
          }
        }
      }
      if (patchFlag & 1) {
        if (n1.children !== n2.children) {
          hostSetElementText(el2, n2.children);
        }
      }
    } else if (!optimized && dynamicChildren == null) {
      patchProps(el2, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);
    }
    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
      queuePostRenderEffect(() => {
        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
        dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
      }, parentSuspense);
    }
  };
  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {
    for (let i2 = 0; i2 < newChildren.length; i2++) {
      const oldVNode = oldChildren[i2];
      const newVNode = newChildren[i2];
      const container = (
        // oldVNode may be an errored async setup() component inside Suspense
        // which will not have a mounted element
        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
        // of the Fragment itself so it can move its children.
        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
        // which also requires the correct parent container
        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
          // In other cases, the parent container is not actually used so we
          // just pass the block element here to avoid a DOM parentNode call.
          fallbackContainer
        )
      );
      patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);
    }
  };
  const patchProps = (el2, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {
    if (oldProps !== newProps) {
      if (oldProps !== EMPTY_OBJ) {
        for (const key in oldProps) {
          if (!isReservedProp(key) && !(key in newProps)) {
            hostPatchProp(el2, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
          }
        }
      }
      for (const key in newProps) {
        if (isReservedProp(key))
          continue;
        const next = newProps[key];
        const prev2 = oldProps[key];
        if (next !== prev2 && key !== "value") {
          hostPatchProp(el2, key, prev2, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
        }
      }
      if ("value" in newProps) {
        hostPatchProp(el2, "value", oldProps.value, newProps.value);
      }
    }
  };
  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
    if (fragmentSlotScopeIds) {
      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
    }
    if (n1 == null) {
      hostInsert(fragmentStartAnchor, container, anchor);
      hostInsert(fragmentEndAnchor, container, anchor);
      mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    } else {
      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
      // of renderSlot() with no valid children
      n1.dynamicChildren) {
        patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);
        if (
          // #2080 if the stable fragment has a key, it's a <template v-for> that may
          //  get moved around. Make sure all root level vnodes inherit el.
          // #2134 or if it's a component root, it may also get moved around
          // as the component is being moved.
          n2.key != null || parentComponent && n2 === parentComponent.subTree
        ) {
          traverseStaticChildren(
            n1,
            n2,
            true
            /* shallow */
          );
        }
      } else {
        patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
      }
    }
  };
  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    n2.slotScopeIds = slotScopeIds;
    if (n1 == null) {
      if (n2.shapeFlag & 512) {
        parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);
      } else {
        mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);
      }
    } else {
      updateComponent(n1, n2, optimized);
    }
  };
  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {
    const instance = initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense);
    if (isKeepAlive(initialVNode)) {
      instance.ctx.renderer = internals;
    }
    {
      setupComponent(instance);
    }
    if (instance.asyncDep) {
      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);
      if (!initialVNode.el) {
        const placeholder = instance.subTree = createVNode(Comment);
        processCommentNode(null, placeholder, container, anchor);
      }
      return;
    }
    setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);
  };
  const updateComponent = (n1, n2, optimized) => {
    const instance = n2.component = n1.component;
    if (shouldUpdateComponent(n1, n2, optimized)) {
      if (instance.asyncDep && !instance.asyncResolved) {
        updateComponentPreRender(instance, n2, optimized);
        return;
      } else {
        instance.next = n2;
        invalidateJob(instance.update);
        instance.update();
      }
    } else {
      n2.el = n1.el;
      instance.vnode = n2;
    }
  };
  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {
    const componentUpdateFn = () => {
      if (!instance.isMounted) {
        let vnodeHook;
        const { el: el2, props } = initialVNode;
        const { bm, m: m2, parent } = instance;
        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
        toggleRecurse(instance, false);
        if (bm) {
          invokeArrayFns(bm);
        }
        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {
          invokeVNodeHook(vnodeHook, parent, initialVNode);
        }
        toggleRecurse(instance, true);
        if (el2 && hydrateNode) {
          const hydrateSubTree = () => {
            instance.subTree = renderComponentRoot(instance);
            hydrateNode(el2, instance.subTree, instance, parentSuspense, null);
          };
          if (isAsyncWrapperVNode) {
            initialVNode.type.__asyncLoader().then(
              // note: we are moving the render call into an async callback,
              // which means it won't track dependencies - but it's ok because
              // a server-rendered async wrapper is already in resolved state
              // and it will never need to change.
              () => !instance.isUnmounted && hydrateSubTree()
            );
          } else {
            hydrateSubTree();
          }
        } else {
          const subTree = instance.subTree = renderComponentRoot(instance);
          patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);
          initialVNode.el = subTree.el;
        }
        if (m2) {
          queuePostRenderEffect(m2, parentSuspense);
        }
        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {
          const scopedInitialVNode = initialVNode;
          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);
        }
        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {
          instance.a && queuePostRenderEffect(instance.a, parentSuspense);
        }
        instance.isMounted = true;
        initialVNode = container = anchor = null;
      } else {
        let { next, bu, u: u2, parent, vnode } = instance;
        let originNext = next;
        let vnodeHook;
        toggleRecurse(instance, false);
        if (next) {
          next.el = vnode.el;
          updateComponentPreRender(instance, next, optimized);
        } else {
          next = vnode;
        }
        if (bu) {
          invokeArrayFns(bu);
        }
        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
          invokeVNodeHook(vnodeHook, parent, next, vnode);
        }
        toggleRecurse(instance, true);
        const nextTree = renderComponentRoot(instance);
        const prevTree = instance.subTree;
        instance.subTree = nextTree;
        patch(
          prevTree,
          nextTree,
          // parent may have changed if it's in a teleport
          hostParentNode(prevTree.el),
          // anchor may have changed if it's in a fragment
          getNextHostNode(prevTree),
          instance,
          parentSuspense,
          isSVG
        );
        next.el = nextTree.el;
        if (originNext === null) {
          updateHOCHostEl(instance, nextTree.el);
        }
        if (u2) {
          queuePostRenderEffect(u2, parentSuspense);
        }
        if (vnodeHook = next.props && next.props.onVnodeUpdated) {
          queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);
        }
      }
    };
    const effect2 = instance.effect = new ReactiveEffect(
      componentUpdateFn,
      () => queueJob(update),
      instance.scope
      // track it in component's effect scope
    );
    const update = instance.update = () => effect2.run();
    update.id = instance.uid;
    toggleRecurse(instance, true);
    update();
  };
  const updateComponentPreRender = (instance, nextVNode, optimized) => {
    nextVNode.component = instance;
    const prevProps = instance.vnode.props;
    instance.vnode = nextVNode;
    instance.next = null;
    updateProps(instance, nextVNode.props, prevProps, optimized);
    updateSlots(instance, nextVNode.children, optimized);
    pauseTracking();
    flushPreFlushCbs();
    resetTracking();
  };
  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {
    const c1 = n1 && n1.children;
    const prevShapeFlag = n1 ? n1.shapeFlag : 0;
    const c2 = n2.children;
    const { patchFlag, shapeFlag } = n2;
    if (patchFlag > 0) {
      if (patchFlag & 128) {
        patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        return;
      } else if (patchFlag & 256) {
        patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        return;
      }
    }
    if (shapeFlag & 8) {
      if (prevShapeFlag & 16) {
        unmountChildren(c1, parentComponent, parentSuspense);
      }
      if (c2 !== c1) {
        hostSetElementText(container, c2);
      }
    } else {
      if (prevShapeFlag & 16) {
        if (shapeFlag & 16) {
          patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else {
          unmountChildren(c1, parentComponent, parentSuspense, true);
        }
      } else {
        if (prevShapeFlag & 8) {
          hostSetElementText(container, "");
        }
        if (shapeFlag & 16) {
          mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        }
      }
    }
  };
  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    c1 = c1 || EMPTY_ARR;
    c2 = c2 || EMPTY_ARR;
    const oldLength = c1.length;
    const newLength = c2.length;
    const commonLength = Math.min(oldLength, newLength);
    let i2;
    for (i2 = 0; i2 < commonLength; i2++) {
      const nextChild = c2[i2] = optimized ? cloneIfMounted(c2[i2]) : normalizeVNode(c2[i2]);
      patch(c1[i2], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
    }
    if (oldLength > newLength) {
      unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);
    } else {
      mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);
    }
  };
  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
    let i2 = 0;
    const l2 = c2.length;
    let e1 = c1.length - 1;
    let e2 = l2 - 1;
    while (i2 <= e1 && i2 <= e2) {
      const n1 = c1[i2];
      const n2 = c2[i2] = optimized ? cloneIfMounted(c2[i2]) : normalizeVNode(c2[i2]);
      if (isSameVNodeType(n1, n2)) {
        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
      } else {
        break;
      }
      i2++;
    }
    while (i2 <= e1 && i2 <= e2) {
      const n1 = c1[e1];
      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);
      if (isSameVNodeType(n1, n2)) {
        patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
      } else {
        break;
      }
      e1--;
      e2--;
    }
    if (i2 > e1) {
      if (i2 <= e2) {
        const nextPos = e2 + 1;
        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
        while (i2 <= e2) {
          patch(null, c2[i2] = optimized ? cloneIfMounted(c2[i2]) : normalizeVNode(c2[i2]), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
          i2++;
        }
      }
    } else if (i2 > e2) {
      while (i2 <= e1) {
        unmount(c1[i2], parentComponent, parentSuspense, true);
        i2++;
      }
    } else {
      const s1 = i2;
      const s2 = i2;
      const keyToNewIndexMap = /* @__PURE__ */ new Map();
      for (i2 = s2; i2 <= e2; i2++) {
        const nextChild = c2[i2] = optimized ? cloneIfMounted(c2[i2]) : normalizeVNode(c2[i2]);
        if (nextChild.key != null) {
          keyToNewIndexMap.set(nextChild.key, i2);
        }
      }
      let j;
      let patched = 0;
      const toBePatched = e2 - s2 + 1;
      let moved = false;
      let maxNewIndexSoFar = 0;
      const newIndexToOldIndexMap = new Array(toBePatched);
      for (i2 = 0; i2 < toBePatched; i2++)
        newIndexToOldIndexMap[i2] = 0;
      for (i2 = s1; i2 <= e1; i2++) {
        const prevChild = c1[i2];
        if (patched >= toBePatched) {
          unmount(prevChild, parentComponent, parentSuspense, true);
          continue;
        }
        let newIndex;
        if (prevChild.key != null) {
          newIndex = keyToNewIndexMap.get(prevChild.key);
        } else {
          for (j = s2; j <= e2; j++) {
            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {
              newIndex = j;
              break;
            }
          }
        }
        if (newIndex === void 0) {
          unmount(prevChild, parentComponent, parentSuspense, true);
        } else {
          newIndexToOldIndexMap[newIndex - s2] = i2 + 1;
          if (newIndex >= maxNewIndexSoFar) {
            maxNewIndexSoFar = newIndex;
          } else {
            moved = true;
          }
          patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
          patched++;
        }
      }
      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
      j = increasingNewIndexSequence.length - 1;
      for (i2 = toBePatched - 1; i2 >= 0; i2--) {
        const nextIndex = s2 + i2;
        const nextChild = c2[nextIndex];
        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
        if (newIndexToOldIndexMap[i2] === 0) {
          patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        } else if (moved) {
          if (j < 0 || i2 !== increasingNewIndexSequence[j]) {
            move(
              nextChild,
              container,
              anchor,
              2
              /* MoveType.REORDER */
            );
          } else {
            j--;
          }
        }
      }
    }
  };
  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
    const { el: el2, type: type2, transition, children, shapeFlag } = vnode;
    if (shapeFlag & 6) {
      move(vnode.component.subTree, container, anchor, moveType);
      return;
    }
    if (shapeFlag & 128) {
      vnode.suspense.move(container, anchor, moveType);
      return;
    }
    if (shapeFlag & 64) {
      type2.move(vnode, container, anchor, internals);
      return;
    }
    if (type2 === Fragment) {
      hostInsert(el2, container, anchor);
      for (let i2 = 0; i2 < children.length; i2++) {
        move(children[i2], container, anchor, moveType);
      }
      hostInsert(vnode.anchor, container, anchor);
      return;
    }
    if (type2 === Static) {
      moveStaticNode(vnode, container, anchor);
      return;
    }
    const needTransition = moveType !== 2 && shapeFlag & 1 && transition;
    if (needTransition) {
      if (moveType === 0) {
        transition.beforeEnter(el2);
        hostInsert(el2, container, anchor);
        queuePostRenderEffect(() => transition.enter(el2), parentSuspense);
      } else {
        const { leave, delayLeave, afterLeave } = transition;
        const remove3 = () => hostInsert(el2, container, anchor);
        const performLeave = () => {
          leave(el2, () => {
            remove3();
            afterLeave && afterLeave();
          });
        };
        if (delayLeave) {
          delayLeave(el2, remove3, performLeave);
        } else {
          performLeave();
        }
      }
    } else {
      hostInsert(el2, container, anchor);
    }
  };
  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
    const { type: type2, props, ref: ref2, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;
    if (ref2 != null) {
      setRef(ref2, null, parentSuspense, vnode, true);
    }
    if (shapeFlag & 256) {
      parentComponent.ctx.deactivate(vnode);
      return;
    }
    const shouldInvokeDirs = shapeFlag & 1 && dirs;
    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
    let vnodeHook;
    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {
      invokeVNodeHook(vnodeHook, parentComponent, vnode);
    }
    if (shapeFlag & 6) {
      unmountComponent(vnode.component, parentSuspense, doRemove);
    } else {
      if (shapeFlag & 128) {
        vnode.suspense.unmount(parentSuspense, doRemove);
        return;
      }
      if (shouldInvokeDirs) {
        invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
      }
      if (shapeFlag & 64) {
        vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);
      } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments
      (type2 !== Fragment || patchFlag > 0 && patchFlag & 64)) {
        unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
      } else if (type2 === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
        unmountChildren(children, parentComponent, parentSuspense);
      }
      if (doRemove) {
        remove2(vnode);
      }
    }
    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {
      queuePostRenderEffect(() => {
        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
      }, parentSuspense);
    }
  };
  const remove2 = (vnode) => {
    const { type: type2, el: el2, anchor, transition } = vnode;
    if (type2 === Fragment) {
      {
        removeFragment(el2, anchor);
      }
      return;
    }
    if (type2 === Static) {
      removeStaticNode(vnode);
      return;
    }
    const performRemove = () => {
      hostRemove(el2);
      if (transition && !transition.persisted && transition.afterLeave) {
        transition.afterLeave();
      }
    };
    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
      const { leave, delayLeave } = transition;
      const performLeave = () => leave(el2, performRemove);
      if (delayLeave) {
        delayLeave(vnode.el, performRemove, performLeave);
      } else {
        performLeave();
      }
    } else {
      performRemove();
    }
  };
  const removeFragment = (cur, end) => {
    let next;
    while (cur !== end) {
      next = hostNextSibling(cur);
      hostRemove(cur);
      cur = next;
    }
    hostRemove(end);
  };
  const unmountComponent = (instance, parentSuspense, doRemove) => {
    const { bum, scope, update, subTree, um } = instance;
    if (bum) {
      invokeArrayFns(bum);
    }
    scope.stop();
    if (update) {
      update.active = false;
      unmount(subTree, instance, parentSuspense, doRemove);
    }
    if (um) {
      queuePostRenderEffect(um, parentSuspense);
    }
    queuePostRenderEffect(() => {
      instance.isUnmounted = true;
    }, parentSuspense);
    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
      parentSuspense.deps--;
      if (parentSuspense.deps === 0) {
        parentSuspense.resolve();
      }
    }
  };
  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
    for (let i2 = start; i2 < children.length; i2++) {
      unmount(children[i2], parentComponent, parentSuspense, doRemove, optimized);
    }
  };
  const getNextHostNode = (vnode) => {
    if (vnode.shapeFlag & 6) {
      return getNextHostNode(vnode.component.subTree);
    }
    if (vnode.shapeFlag & 128) {
      return vnode.suspense.next();
    }
    return hostNextSibling(vnode.anchor || vnode.el);
  };
  const render2 = (vnode, container, isSVG) => {
    if (vnode == null) {
      if (container._vnode) {
        unmount(container._vnode, null, null, true);
      }
    } else {
      patch(container._vnode || null, vnode, container, null, null, null, isSVG);
    }
    flushPreFlushCbs();
    flushPostFlushCbs();
    container._vnode = vnode;
  };
  const internals = {
    p: patch,
    um: unmount,
    m: move,
    r: remove2,
    mt: mountComponent,
    mc: mountChildren,
    pc: patchChildren,
    pbc: patchBlockChildren,
    n: getNextHostNode,
    o: options2
  };
  let hydrate2;
  let hydrateNode;
  if (createHydrationFns) {
    [hydrate2, hydrateNode] = createHydrationFns(internals);
  }
  return {
    render: render2,
    hydrate: hydrate2,
    createApp: createAppAPI(render2, hydrate2)
  };
}
function toggleRecurse({ effect: effect2, update }, allowed) {
  effect2.allowRecurse = update.allowRecurse = allowed;
}
function traverseStaticChildren(n1, n2, shallow = false) {
  const ch1 = n1.children;
  const ch2 = n2.children;
  if (isArray$1(ch1) && isArray$1(ch2)) {
    for (let i2 = 0; i2 < ch1.length; i2++) {
      const c1 = ch1[i2];
      let c2 = ch2[i2];
      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
          c2 = ch2[i2] = cloneIfMounted(ch2[i2]);
          c2.el = c1.el;
        }
        if (!shallow)
          traverseStaticChildren(c1, c2);
      }
      if (c2.type === Text) {
        c2.el = c1.el;
      }
    }
  }
}
function getSequence(arr) {
  const p2 = arr.slice();
  const result = [0];
  let i2, j, u2, v, c2;
  const len = arr.length;
  for (i2 = 0; i2 < len; i2++) {
    const arrI = arr[i2];
    if (arrI !== 0) {
      j = result[result.length - 1];
      if (arr[j] < arrI) {
        p2[i2] = j;
        result.push(i2);
        continue;
      }
      u2 = 0;
      v = result.length - 1;
      while (u2 < v) {
        c2 = u2 + v >> 1;
        if (arr[result[c2]] < arrI) {
          u2 = c2 + 1;
        } else {
          v = c2;
        }
      }
      if (arrI < arr[result[u2]]) {
        if (u2 > 0) {
          p2[i2] = result[u2 - 1];
        }
        result[u2] = i2;
      }
    }
  }
  u2 = result.length;
  v = result[u2 - 1];
  while (u2-- > 0) {
    result[u2] = v;
    v = p2[v];
  }
  return result;
}
const isTeleport = (type2) => type2.__isTeleport;
const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === "");
const isTargetSVG = (target2) => typeof SVGElement !== "undefined" && target2 instanceof SVGElement;
const resolveTarget = (props, select) => {
  const targetSelector = props && props.to;
  if (isString$4(targetSelector)) {
    if (!select) {
      return null;
    } else {
      const target2 = select(targetSelector);
      return target2;
    }
  } else {
    return targetSelector;
  }
};
const TeleportImpl = {
  __isTeleport: true,
  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
    const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert: insert2, querySelector, createText, createComment } } = internals;
    const disabled = isTeleportDisabled(n2.props);
    let { shapeFlag, children, dynamicChildren } = n2;
    if (n1 == null) {
      const placeholder = n2.el = createText("");
      const mainAnchor = n2.anchor = createText("");
      insert2(placeholder, container, anchor);
      insert2(mainAnchor, container, anchor);
      const target2 = n2.target = resolveTarget(n2.props, querySelector);
      const targetAnchor = n2.targetAnchor = createText("");
      if (target2) {
        insert2(targetAnchor, target2);
        isSVG = isSVG || isTargetSVG(target2);
      }
      const mount = (container2, anchor2) => {
        if (shapeFlag & 16) {
          mountChildren(children, container2, anchor2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
        }
      };
      if (disabled) {
        mount(container, mainAnchor);
      } else if (target2) {
        mount(target2, targetAnchor);
      }
    } else {
      n2.el = n1.el;
      const mainAnchor = n2.anchor = n1.anchor;
      const target2 = n2.target = n1.target;
      const targetAnchor = n2.targetAnchor = n1.targetAnchor;
      const wasDisabled = isTeleportDisabled(n1.props);
      const currentContainer = wasDisabled ? container : target2;
      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;
      isSVG = isSVG || isTargetSVG(target2);
      if (dynamicChildren) {
        patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);
        traverseStaticChildren(n1, n2, true);
      } else if (!optimized) {
        patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);
      }
      if (disabled) {
        if (!wasDisabled) {
          moveTeleport(
            n2,
            container,
            mainAnchor,
            internals,
            1
            /* TeleportMoveTypes.TOGGLE */
          );
        }
      } else {
        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
          const nextTarget = n2.target = resolveTarget(n2.props, querySelector);
          if (nextTarget) {
            moveTeleport(
              n2,
              nextTarget,
              null,
              internals,
              0
              /* TeleportMoveTypes.TARGET_CHANGE */
            );
          }
        } else if (wasDisabled) {
          moveTeleport(
            n2,
            target2,
            targetAnchor,
            internals,
            1
            /* TeleportMoveTypes.TOGGLE */
          );
        }
      }
    }
    updateCssVars(n2);
  },
  remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {
    const { shapeFlag, children, anchor, targetAnchor, target: target2, props } = vnode;
    if (target2) {
      hostRemove(targetAnchor);
    }
    if (doRemove || !isTeleportDisabled(props)) {
      hostRemove(anchor);
      if (shapeFlag & 16) {
        for (let i2 = 0; i2 < children.length; i2++) {
          const child = children[i2];
          unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);
        }
      }
    }
  },
  move: moveTeleport,
  hydrate: hydrateTeleport
};
function moveTeleport(vnode, container, parentAnchor, { o: { insert: insert2 }, m: move }, moveType = 2) {
  if (moveType === 0) {
    insert2(vnode.targetAnchor, container, parentAnchor);
  }
  const { el: el2, anchor, shapeFlag, children, props } = vnode;
  const isReorder = moveType === 2;
  if (isReorder) {
    insert2(el2, container, parentAnchor);
  }
  if (!isReorder || isTeleportDisabled(props)) {
    if (shapeFlag & 16) {
      for (let i2 = 0; i2 < children.length; i2++) {
        move(
          children[i2],
          container,
          parentAnchor,
          2
          /* MoveType.REORDER */
        );
      }
    }
  }
  if (isReorder) {
    insert2(anchor, container, parentAnchor);
  }
}
function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {
  const target2 = vnode.target = resolveTarget(vnode.props, querySelector);
  if (target2) {
    const targetNode = target2._lpa || target2.firstChild;
    if (vnode.shapeFlag & 16) {
      if (isTeleportDisabled(vnode.props)) {
        vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
        vnode.targetAnchor = targetNode;
      } else {
        vnode.anchor = nextSibling(node);
        let targetAnchor = targetNode;
        while (targetAnchor) {
          targetAnchor = nextSibling(targetAnchor);
          if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") {
            vnode.targetAnchor = targetAnchor;
            target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
            break;
          }
        }
        hydrateChildren(targetNode, vnode, target2, parentComponent, parentSuspense, slotScopeIds, optimized);
      }
    }
    updateCssVars(vnode);
  }
  return vnode.anchor && nextSibling(vnode.anchor);
}
const Teleport = TeleportImpl;
function updateCssVars(vnode) {
  const ctx = vnode.ctx;
  if (ctx && ctx.ut) {
    let node = vnode.children[0].el;
    while (node !== vnode.targetAnchor) {
      if (node.nodeType === 1)
        node.setAttribute("data-v-owner", ctx.uid);
      node = node.nextSibling;
    }
    ctx.ut();
  }
}
const Fragment = Symbol(void 0);
const Text = Symbol(void 0);
const Comment = Symbol(void 0);
const Static = Symbol(void 0);
const blockStack = [];
let currentBlock = null;
function openBlock(disableTracking = false) {
  blockStack.push(currentBlock = disableTracking ? null : []);
}
function closeBlock() {
  blockStack.pop();
  currentBlock = blockStack[blockStack.length - 1] || null;
}
let isBlockTreeEnabled = 1;
function setBlockTracking(value) {
  isBlockTreeEnabled += value;
}
function setupBlock(vnode) {
  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
  closeBlock();
  if (isBlockTreeEnabled > 0 && currentBlock) {
    currentBlock.push(vnode);
  }
  return vnode;
}
function createElementBlock(type2, props, children, patchFlag, dynamicProps, shapeFlag) {
  return setupBlock(createBaseVNode(
    type2,
    props,
    children,
    patchFlag,
    dynamicProps,
    shapeFlag,
    true
    /* isBlock */
  ));
}
function createBlock(type2, props, children, patchFlag, dynamicProps) {
  return setupBlock(createVNode(
    type2,
    props,
    children,
    patchFlag,
    dynamicProps,
    true
    /* isBlock: prevent a block from tracking itself */
  ));
}
function isVNode(value) {
  return value ? value.__v_isVNode === true : false;
}
function isSameVNodeType(n1, n2) {
  return n1.type === n2.type && n1.key === n2.key;
}
function transformVNodeArgs(transformer) {
}
const InternalObjectKey = `__vInternal`;
const normalizeKey = ({ key }) => key != null ? key : null;
const normalizeRef = ({ ref: ref2, ref_key, ref_for }) => {
  return ref2 != null ? isString$4(ref2) || isRef(ref2) || isFunction$3(ref2) ? { i: currentRenderingInstance, r: ref2, k: ref_key, f: !!ref_for } : ref2 : null;
};
function createBaseVNode(type2, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type2 === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
  const vnode = {
    __v_isVNode: true,
    __v_skip: true,
    type: type2,
    props,
    key: props && normalizeKey(props),
    ref: props && normalizeRef(props),
    scopeId: currentScopeId,
    slotScopeIds: null,
    children,
    component: null,
    suspense: null,
    ssContent: null,
    ssFallback: null,
    dirs: null,
    transition: null,
    el: null,
    anchor: null,
    target: null,
    targetAnchor: null,
    staticCount: 0,
    shapeFlag,
    patchFlag,
    dynamicProps,
    dynamicChildren: null,
    appContext: null,
    ctx: currentRenderingInstance
  };
  if (needFullChildrenNormalization) {
    normalizeChildren(vnode, children);
    if (shapeFlag & 128) {
      type2.normalize(vnode);
    }
  } else if (children) {
    vnode.shapeFlag |= isString$4(children) ? 8 : 16;
  }
  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
  !isBlockNode && // has current parent block
  currentBlock && // presence of a patch flag indicates this node needs patching on updates.
  // component nodes also should always be patched, because even if the
  // component doesn't need to update, it needs to persist the instance on to
  // the next vnode so that it can be properly unmounted later.
  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the
  // vnode should not be considered dynamic due to handler caching.
  vnode.patchFlag !== 32) {
    currentBlock.push(vnode);
  }
  return vnode;
}
const createVNode = _createVNode;
function _createVNode(type2, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
  if (!type2 || type2 === NULL_DYNAMIC_COMPONENT) {
    type2 = Comment;
  }
  if (isVNode(type2)) {
    const cloned = cloneVNode(
      type2,
      props,
      true
      /* mergeRef: true */
    );
    if (children) {
      normalizeChildren(cloned, children);
    }
    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
      if (cloned.shapeFlag & 6) {
        currentBlock[currentBlock.indexOf(type2)] = cloned;
      } else {
        currentBlock.push(cloned);
      }
    }
    cloned.patchFlag |= -2;
    return cloned;
  }
  if (isClassComponent(type2)) {
    type2 = type2.__vccOpts;
  }
  if (props) {
    props = guardReactiveProps(props);
    let { class: klass, style } = props;
    if (klass && !isString$4(klass)) {
      props.class = normalizeClass(klass);
    }
    if (isObject$4(style)) {
      if (isProxy(style) && !isArray$1(style)) {
        style = extend({}, style);
      }
      props.style = normalizeStyle(style);
    }
  }
  const shapeFlag = isString$4(type2) ? 1 : isSuspense(type2) ? 128 : isTeleport(type2) ? 64 : isObject$4(type2) ? 4 : isFunction$3(type2) ? 2 : 0;
  return createBaseVNode(type2, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);
}
function guardReactiveProps(props) {
  if (!props)
    return null;
  return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;
}
function cloneVNode(vnode, extraProps, mergeRef = false) {
  const { props, ref: ref2, patchFlag, children } = vnode;
  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;
  const cloned = {
    __v_isVNode: true,
    __v_skip: true,
    type: vnode.type,
    props: mergedProps,
    key: mergedProps && normalizeKey(mergedProps),
    ref: extraProps && extraProps.ref ? (
      // #2078 in the case of <component :is="vnode" ref="extra"/>
      // if the vnode itself already has a ref, cloneVNode will need to merge
      // the refs so the single vnode can be set on multiple refs
      mergeRef && ref2 ? isArray$1(ref2) ? ref2.concat(normalizeRef(extraProps)) : [ref2, normalizeRef(extraProps)] : normalizeRef(extraProps)
    ) : ref2,
    scopeId: vnode.scopeId,
    slotScopeIds: vnode.slotScopeIds,
    children,
    target: vnode.target,
    targetAnchor: vnode.targetAnchor,
    staticCount: vnode.staticCount,
    shapeFlag: vnode.shapeFlag,
    // if the vnode is cloned with extra props, we can no longer assume its
    // existing patch flag to be reliable and need to add the FULL_PROPS flag.
    // note: preserve flag for fragments since they use the flag for children
    // fast paths only.
    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,
    dynamicProps: vnode.dynamicProps,
    dynamicChildren: vnode.dynamicChildren,
    appContext: vnode.appContext,
    dirs: vnode.dirs,
    transition: vnode.transition,
    // These should technically only be non-null on mounted VNodes. However,
    // they *should* be copied for kept-alive vnodes. So we just always copy
    // them since them being non-null during a mount doesn't affect the logic as
    // they will simply be overwritten.
    component: vnode.component,
    suspense: vnode.suspense,
    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
    el: vnode.el,
    anchor: vnode.anchor,
    ctx: vnode.ctx,
    ce: vnode.ce
  };
  return cloned;
}
function createTextVNode(text3 = " ", flag = 0) {
  return createVNode(Text, null, text3, flag);
}
function createStaticVNode(content, numberOfNodes) {
  const vnode = createVNode(Static, null, content);
  vnode.staticCount = numberOfNodes;
  return vnode;
}
function createCommentVNode(text3 = "", asBlock = false) {
  return asBlock ? (openBlock(), createBlock(Comment, null, text3)) : createVNode(Comment, null, text3);
}
function normalizeVNode(child) {
  if (child == null || typeof child === "boolean") {
    return createVNode(Comment);
  } else if (isArray$1(child)) {
    return createVNode(
      Fragment,
      null,
      // #3666, avoid reference pollution when reusing vnode
      child.slice()
    );
  } else if (typeof child === "object") {
    return cloneIfMounted(child);
  } else {
    return createVNode(Text, null, String(child));
  }
}
function cloneIfMounted(child) {
  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
}
function normalizeChildren(vnode, children) {
  let type2 = 0;
  const { shapeFlag } = vnode;
  if (children == null) {
    children = null;
  } else if (isArray$1(children)) {
    type2 = 16;
  } else if (typeof children === "object") {
    if (shapeFlag & (1 | 64)) {
      const slot = children.default;
      if (slot) {
        slot._c && (slot._d = false);
        normalizeChildren(vnode, slot());
        slot._c && (slot._d = true);
      }
      return;
    } else {
      type2 = 32;
      const slotFlag = children._;
      if (!slotFlag && !(InternalObjectKey in children)) {
        children._ctx = currentRenderingInstance;
      } else if (slotFlag === 3 && currentRenderingInstance) {
        if (currentRenderingInstance.slots._ === 1) {
          children._ = 1;
        } else {
          children._ = 2;
          vnode.patchFlag |= 1024;
        }
      }
    }
  } else if (isFunction$3(children)) {
    children = { default: children, _ctx: currentRenderingInstance };
    type2 = 32;
  } else {
    children = String(children);
    if (shapeFlag & 64) {
      type2 = 16;
      children = [createTextVNode(children)];
    } else {
      type2 = 8;
    }
  }
  vnode.children = children;
  vnode.shapeFlag |= type2;
}
function mergeProps(...args) {
  const ret = {};
  for (let i2 = 0; i2 < args.length; i2++) {
    const toMerge = args[i2];
    for (const key in toMerge) {
      if (key === "class") {
        if (ret.class !== toMerge.class) {
          ret.class = normalizeClass([ret.class, toMerge.class]);
        }
      } else if (key === "style") {
        ret.style = normalizeStyle([ret.style, toMerge.style]);
      } else if (isOn(key)) {
        const existing = ret[key];
        const incoming = toMerge[key];
        if (incoming && existing !== incoming && !(isArray$1(existing) && existing.includes(incoming))) {
          ret[key] = existing ? [].concat(existing, incoming) : incoming;
        }
      } else if (key !== "") {
        ret[key] = toMerge[key];
      }
    }
  }
  return ret;
}
function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
  callWithAsyncErrorHandling(hook, instance, 7, [
    vnode,
    prevVNode
  ]);
}
const emptyAppContext = createAppContext();
let uid = 0;
function createComponentInstance(vnode, parent, suspense) {
  const type2 = vnode.type;
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
  const instance = {
    uid: uid++,
    vnode,
    type: type2,
    parent,
    appContext,
    root: null,
    next: null,
    subTree: null,
    effect: null,
    update: null,
    scope: new EffectScope(
      true
      /* detached */
    ),
    render: null,
    proxy: null,
    exposed: null,
    exposeProxy: null,
    withProxy: null,
    provides: parent ? parent.provides : Object.create(appContext.provides),
    accessCache: null,
    renderCache: [],
    // local resolved assets
    components: null,
    directives: null,
    // resolved props and emits options
    propsOptions: normalizePropsOptions(type2, appContext),
    emitsOptions: normalizeEmitsOptions(type2, appContext),
    // emit
    emit: null,
    emitted: null,
    // props default value
    propsDefaults: EMPTY_OBJ,
    // inheritAttrs
    inheritAttrs: type2.inheritAttrs,
    // state
    ctx: EMPTY_OBJ,
    data: EMPTY_OBJ,
    props: EMPTY_OBJ,
    attrs: EMPTY_OBJ,
    slots: EMPTY_OBJ,
    refs: EMPTY_OBJ,
    setupState: EMPTY_OBJ,
    setupContext: null,
    // suspense related
    suspense,
    suspenseId: suspense ? suspense.pendingId : 0,
    asyncDep: null,
    asyncResolved: false,
    // lifecycle hooks
    // not using enums here because it results in computed properties
    isMounted: false,
    isUnmounted: false,
    isDeactivated: false,
    bc: null,
    c: null,
    bm: null,
    m: null,
    bu: null,
    u: null,
    um: null,
    bum: null,
    da: null,
    a: null,
    rtg: null,
    rtc: null,
    ec: null,
    sp: null
  };
  {
    instance.ctx = { _: instance };
  }
  instance.root = parent ? parent.root : instance;
  instance.emit = emit.bind(null, instance);
  if (vnode.ce) {
    vnode.ce(instance);
  }
  return instance;
}
let currentInstance = null;
const getCurrentInstance = () => currentInstance || currentRenderingInstance;
const setCurrentInstance = (instance) => {
  currentInstance = instance;
  instance.scope.on();
};
const unsetCurrentInstance = () => {
  currentInstance && currentInstance.scope.off();
  currentInstance = null;
};
function isStatefulComponent(instance) {
  return instance.vnode.shapeFlag & 4;
}
let isInSSRComponentSetup = false;
function setupComponent(instance, isSSR = false) {
  isInSSRComponentSetup = isSSR;
  const { props, children } = instance.vnode;
  const isStateful = isStatefulComponent(instance);
  initProps(instance, props, isStateful, isSSR);
  initSlots(instance, children);
  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
  isInSSRComponentSetup = false;
  return setupResult;
}
function setupStatefulComponent(instance, isSSR) {
  const Component = instance.type;
  instance.accessCache = /* @__PURE__ */ Object.create(null);
  instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));
  const { setup: setup24 } = Component;
  if (setup24) {
    const setupContext = instance.setupContext = setup24.length > 1 ? createSetupContext(instance) : null;
    setCurrentInstance(instance);
    pauseTracking();
    const setupResult = callWithErrorHandling(setup24, instance, 0, [instance.props, setupContext]);
    resetTracking();
    unsetCurrentInstance();
    if (isPromise(setupResult)) {
      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
      if (isSSR) {
        return setupResult.then((resolvedResult) => {
          handleSetupResult(instance, resolvedResult, isSSR);
        }).catch((e) => {
          handleError(
            e,
            instance,
            0
            /* ErrorCodes.SETUP_FUNCTION */
          );
        });
      } else {
        instance.asyncDep = setupResult;
      }
    } else {
      handleSetupResult(instance, setupResult, isSSR);
    }
  } else {
    finishComponentSetup(instance, isSSR);
  }
}
function handleSetupResult(instance, setupResult, isSSR) {
  if (isFunction$3(setupResult)) {
    if (instance.type.__ssrInlineRender) {
      instance.ssrRender = setupResult;
    } else {
      instance.render = setupResult;
    }
  } else if (isObject$4(setupResult)) {
    instance.setupState = proxyRefs(setupResult);
  } else
    ;
  finishComponentSetup(instance, isSSR);
}
let compile$2;
let installWithProxy;
function registerRuntimeCompiler(_compile) {
  compile$2 = _compile;
  installWithProxy = (i2) => {
    if (i2.render._rc) {
      i2.withProxy = new Proxy(i2.ctx, RuntimeCompiledPublicInstanceProxyHandlers);
    }
  };
}
const isRuntimeOnly = () => !compile$2;
function finishComponentSetup(instance, isSSR, skipOptions) {
  const Component = instance.type;
  if (!instance.render) {
    if (!isSSR && compile$2 && !Component.render) {
      const template = Component.template || resolveMergedOptions(instance).template;
      if (template) {
        const { isCustomElement, compilerOptions } = instance.appContext.config;
        const { delimiters, compilerOptions: componentCompilerOptions } = Component;
        const finalCompilerOptions = extend(extend({
          isCustomElement,
          delimiters
        }, compilerOptions), componentCompilerOptions);
        Component.render = compile$2(template, finalCompilerOptions);
      }
    }
    instance.render = Component.render || NOOP;
    if (installWithProxy) {
      installWithProxy(instance);
    }
  }
  {
    setCurrentInstance(instance);
    pauseTracking();
    applyOptions(instance);
    resetTracking();
    unsetCurrentInstance();
  }
}
function createAttrsProxy(instance) {
  return new Proxy(instance.attrs, {
    get(target2, key) {
      track(instance, "get", "$attrs");
      return target2[key];
    }
  });
}
function createSetupContext(instance) {
  const expose = (exposed) => {
    instance.exposed = exposed || {};
  };
  let attrs;
  {
    return {
      get attrs() {
        return attrs || (attrs = createAttrsProxy(instance));
      },
      slots: instance.slots,
      emit: instance.emit,
      expose
    };
  }
}
function getExposeProxy(instance) {
  if (instance.exposed) {
    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
      get(target2, key) {
        if (key in target2) {
          return target2[key];
        } else if (key in publicPropertiesMap) {
          return publicPropertiesMap[key](instance);
        }
      },
      has(target2, key) {
        return key in target2 || key in publicPropertiesMap;
      }
    }));
  }
}
function getComponentName(Component, includeInferred = true) {
  return isFunction$3(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
}
function isClassComponent(value) {
  return isFunction$3(value) && "__vccOpts" in value;
}
const computed = (getterOrOptions, debugOptions) => {
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
};
function defineProps() {
  return null;
}
function defineEmits() {
  return null;
}
function defineExpose(exposed) {
}
function withDefaults(props, defaults) {
  return null;
}
function useSlots() {
  return getContext().slots;
}
function useAttrs() {
  return getContext().attrs;
}
function getContext() {
  const i2 = getCurrentInstance();
  return i2.setupContext || (i2.setupContext = createSetupContext(i2));
}
function mergeDefaults(raw, defaults) {
  const props = isArray$1(raw) ? raw.reduce((normalized, p2) => (normalized[p2] = {}, normalized), {}) : raw;
  for (const key in defaults) {
    const opt = props[key];
    if (opt) {
      if (isArray$1(opt) || isFunction$3(opt)) {
        props[key] = { type: opt, default: defaults[key] };
      } else {
        opt.default = defaults[key];
      }
    } else if (opt === null) {
      props[key] = { default: defaults[key] };
    } else
      ;
  }
  return props;
}
function createPropsRestProxy(props, excludedKeys) {
  const ret = {};
  for (const key in props) {
    if (!excludedKeys.includes(key)) {
      Object.defineProperty(ret, key, {
        enumerable: true,
        get: () => props[key]
      });
    }
  }
  return ret;
}
function withAsyncContext(getAwaitable) {
  const ctx = getCurrentInstance();
  let awaitable = getAwaitable();
  unsetCurrentInstance();
  if (isPromise(awaitable)) {
    awaitable = awaitable.catch((e) => {
      setCurrentInstance(ctx);
      throw e;
    });
  }
  return [awaitable, () => setCurrentInstance(ctx)];
}
function h$1(type2, propsOrChildren, children) {
  const l2 = arguments.length;
  if (l2 === 2) {
    if (isObject$4(propsOrChildren) && !isArray$1(propsOrChildren)) {
      if (isVNode(propsOrChildren)) {
        return createVNode(type2, null, [propsOrChildren]);
      }
      return createVNode(type2, propsOrChildren);
    } else {
      return createVNode(type2, null, propsOrChildren);
    }
  } else {
    if (l2 > 3) {
      children = Array.prototype.slice.call(arguments, 2);
    } else if (l2 === 3 && isVNode(children)) {
      children = [children];
    }
    return createVNode(type2, propsOrChildren, children);
  }
}
const ssrContextKey = Symbol(``);
const useSSRContext = () => {
  {
    const ctx = inject(ssrContextKey);
    return ctx;
  }
};
function initCustomFormatter() {
  {
    return;
  }
}
function withMemo(memo, render2, cache2, index2) {
  const cached = cache2[index2];
  if (cached && isMemoSame(cached, memo)) {
    return cached;
  }
  const ret = render2();
  ret.memo = memo.slice();
  return cache2[index2] = ret;
}
function isMemoSame(cached, memo) {
  const prev2 = cached.memo;
  if (prev2.length != memo.length) {
    return false;
  }
  for (let i2 = 0; i2 < prev2.length; i2++) {
    if (hasChanged(prev2[i2], memo[i2])) {
      return false;
    }
  }
  if (isBlockTreeEnabled > 0 && currentBlock) {
    currentBlock.push(cached);
  }
  return true;
}
const version$9 = "3.2.47";
const _ssrUtils = {
  createComponentInstance,
  setupComponent,
  renderComponentRoot,
  setCurrentRenderingInstance,
  isVNode,
  normalizeVNode
};
const ssrUtils = _ssrUtils;
const resolveFilter = null;
const compatUtils = null;
const svgNS = "http://www.w3.org/2000/svg";
const doc = typeof document !== "undefined" ? document : null;
const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
const nodeOps = {
  insert: (child, parent, anchor) => {
    parent.insertBefore(child, anchor || null);
  },
  remove: (child) => {
    const parent = child.parentNode;
    if (parent) {
      parent.removeChild(child);
    }
  },
  createElement: (tag, isSVG, is, props) => {
    const el2 = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);
    if (tag === "select" && props && props.multiple != null) {
      el2.setAttribute("multiple", props.multiple);
    }
    return el2;
  },
  createText: (text3) => doc.createTextNode(text3),
  createComment: (text3) => doc.createComment(text3),
  setText: (node, text3) => {
    node.nodeValue = text3;
  },
  setElementText: (el2, text3) => {
    el2.textContent = text3;
  },
  parentNode: (node) => node.parentNode,
  nextSibling: (node) => node.nextSibling,
  querySelector: (selector) => doc.querySelector(selector),
  setScopeId(el2, id2) {
    el2.setAttribute(id2, "");
  },
  // __UNSAFE__
  // Reason: innerHTML.
  // Static content here can only come from compiled templates.
  // As long as the user only uses trusted templates, this is safe.
  insertStaticContent(content, parent, anchor, isSVG, start, end) {
    const before = anchor ? anchor.previousSibling : parent.lastChild;
    if (start && (start === end || start.nextSibling)) {
      while (true) {
        parent.insertBefore(start.cloneNode(true), anchor);
        if (start === end || !(start = start.nextSibling))
          break;
      }
    } else {
      templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;
      const template = templateContainer.content;
      if (isSVG) {
        const wrapper = template.firstChild;
        while (wrapper.firstChild) {
          template.appendChild(wrapper.firstChild);
        }
        template.removeChild(wrapper);
      }
      parent.insertBefore(template, anchor);
    }
    return [
      // first
      before ? before.nextSibling : parent.firstChild,
      // last
      anchor ? anchor.previousSibling : parent.lastChild
    ];
  }
};
function patchClass(el2, value, isSVG) {
  const transitionClasses = el2._vtc;
  if (transitionClasses) {
    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
  }
  if (value == null) {
    el2.removeAttribute("class");
  } else if (isSVG) {
    el2.setAttribute("class", value);
  } else {
    el2.className = value;
  }
}
function patchStyle(el2, prev2, next) {
  const style = el2.style;
  const isCssString = isString$4(next);
  if (next && !isCssString) {
    if (prev2 && !isString$4(prev2)) {
      for (const key in prev2) {
        if (next[key] == null) {
          setStyle(style, key, "");
        }
      }
    }
    for (const key in next) {
      setStyle(style, key, next[key]);
    }
  } else {
    const currentDisplay = style.display;
    if (isCssString) {
      if (prev2 !== next) {
        style.cssText = next;
      }
    } else if (prev2) {
      el2.removeAttribute("style");
    }
    if ("_vod" in el2) {
      style.display = currentDisplay;
    }
  }
}
const importantRE = /\s*!important$/;
function setStyle(style, name2, val) {
  if (isArray$1(val)) {
    val.forEach((v) => setStyle(style, name2, v));
  } else {
    if (val == null)
      val = "";
    if (name2.startsWith("--")) {
      style.setProperty(name2, val);
    } else {
      const prefixed = autoPrefix(style, name2);
      if (importantRE.test(val)) {
        style.setProperty(hyphenate(prefixed), val.replace(importantRE, ""), "important");
      } else {
        style[prefixed] = val;
      }
    }
  }
}
const prefixes = ["Webkit", "Moz", "ms"];
const prefixCache = {};
function autoPrefix(style, rawName) {
  const cached = prefixCache[rawName];
  if (cached) {
    return cached;
  }
  let name2 = camelize(rawName);
  if (name2 !== "filter" && name2 in style) {
    return prefixCache[rawName] = name2;
  }
  name2 = capitalize$1(name2);
  for (let i2 = 0; i2 < prefixes.length; i2++) {
    const prefixed = prefixes[i2] + name2;
    if (prefixed in style) {
      return prefixCache[rawName] = prefixed;
    }
  }
  return rawName;
}
const xlinkNS = "http://www.w3.org/1999/xlink";
function patchAttr(el2, key, value, isSVG, instance) {
  if (isSVG && key.startsWith("xlink:")) {
    if (value == null) {
      el2.removeAttributeNS(xlinkNS, key.slice(6, key.length));
    } else {
      el2.setAttributeNS(xlinkNS, key, value);
    }
  } else {
    const isBoolean2 = isSpecialBooleanAttr(key);
    if (value == null || isBoolean2 && !includeBooleanAttr(value)) {
      el2.removeAttribute(key);
    } else {
      el2.setAttribute(key, isBoolean2 ? "" : value);
    }
  }
}
function patchDOMProp(el2, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {
  if (key === "innerHTML" || key === "textContent") {
    if (prevChildren) {
      unmountChildren(prevChildren, parentComponent, parentSuspense);
    }
    el2[key] = value == null ? "" : value;
    return;
  }
  if (key === "value" && el2.tagName !== "PROGRESS" && // custom elements may use _value internally
  !el2.tagName.includes("-")) {
    el2._value = value;
    const newValue = value == null ? "" : value;
    if (el2.value !== newValue || // #4956: always set for OPTION elements because its value falls back to
    // textContent if no value attribute is present. And setting .value for
    // OPTION has no side effect
    el2.tagName === "OPTION") {
      el2.value = newValue;
    }
    if (value == null) {
      el2.removeAttribute(key);
    }
    return;
  }
  let needRemove = false;
  if (value === "" || value == null) {
    const type2 = typeof el2[key];
    if (type2 === "boolean") {
      value = includeBooleanAttr(value);
    } else if (value == null && type2 === "string") {
      value = "";
      needRemove = true;
    } else if (type2 === "number") {
      value = 0;
      needRemove = true;
    }
  }
  try {
    el2[key] = value;
  } catch (e) {
  }
  needRemove && el2.removeAttribute(key);
}
function addEventListener$1(el2, event, handler, options2) {
  el2.addEventListener(event, handler, options2);
}
function removeEventListener$1(el2, event, handler, options2) {
  el2.removeEventListener(event, handler, options2);
}
function patchEvent(el2, rawName, prevValue, nextValue, instance = null) {
  const invokers = el2._vei || (el2._vei = {});
  const existingInvoker = invokers[rawName];
  if (nextValue && existingInvoker) {
    existingInvoker.value = nextValue;
  } else {
    const [name2, options2] = parseName(rawName);
    if (nextValue) {
      const invoker = invokers[rawName] = createInvoker(nextValue, instance);
      addEventListener$1(el2, name2, invoker, options2);
    } else if (existingInvoker) {
      removeEventListener$1(el2, name2, existingInvoker, options2);
      invokers[rawName] = void 0;
    }
  }
}
const optionsModifierRE = /(?:Once|Passive|Capture)$/;
function parseName(name2) {
  let options2;
  if (optionsModifierRE.test(name2)) {
    options2 = {};
    let m2;
    while (m2 = name2.match(optionsModifierRE)) {
      name2 = name2.slice(0, name2.length - m2[0].length);
      options2[m2[0].toLowerCase()] = true;
    }
  }
  const event = name2[2] === ":" ? name2.slice(3) : hyphenate(name2.slice(2));
  return [event, options2];
}
let cachedNow = 0;
const p$2 = /* @__PURE__ */ Promise.resolve();
const getNow = () => cachedNow || (p$2.then(() => cachedNow = 0), cachedNow = Date.now());
function createInvoker(initialValue, instance) {
  const invoker = (e) => {
    if (!e._vts) {
      e._vts = Date.now();
    } else if (e._vts <= invoker.attached) {
      return;
    }
    callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5, [e]);
  };
  invoker.value = initialValue;
  invoker.attached = getNow();
  return invoker;
}
function patchStopImmediatePropagation(e, value) {
  if (isArray$1(value)) {
    const originalStop = e.stopImmediatePropagation;
    e.stopImmediatePropagation = () => {
      originalStop.call(e);
      e._stopped = true;
    };
    return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));
  } else {
    return value;
  }
}
const nativeOnRE = /^on[a-z]/;
const patchProp = (el2, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
  if (key === "class") {
    patchClass(el2, nextValue, isSVG);
  } else if (key === "style") {
    patchStyle(el2, prevValue, nextValue);
  } else if (isOn(key)) {
    if (!isModelListener(key)) {
      patchEvent(el2, key, prevValue, nextValue, parentComponent);
    }
  } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el2, key, nextValue, isSVG)) {
    patchDOMProp(el2, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);
  } else {
    if (key === "true-value") {
      el2._trueValue = nextValue;
    } else if (key === "false-value") {
      el2._falseValue = nextValue;
    }
    patchAttr(el2, key, nextValue, isSVG);
  }
};
function shouldSetAsProp(el2, key, value, isSVG) {
  if (isSVG) {
    if (key === "innerHTML" || key === "textContent") {
      return true;
    }
    if (key in el2 && nativeOnRE.test(key) && isFunction$3(value)) {
      return true;
    }
    return false;
  }
  if (key === "spellcheck" || key === "draggable" || key === "translate") {
    return false;
  }
  if (key === "form") {
    return false;
  }
  if (key === "list" && el2.tagName === "INPUT") {
    return false;
  }
  if (key === "type" && el2.tagName === "TEXTAREA") {
    return false;
  }
  if (nativeOnRE.test(key) && isString$4(value)) {
    return false;
  }
  return key in el2;
}
function defineCustomElement(options2, hydrate2) {
  const Comp = defineComponent(options2);
  class VueCustomElement extends VueElement {
    constructor(initialProps) {
      super(Comp, initialProps, hydrate2);
    }
  }
  VueCustomElement.def = Comp;
  return VueCustomElement;
}
const defineSSRCustomElement = (options2) => {
  return defineCustomElement(options2, hydrate);
};
const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
};
class VueElement extends BaseClass {
  constructor(_def, _props = {}, hydrate2) {
    super();
    this._def = _def;
    this._props = _props;
    this._instance = null;
    this._connected = false;
    this._resolved = false;
    this._numberProps = null;
    if (this.shadowRoot && hydrate2) {
      hydrate2(this._createVNode(), this.shadowRoot);
    } else {
      this.attachShadow({ mode: "open" });
      if (!this._def.__asyncLoader) {
        this._resolveProps(this._def);
      }
    }
  }
  connectedCallback() {
    this._connected = true;
    if (!this._instance) {
      if (this._resolved) {
        this._update();
      } else {
        this._resolveDef();
      }
    }
  }
  disconnectedCallback() {
    this._connected = false;
    nextTick(() => {
      if (!this._connected) {
        render$1e(null, this.shadowRoot);
        this._instance = null;
      }
    });
  }
  /**
   * resolve inner component definition (handle possible async component)
   */
  _resolveDef() {
    this._resolved = true;
    for (let i2 = 0; i2 < this.attributes.length; i2++) {
      this._setAttr(this.attributes[i2].name);
    }
    new MutationObserver((mutations) => {
      for (const m2 of mutations) {
        this._setAttr(m2.attributeName);
      }
    }).observe(this, { attributes: true });
    const resolve3 = (def2, isAsync = false) => {
      const { props, styles } = def2;
      let numberProps;
      if (props && !isArray$1(props)) {
        for (const key in props) {
          const opt = props[key];
          if (opt === Number || opt && opt.type === Number) {
            if (key in this._props) {
              this._props[key] = toNumber(this._props[key]);
            }
            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;
          }
        }
      }
      this._numberProps = numberProps;
      if (isAsync) {
        this._resolveProps(def2);
      }
      this._applyStyles(styles);
      this._update();
    };
    const asyncDef = this._def.__asyncLoader;
    if (asyncDef) {
      asyncDef().then((def2) => resolve3(def2, true));
    } else {
      resolve3(this._def);
    }
  }
  _resolveProps(def2) {
    const { props } = def2;
    const declaredPropKeys = isArray$1(props) ? props : Object.keys(props || {});
    for (const key of Object.keys(this)) {
      if (key[0] !== "_" && declaredPropKeys.includes(key)) {
        this._setProp(key, this[key], true, false);
      }
    }
    for (const key of declaredPropKeys.map(camelize)) {
      Object.defineProperty(this, key, {
        get() {
          return this._getProp(key);
        },
        set(val) {
          this._setProp(key, val);
        }
      });
    }
  }
  _setAttr(key) {
    let value = this.getAttribute(key);
    const camelKey = camelize(key);
    if (this._numberProps && this._numberProps[camelKey]) {
      value = toNumber(value);
    }
    this._setProp(camelKey, value, false);
  }
  /**
   * @internal
   */
  _getProp(key) {
    return this._props[key];
  }
  /**
   * @internal
   */
  _setProp(key, val, shouldReflect = true, shouldUpdate = true) {
    if (val !== this._props[key]) {
      this._props[key] = val;
      if (shouldUpdate && this._instance) {
        this._update();
      }
      if (shouldReflect) {
        if (val === true) {
          this.setAttribute(hyphenate(key), "");
        } else if (typeof val === "string" || typeof val === "number") {
          this.setAttribute(hyphenate(key), val + "");
        } else if (!val) {
          this.removeAttribute(hyphenate(key));
        }
      }
    }
  }
  _update() {
    render$1e(this._createVNode(), this.shadowRoot);
  }
  _createVNode() {
    const vnode = createVNode(this._def, extend({}, this._props));
    if (!this._instance) {
      vnode.ce = (instance) => {
        this._instance = instance;
        instance.isCE = true;
        const dispatch = (event, args) => {
          this.dispatchEvent(new CustomEvent(event, {
            detail: args
          }));
        };
        instance.emit = (event, ...args) => {
          dispatch(event, args);
          if (hyphenate(event) !== event) {
            dispatch(hyphenate(event), args);
          }
        };
        let parent = this;
        while (parent = parent && (parent.parentNode || parent.host)) {
          if (parent instanceof VueElement) {
            instance.parent = parent._instance;
            instance.provides = parent._instance.provides;
            break;
          }
        }
      };
    }
    return vnode;
  }
  _applyStyles(styles) {
    if (styles) {
      styles.forEach((css) => {
        const s2 = document.createElement("style");
        s2.textContent = css;
        this.shadowRoot.appendChild(s2);
      });
    }
  }
}
function useCssModule(name2 = "$style") {
  {
    const instance = getCurrentInstance();
    if (!instance) {
      return EMPTY_OBJ;
    }
    const modules = instance.type.__cssModules;
    if (!modules) {
      return EMPTY_OBJ;
    }
    const mod = modules[name2];
    if (!mod) {
      return EMPTY_OBJ;
    }
    return mod;
  }
}
function useCssVars(getter) {
  const instance = getCurrentInstance();
  if (!instance) {
    return;
  }
  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {
    Array.from(document.querySelectorAll(`[data-v-owner="${instance.uid}"]`)).forEach((node) => setVarsOnNode(node, vars));
  };
  const setVars = () => {
    const vars = getter(instance.proxy);
    setVarsOnVNode(instance.subTree, vars);
    updateTeleports(vars);
  };
  watchPostEffect(setVars);
  onMounted(() => {
    const ob = new MutationObserver(setVars);
    ob.observe(instance.subTree.el.parentNode, { childList: true });
    onUnmounted(() => ob.disconnect());
  });
}
function setVarsOnVNode(vnode, vars) {
  if (vnode.shapeFlag & 128) {
    const suspense = vnode.suspense;
    vnode = suspense.activeBranch;
    if (suspense.pendingBranch && !suspense.isHydrating) {
      suspense.effects.push(() => {
        setVarsOnVNode(suspense.activeBranch, vars);
      });
    }
  }
  while (vnode.component) {
    vnode = vnode.component.subTree;
  }
  if (vnode.shapeFlag & 1 && vnode.el) {
    setVarsOnNode(vnode.el, vars);
  } else if (vnode.type === Fragment) {
    vnode.children.forEach((c2) => setVarsOnVNode(c2, vars));
  } else if (vnode.type === Static) {
    let { el: el2, anchor } = vnode;
    while (el2) {
      setVarsOnNode(el2, vars);
      if (el2 === anchor)
        break;
      el2 = el2.nextSibling;
    }
  }
}
function setVarsOnNode(el2, vars) {
  if (el2.nodeType === 1) {
    const style = el2.style;
    for (const key in vars) {
      style.setProperty(`--${key}`, vars[key]);
    }
  }
}
const TRANSITION$1 = "transition";
const ANIMATION = "animation";
const Transition = (props, { slots }) => h$1(BaseTransition, resolveTransitionProps(props), slots);
Transition.displayName = "Transition";
const DOMTransitionPropsValidators = {
  name: String,
  type: String,
  css: {
    type: Boolean,
    default: true
  },
  duration: [String, Number, Object],
  enterFromClass: String,
  enterActiveClass: String,
  enterToClass: String,
  appearFromClass: String,
  appearActiveClass: String,
  appearToClass: String,
  leaveFromClass: String,
  leaveActiveClass: String,
  leaveToClass: String
};
const TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend({}, BaseTransition.props, DOMTransitionPropsValidators);
const callHook = (hook, args = []) => {
  if (isArray$1(hook)) {
    hook.forEach((h2) => h2(...args));
  } else if (hook) {
    hook(...args);
  }
};
const hasExplicitCallback = (hook) => {
  return hook ? isArray$1(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;
};
function resolveTransitionProps(rawProps) {
  const baseProps = {};
  for (const key in rawProps) {
    if (!(key in DOMTransitionPropsValidators)) {
      baseProps[key] = rawProps[key];
    }
  }
  if (rawProps.css === false) {
    return baseProps;
  }
  const { name: name2 = "v", type: type2, duration, enterFromClass = `${name2}-enter-from`, enterActiveClass = `${name2}-enter-active`, enterToClass = `${name2}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name2}-leave-from`, leaveActiveClass = `${name2}-leave-active`, leaveToClass = `${name2}-leave-to` } = rawProps;
  const durations = normalizeDuration(duration);
  const enterDuration = durations && durations[0];
  const leaveDuration = durations && durations[1];
  const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;
  const finishEnter = (el2, isAppear, done) => {
    removeTransitionClass(el2, isAppear ? appearToClass : enterToClass);
    removeTransitionClass(el2, isAppear ? appearActiveClass : enterActiveClass);
    done && done();
  };
  const finishLeave = (el2, done) => {
    el2._isLeaving = false;
    removeTransitionClass(el2, leaveFromClass);
    removeTransitionClass(el2, leaveToClass);
    removeTransitionClass(el2, leaveActiveClass);
    done && done();
  };
  const makeEnterHook = (isAppear) => {
    return (el2, done) => {
      const hook = isAppear ? onAppear : onEnter;
      const resolve3 = () => finishEnter(el2, isAppear, done);
      callHook(hook, [el2, resolve3]);
      nextFrame$2(() => {
        removeTransitionClass(el2, isAppear ? appearFromClass : enterFromClass);
        addTransitionClass(el2, isAppear ? appearToClass : enterToClass);
        if (!hasExplicitCallback(hook)) {
          whenTransitionEnds(el2, type2, enterDuration, resolve3);
        }
      });
    };
  };
  return extend(baseProps, {
    onBeforeEnter(el2) {
      callHook(onBeforeEnter, [el2]);
      addTransitionClass(el2, enterFromClass);
      addTransitionClass(el2, enterActiveClass);
    },
    onBeforeAppear(el2) {
      callHook(onBeforeAppear, [el2]);
      addTransitionClass(el2, appearFromClass);
      addTransitionClass(el2, appearActiveClass);
    },
    onEnter: makeEnterHook(false),
    onAppear: makeEnterHook(true),
    onLeave(el2, done) {
      el2._isLeaving = true;
      const resolve3 = () => finishLeave(el2, done);
      addTransitionClass(el2, leaveFromClass);
      forceReflow();
      addTransitionClass(el2, leaveActiveClass);
      nextFrame$2(() => {
        if (!el2._isLeaving) {
          return;
        }
        removeTransitionClass(el2, leaveFromClass);
        addTransitionClass(el2, leaveToClass);
        if (!hasExplicitCallback(onLeave)) {
          whenTransitionEnds(el2, type2, leaveDuration, resolve3);
        }
      });
      callHook(onLeave, [el2, resolve3]);
    },
    onEnterCancelled(el2) {
      finishEnter(el2, false);
      callHook(onEnterCancelled, [el2]);
    },
    onAppearCancelled(el2) {
      finishEnter(el2, true);
      callHook(onAppearCancelled, [el2]);
    },
    onLeaveCancelled(el2) {
      finishLeave(el2);
      callHook(onLeaveCancelled, [el2]);
    }
  });
}
function normalizeDuration(duration) {
  if (duration == null) {
    return null;
  } else if (isObject$4(duration)) {
    return [NumberOf(duration.enter), NumberOf(duration.leave)];
  } else {
    const n = NumberOf(duration);
    return [n, n];
  }
}
function NumberOf(val) {
  const res = toNumber(val);
  return res;
}
function addTransitionClass(el2, cls) {
  cls.split(/\s+/).forEach((c2) => c2 && el2.classList.add(c2));
  (el2._vtc || (el2._vtc = /* @__PURE__ */ new Set())).add(cls);
}
function removeTransitionClass(el2, cls) {
  cls.split(/\s+/).forEach((c2) => c2 && el2.classList.remove(c2));
  const { _vtc } = el2;
  if (_vtc) {
    _vtc.delete(cls);
    if (!_vtc.size) {
      el2._vtc = void 0;
    }
  }
}
function nextFrame$2(cb) {
  requestAnimationFrame(() => {
    requestAnimationFrame(cb);
  });
}
let endId = 0;
function whenTransitionEnds(el2, expectedType, explicitTimeout, resolve3) {
  const id2 = el2._endId = ++endId;
  const resolveIfNotStale = () => {
    if (id2 === el2._endId) {
      resolve3();
    }
  };
  if (explicitTimeout) {
    return setTimeout(resolveIfNotStale, explicitTimeout);
  }
  const { type: type2, timeout, propCount } = getTransitionInfo(el2, expectedType);
  if (!type2) {
    return resolve3();
  }
  const endEvent = type2 + "end";
  let ended = 0;
  const end = () => {
    el2.removeEventListener(endEvent, onEnd);
    resolveIfNotStale();
  };
  const onEnd = (e) => {
    if (e.target === el2 && ++ended >= propCount) {
      end();
    }
  };
  setTimeout(() => {
    if (ended < propCount) {
      end();
    }
  }, timeout + 1);
  el2.addEventListener(endEvent, onEnd);
}
function getTransitionInfo(el2, expectedType) {
  const styles = window.getComputedStyle(el2);
  const getStyleProperties = (key) => (styles[key] || "").split(", ");
  const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`);
  const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`);
  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
  const animationTimeout = getTimeout(animationDelays, animationDurations);
  let type2 = null;
  let timeout = 0;
  let propCount = 0;
  if (expectedType === TRANSITION$1) {
    if (transitionTimeout > 0) {
      type2 = TRANSITION$1;
      timeout = transitionTimeout;
      propCount = transitionDurations.length;
    }
  } else if (expectedType === ANIMATION) {
    if (animationTimeout > 0) {
      type2 = ANIMATION;
      timeout = animationTimeout;
      propCount = animationDurations.length;
    }
  } else {
    timeout = Math.max(transitionTimeout, animationTimeout);
    type2 = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;
    propCount = type2 ? type2 === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;
  }
  const hasTransform = type2 === TRANSITION$1 && /\b(transform|all)(,|$)/.test(getStyleProperties(`${TRANSITION$1}Property`).toString());
  return {
    type: type2,
    timeout,
    propCount,
    hasTransform
  };
}
function getTimeout(delays, durations) {
  while (delays.length < durations.length) {
    delays = delays.concat(delays);
  }
  return Math.max(...durations.map((d2, i2) => toMs(d2) + toMs(delays[i2])));
}
function toMs(s2) {
  return Number(s2.slice(0, -1).replace(",", ".")) * 1e3;
}
function forceReflow() {
  return document.body.offsetHeight;
}
const positionMap = /* @__PURE__ */ new WeakMap();
const newPositionMap = /* @__PURE__ */ new WeakMap();
const TransitionGroupImpl = {
  name: "TransitionGroup",
  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {
    tag: String,
    moveClass: String
  }),
  setup(props, { slots }) {
    const instance = getCurrentInstance();
    const state = useTransitionState();
    let prevChildren;
    let children;
    onUpdated(() => {
      if (!prevChildren.length) {
        return;
      }
      const moveClass = props.moveClass || `${props.name || "v"}-move`;
      if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
        return;
      }
      prevChildren.forEach(callPendingCbs);
      prevChildren.forEach(recordPosition);
      const movedChildren = prevChildren.filter(applyTranslation);
      forceReflow();
      movedChildren.forEach((c2) => {
        const el2 = c2.el;
        const style = el2.style;
        addTransitionClass(el2, moveClass);
        style.transform = style.webkitTransform = style.transitionDuration = "";
        const cb = el2._moveCb = (e) => {
          if (e && e.target !== el2) {
            return;
          }
          if (!e || /transform$/.test(e.propertyName)) {
            el2.removeEventListener("transitionend", cb);
            el2._moveCb = null;
            removeTransitionClass(el2, moveClass);
          }
        };
        el2.addEventListener("transitionend", cb);
      });
    });
    return () => {
      const rawProps = toRaw(props);
      const cssTransitionProps = resolveTransitionProps(rawProps);
      let tag = rawProps.tag || Fragment;
      prevChildren = children;
      children = slots.default ? getTransitionRawChildren(slots.default()) : [];
      for (let i2 = 0; i2 < children.length; i2++) {
        const child = children[i2];
        if (child.key != null) {
          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
        }
      }
      if (prevChildren) {
        for (let i2 = 0; i2 < prevChildren.length; i2++) {
          const child = prevChildren[i2];
          setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
          positionMap.set(child, child.el.getBoundingClientRect());
        }
      }
      return createVNode(tag, null, children);
    };
  }
};
const removeMode = (props) => delete props.mode;
/* @__PURE__ */ removeMode(TransitionGroupImpl.props);
const TransitionGroup = TransitionGroupImpl;
function callPendingCbs(c2) {
  const el2 = c2.el;
  if (el2._moveCb) {
    el2._moveCb();
  }
  if (el2._enterCb) {
    el2._enterCb();
  }
}
function recordPosition(c2) {
  newPositionMap.set(c2, c2.el.getBoundingClientRect());
}
function applyTranslation(c2) {
  const oldPos = positionMap.get(c2);
  const newPos = newPositionMap.get(c2);
  const dx = oldPos.left - newPos.left;
  const dy = oldPos.top - newPos.top;
  if (dx || dy) {
    const s2 = c2.el.style;
    s2.transform = s2.webkitTransform = `translate(${dx}px,${dy}px)`;
    s2.transitionDuration = "0s";
    return c2;
  }
}
function hasCSSTransform(el2, root2, moveClass) {
  const clone2 = el2.cloneNode();
  if (el2._vtc) {
    el2._vtc.forEach((cls) => {
      cls.split(/\s+/).forEach((c2) => c2 && clone2.classList.remove(c2));
    });
  }
  moveClass.split(/\s+/).forEach((c2) => c2 && clone2.classList.add(c2));
  clone2.style.display = "none";
  const container = root2.nodeType === 1 ? root2 : root2.parentNode;
  container.appendChild(clone2);
  const { hasTransform } = getTransitionInfo(clone2);
  container.removeChild(clone2);
  return hasTransform;
}
const getModelAssigner = (vnode) => {
  const fn = vnode.props["onUpdate:modelValue"] || false;
  return isArray$1(fn) ? (value) => invokeArrayFns(fn, value) : fn;
};
function onCompositionStart(e) {
  e.target.composing = true;
}
function onCompositionEnd(e) {
  const target2 = e.target;
  if (target2.composing) {
    target2.composing = false;
    target2.dispatchEvent(new Event("input"));
  }
}
const vModelText = {
  created(el2, { modifiers: { lazy, trim: trim2, number: number2 } }, vnode) {
    el2._assign = getModelAssigner(vnode);
    const castToNumber = number2 || vnode.props && vnode.props.type === "number";
    addEventListener$1(el2, lazy ? "change" : "input", (e) => {
      if (e.target.composing)
        return;
      let domValue = el2.value;
      if (trim2) {
        domValue = domValue.trim();
      }
      if (castToNumber) {
        domValue = looseToNumber(domValue);
      }
      el2._assign(domValue);
    });
    if (trim2) {
      addEventListener$1(el2, "change", () => {
        el2.value = el2.value.trim();
      });
    }
    if (!lazy) {
      addEventListener$1(el2, "compositionstart", onCompositionStart);
      addEventListener$1(el2, "compositionend", onCompositionEnd);
      addEventListener$1(el2, "change", onCompositionEnd);
    }
  },
  // set value on mounted so it's after min/max for type="range"
  mounted(el2, { value }) {
    el2.value = value == null ? "" : value;
  },
  beforeUpdate(el2, { value, modifiers: { lazy, trim: trim2, number: number2 } }, vnode) {
    el2._assign = getModelAssigner(vnode);
    if (el2.composing)
      return;
    if (document.activeElement === el2 && el2.type !== "range") {
      if (lazy) {
        return;
      }
      if (trim2 && el2.value.trim() === value) {
        return;
      }
      if ((number2 || el2.type === "number") && looseToNumber(el2.value) === value) {
        return;
      }
    }
    const newValue = value == null ? "" : value;
    if (el2.value !== newValue) {
      el2.value = newValue;
    }
  }
};
const vModelCheckbox = {
  // #4096 array checkboxes need to be deep traversed
  deep: true,
  created(el2, _2, vnode) {
    el2._assign = getModelAssigner(vnode);
    addEventListener$1(el2, "change", () => {
      const modelValue = el2._modelValue;
      const elementValue = getValue(el2);
      const checked = el2.checked;
      const assign2 = el2._assign;
      if (isArray$1(modelValue)) {
        const index2 = looseIndexOf(modelValue, elementValue);
        const found = index2 !== -1;
        if (checked && !found) {
          assign2(modelValue.concat(elementValue));
        } else if (!checked && found) {
          const filtered = [...modelValue];
          filtered.splice(index2, 1);
          assign2(filtered);
        }
      } else if (isSet(modelValue)) {
        const cloned = new Set(modelValue);
        if (checked) {
          cloned.add(elementValue);
        } else {
          cloned.delete(elementValue);
        }
        assign2(cloned);
      } else {
        assign2(getCheckboxValue(el2, checked));
      }
    });
  },
  // set initial checked on mount to wait for true-value/false-value
  mounted: setChecked,
  beforeUpdate(el2, binding, vnode) {
    el2._assign = getModelAssigner(vnode);
    setChecked(el2, binding, vnode);
  }
};
function setChecked(el2, { value, oldValue }, vnode) {
  el2._modelValue = value;
  if (isArray$1(value)) {
    el2.checked = looseIndexOf(value, vnode.props.value) > -1;
  } else if (isSet(value)) {
    el2.checked = value.has(vnode.props.value);
  } else if (value !== oldValue) {
    el2.checked = looseEqual(value, getCheckboxValue(el2, true));
  }
}
const vModelRadio = {
  created(el2, { value }, vnode) {
    el2.checked = looseEqual(value, vnode.props.value);
    el2._assign = getModelAssigner(vnode);
    addEventListener$1(el2, "change", () => {
      el2._assign(getValue(el2));
    });
  },
  beforeUpdate(el2, { value, oldValue }, vnode) {
    el2._assign = getModelAssigner(vnode);
    if (value !== oldValue) {
      el2.checked = looseEqual(value, vnode.props.value);
    }
  }
};
const vModelSelect = {
  // <select multiple> value need to be deep traversed
  deep: true,
  created(el2, { value, modifiers: { number: number2 } }, vnode) {
    const isSetModel = isSet(value);
    addEventListener$1(el2, "change", () => {
      const selectedVal = Array.prototype.filter.call(el2.options, (o2) => o2.selected).map((o2) => number2 ? looseToNumber(getValue(o2)) : getValue(o2));
      el2._assign(el2.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]);
    });
    el2._assign = getModelAssigner(vnode);
  },
  // set value in mounted & updated because <select> relies on its children
  // <option>s.
  mounted(el2, { value }) {
    setSelected(el2, value);
  },
  beforeUpdate(el2, _binding, vnode) {
    el2._assign = getModelAssigner(vnode);
  },
  updated(el2, { value }) {
    setSelected(el2, value);
  }
};
function setSelected(el2, value) {
  const isMultiple = el2.multiple;
  if (isMultiple && !isArray$1(value) && !isSet(value)) {
    return;
  }
  for (let i2 = 0, l2 = el2.options.length; i2 < l2; i2++) {
    const option = el2.options[i2];
    const optionValue = getValue(option);
    if (isMultiple) {
      if (isArray$1(value)) {
        option.selected = looseIndexOf(value, optionValue) > -1;
      } else {
        option.selected = value.has(optionValue);
      }
    } else {
      if (looseEqual(getValue(option), value)) {
        if (el2.selectedIndex !== i2)
          el2.selectedIndex = i2;
        return;
      }
    }
  }
  if (!isMultiple && el2.selectedIndex !== -1) {
    el2.selectedIndex = -1;
  }
}
function getValue(el2) {
  return "_value" in el2 ? el2._value : el2.value;
}
function getCheckboxValue(el2, checked) {
  const key = checked ? "_trueValue" : "_falseValue";
  return key in el2 ? el2[key] : checked;
}
const vModelDynamic = {
  created(el2, binding, vnode) {
    callModelHook(el2, binding, vnode, null, "created");
  },
  mounted(el2, binding, vnode) {
    callModelHook(el2, binding, vnode, null, "mounted");
  },
  beforeUpdate(el2, binding, vnode, prevVNode) {
    callModelHook(el2, binding, vnode, prevVNode, "beforeUpdate");
  },
  updated(el2, binding, vnode, prevVNode) {
    callModelHook(el2, binding, vnode, prevVNode, "updated");
  }
};
function resolveDynamicModel(tagName, type2) {
  switch (tagName) {
    case "SELECT":
      return vModelSelect;
    case "TEXTAREA":
      return vModelText;
    default:
      switch (type2) {
        case "checkbox":
          return vModelCheckbox;
        case "radio":
          return vModelRadio;
        default:
          return vModelText;
      }
  }
}
function callModelHook(el2, binding, vnode, prevVNode, hook) {
  const modelToUse = resolveDynamicModel(el2.tagName, vnode.props && vnode.props.type);
  const fn = modelToUse[hook];
  fn && fn(el2, binding, vnode, prevVNode);
}
function initVModelForSSR() {
  vModelText.getSSRProps = ({ value }) => ({ value });
  vModelRadio.getSSRProps = ({ value }, vnode) => {
    if (vnode.props && looseEqual(vnode.props.value, value)) {
      return { checked: true };
    }
  };
  vModelCheckbox.getSSRProps = ({ value }, vnode) => {
    if (isArray$1(value)) {
      if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {
        return { checked: true };
      }
    } else if (isSet(value)) {
      if (vnode.props && value.has(vnode.props.value)) {
        return { checked: true };
      }
    } else if (value) {
      return { checked: true };
    }
  };
  vModelDynamic.getSSRProps = (binding, vnode) => {
    if (typeof vnode.type !== "string") {
      return;
    }
    const modelToUse = resolveDynamicModel(
      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase
      vnode.type.toUpperCase(),
      vnode.props && vnode.props.type
    );
    if (modelToUse.getSSRProps) {
      return modelToUse.getSSRProps(binding, vnode);
    }
  };
}
const systemModifiers = ["ctrl", "shift", "alt", "meta"];
const modifierGuards = {
  stop: (e) => e.stopPropagation(),
  prevent: (e) => e.preventDefault(),
  self: (e) => e.target !== e.currentTarget,
  ctrl: (e) => !e.ctrlKey,
  shift: (e) => !e.shiftKey,
  alt: (e) => !e.altKey,
  meta: (e) => !e.metaKey,
  left: (e) => "button" in e && e.button !== 0,
  middle: (e) => "button" in e && e.button !== 1,
  right: (e) => "button" in e && e.button !== 2,
  exact: (e, modifiers) => systemModifiers.some((m2) => e[`${m2}Key`] && !modifiers.includes(m2))
};
const withModifiers = (fn, modifiers) => {
  return (event, ...args) => {
    for (let i2 = 0; i2 < modifiers.length; i2++) {
      const guard = modifierGuards[modifiers[i2]];
      if (guard && guard(event, modifiers))
        return;
    }
    return fn(event, ...args);
  };
};
const keyNames = {
  esc: "escape",
  space: " ",
  up: "arrow-up",
  left: "arrow-left",
  right: "arrow-right",
  down: "arrow-down",
  delete: "backspace"
};
const withKeys = (fn, modifiers) => {
  return (event) => {
    if (!("key" in event)) {
      return;
    }
    const eventKey = hyphenate(event.key);
    if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {
      return fn(event);
    }
  };
};
const vShow = {
  beforeMount(el2, { value }, { transition }) {
    el2._vod = el2.style.display === "none" ? "" : el2.style.display;
    if (transition && value) {
      transition.beforeEnter(el2);
    } else {
      setDisplay(el2, value);
    }
  },
  mounted(el2, { value }, { transition }) {
    if (transition && value) {
      transition.enter(el2);
    }
  },
  updated(el2, { value, oldValue }, { transition }) {
    if (!value === !oldValue)
      return;
    if (transition) {
      if (value) {
        transition.beforeEnter(el2);
        setDisplay(el2, true);
        transition.enter(el2);
      } else {
        transition.leave(el2, () => {
          setDisplay(el2, false);
        });
      }
    } else {
      setDisplay(el2, value);
    }
  },
  beforeUnmount(el2, { value }) {
    setDisplay(el2, value);
  }
};
function setDisplay(el2, value) {
  el2.style.display = value ? el2._vod : "none";
}
function initVShowForSSR() {
  vShow.getSSRProps = ({ value }) => {
    if (!value) {
      return { style: { display: "none" } };
    }
  };
}
const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
let renderer$1;
let enabledHydration = false;
function ensureRenderer() {
  return renderer$1 || (renderer$1 = createRenderer(rendererOptions));
}
function ensureHydrationRenderer() {
  renderer$1 = enabledHydration ? renderer$1 : createHydrationRenderer(rendererOptions);
  enabledHydration = true;
  return renderer$1;
}
const render$1e = (...args) => {
  ensureRenderer().render(...args);
};
const hydrate = (...args) => {
  ensureHydrationRenderer().hydrate(...args);
};
const createApp = (...args) => {
  const app2 = ensureRenderer().createApp(...args);
  const { mount } = app2;
  app2.mount = (containerOrSelector) => {
    const container = normalizeContainer(containerOrSelector);
    if (!container)
      return;
    const component = app2._component;
    if (!isFunction$3(component) && !component.render && !component.template) {
      component.template = container.innerHTML;
    }
    container.innerHTML = "";
    const proxy = mount(container, false, container instanceof SVGElement);
    if (container instanceof Element) {
      container.removeAttribute("v-cloak");
      container.setAttribute("data-v-app", "");
    }
    return proxy;
  };
  return app2;
};
const createSSRApp = (...args) => {
  const app2 = ensureHydrationRenderer().createApp(...args);
  const { mount } = app2;
  app2.mount = (containerOrSelector) => {
    const container = normalizeContainer(containerOrSelector);
    if (container) {
      return mount(container, true, container instanceof SVGElement);
    }
  };
  return app2;
};
function normalizeContainer(container) {
  if (isString$4(container)) {
    const res = document.querySelector(container);
    return res;
  }
  return container;
}
let ssrDirectiveInitialized = false;
const initDirectivesForSSR = () => {
  if (!ssrDirectiveInitialized) {
    ssrDirectiveInitialized = true;
    initVModelForSSR();
    initVShowForSSR();
  }
};
const compile$1 = () => {
};
const vue_runtime_esmBundler = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  BaseTransition,
  Comment,
  EffectScope,
  Fragment,
  KeepAlive,
  ReactiveEffect,
  Static,
  Suspense,
  Teleport,
  Text,
  Transition,
  TransitionGroup,
  VueElement,
  assertNumber,
  callWithAsyncErrorHandling,
  callWithErrorHandling,
  camelize,
  capitalize: capitalize$1,
  cloneVNode,
  compatUtils,
  compile: compile$1,
  computed,
  createApp,
  createBlock,
  createCommentVNode,
  createElementBlock,
  createElementVNode: createBaseVNode,
  createHydrationRenderer,
  createPropsRestProxy,
  createRenderer,
  createSSRApp,
  createSlots,
  createStaticVNode,
  createTextVNode,
  createVNode,
  customRef,
  defineAsyncComponent,
  defineComponent,
  defineCustomElement,
  defineEmits,
  defineExpose,
  defineProps,
  defineSSRCustomElement,
  get devtools() {
    return devtools$1;
  },
  effect,
  effectScope,
  getCurrentInstance,
  getCurrentScope,
  getTransitionRawChildren,
  guardReactiveProps,
  h: h$1,
  handleError,
  hydrate,
  initCustomFormatter,
  initDirectivesForSSR,
  inject,
  isMemoSame,
  isProxy,
  isReactive,
  isReadonly,
  isRef,
  isRuntimeOnly,
  isShallow,
  isVNode,
  markRaw,
  mergeDefaults,
  mergeProps,
  nextTick,
  normalizeClass,
  normalizeProps,
  normalizeStyle,
  onActivated,
  onBeforeMount,
  onBeforeUnmount,
  onBeforeUpdate,
  onDeactivated,
  onErrorCaptured,
  onMounted,
  onRenderTracked,
  onRenderTriggered,
  onScopeDispose,
  onServerPrefetch,
  onUnmounted,
  onUpdated,
  openBlock,
  popScopeId,
  provide,
  proxyRefs,
  pushScopeId,
  queuePostFlushCb,
  reactive,
  readonly,
  ref,
  registerRuntimeCompiler,
  render: render$1e,
  renderList,
  renderSlot,
  resolveComponent,
  resolveDirective,
  resolveDynamicComponent,
  resolveFilter,
  resolveTransitionHooks,
  setBlockTracking,
  setDevtoolsHook,
  setTransitionHooks,
  shallowReactive,
  shallowReadonly,
  shallowRef,
  ssrContextKey,
  ssrUtils,
  stop,
  toDisplayString: toDisplayString$1,
  toHandlerKey,
  toHandlers,
  toRaw,
  toRef,
  toRefs,
  transformVNodeArgs,
  triggerRef,
  unref,
  useAttrs,
  useCssModule,
  useCssVars,
  useSSRContext,
  useSlots,
  useTransitionState,
  vModelCheckbox,
  vModelDynamic,
  vModelRadio,
  vModelSelect,
  vModelText,
  vShow,
  version: version$9,
  warn: warn$1,
  watch,
  watchEffect,
  watchPostEffect,
  watchSyncEffect,
  withAsyncContext,
  withCtx,
  withDefaults,
  withDirectives,
  withKeys,
  withMemo,
  withModifiers,
  withScopeId
}, Symbol.toStringTag, { value: "Module" }));
const HeaderBar_HeaderBarQueryDocument$1 = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "HeaderBar_HeaderBarQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSelected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "isGlobalMode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "versions" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "current" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "released" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "latest" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "released" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }] } }] };
const App_DevRelaunchDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "App_DevRelaunch" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "action" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "DevRelaunchAction" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "devRelaunch" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "action" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "action" } } }] }] } }] };
const MainLaunchpadQueryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "MainLaunchpadQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isE2EConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFullConfigReady" } }, { "kind": "Field", "name": { "kind": "Name", "value": "needsLegacyConfigMigration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "invokedFromCli" } }, { "kind": "Field", "name": { "kind": "Name", "value": "scaffoldedFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportedBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "frameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "allBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "erroredFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "packagesToInstall" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "package" } }, { "kind": "Field", "name": { "kind": "Name", "value": "minVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "detectedVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "satisfied" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "installDependenciesCommand" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "majorVersionWelcomeDismissed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "wasBrowserSetInCLI" } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "isGlobalMode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GlobalProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }] } }] } }] } }] };
const Main_ResetErrorsAndLoadConfigDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Main_ResetErrorsAndLoadConfig" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "resetErrorAndLoadConfig" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "id" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isE2EConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFullConfigReady" } }, { "kind": "Field", "name": { "kind": "Name", "value": "needsLegacyConfigMigration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "invokedFromCli" } }, { "kind": "Field", "name": { "kind": "Name", "value": "scaffoldedFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportedBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "frameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "allBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "erroredFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "packagesToInstall" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "package" } }, { "kind": "Field", "name": { "kind": "Name", "value": "minVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "detectedVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "satisfied" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "installDependenciesCommand" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "majorVersionWelcomeDismissed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "wasBrowserSetInCLI" } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "isGlobalMode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GlobalProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }] } }] } }] } }] } }] };
const Main_LaunchProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Main_LaunchProject" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "TestingTypeEnum" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "launchOpenProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "setProjectPreferencesInGlobalCache" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "testingType" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }] } }] } }] } }] };
const GlobalPage_AddProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "GlobalPage_addProject" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "open" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } }, "defaultValue": { "kind": "BooleanValue", "value": true } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "addProject" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "path" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "open" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "open" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GlobalProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }] } }] } }] } }] };
const GlobalPage_RemoveProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "GlobalPage_RemoveProject" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "removeProject" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "path" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GlobalProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }] } }] } }] } }] };
const GlobalPage_OpenDirectoryInIdeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "GlobalPage_OpenDirectoryInIDE" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "openDirectoryInIDE" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "path" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } } }] }] } }] };
const GlobalPage_OpenInFinderDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "GlobalPage_OpenInFinder" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "openInFinder" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "path" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } } }] }] } }] };
const GlobalProjectCard_SetCurrentProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "GlobalProjectCard_setCurrentProject" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setCurrentProject" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "path" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "path" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isE2EConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFullConfigReady" } }, { "kind": "Field", "name": { "kind": "Name", "value": "needsLegacyConfigMigration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "invokedFromCli" } }, { "kind": "Field", "name": { "kind": "Name", "value": "scaffoldedFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportedBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "frameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "allBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "erroredFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "packagesToInstall" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "package" } }, { "kind": "Field", "name": { "kind": "Name", "value": "minVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "detectedVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "satisfied" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "installDependenciesCommand" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "majorVersionWelcomeDismissed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "wasBrowserSetInCLI" } }, { "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "isGlobalMode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "GlobalProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectRoot" } }] } }] } }] } }] } }] };
const MigrationWizardQueryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "MigrationWizardQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "versions" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "current" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "filteredSteps" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCurrentStep" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCompleted" } }, { "kind": "Field", "name": { "kind": "Name", "value": "index" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "shouldMigratePreExtension" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomIntegrationFolder" } }, { "kind": "Field", "name": { "kind": "Name", "value": "specFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "before" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "parts" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "text" } }, { "kind": "Field", "name": { "kind": "Name", "value": "highlight" } }, { "kind": "Field", "name": { "kind": "Name", "value": "group" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "after" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "parts" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "text" } }, { "kind": "Field", "name": { "kind": "Name", "value": "highlight" } }, { "kind": "Field", "name": { "kind": "Name", "value": "group" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "manualFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "completed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "files" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "moved" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "before" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "parts" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "text" } }, { "kind": "Field", "name": { "kind": "Name", "value": "highlight" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "after" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "parts" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "text" } }, { "kind": "Field", "name": { "kind": "Name", "value": "highlight" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileNameBefore" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileNameAfter" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configBeforeCode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configAfterCode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomIntegrationTestFiles" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomComponentFolder" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomComponentTestFiles" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUsingTypeScript" } }] } }] } }] };
const MigrationWizard_RenameSpecsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MigrationWizard_RenameSpecs" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "skip" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "before" } }, "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "after" } }, "type": { "kind": "ListType", "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migrateRenameSpecs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "skip" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "skip" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "before" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "before" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "after" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "after" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "filteredSteps" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCurrentStep" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCompleted" } }] } }] } }] } }] } }] };
const MigrationWizard_RenameSpecsFolderDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MigrationWizard_RenameSpecsFolder" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migrateRenameSpecsFolder" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "configFileNameBefore" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configFileNameAfter" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configBeforeCode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "configAfterCode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomIntegrationFolder" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomIntegrationTestFiles" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomComponentFolder" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasCustomComponentTestFiles" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUsingTypeScript" } }, { "kind": "Field", "name": { "kind": "Name", "value": "manualFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "completed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "files" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "moved" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "filteredSteps" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCurrentStep" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCompleted" } }] } }] } }] } }] } }] };
const MigrationWizard_SkipManualRenameDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MigrationWizard_SkipManualRename" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migrateSkipManualRename" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "filteredSteps" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCurrentStep" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCompleted" } }] } }] } }] } }] } }] };
const MigrationWizard_RenameSupportDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MigrationWizard_RenameSupport" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migrateRenameSupport" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "filteredSteps" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCurrentStep" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCompleted" } }] } }] } }] } }] } }] };
const MigrationWizard_FinishedRenamingComponentSpecsDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MigrationWizard_FinishedRenamingComponentSpecs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "finishedRenamingComponentSpecs" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "filteredSteps" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCurrentStep" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCompleted" } }] } }] } }] } }] } }] };
const MigrationWizard_ConvertFileDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MigrationWizard_ConvertFile" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migrateConfigFile" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "filteredSteps" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCurrentStep" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCompleted" } }] } }] } }] } }] } }] };
const MigrationWizard_ReconfigureComponentTestingDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "MigrationWizard_ReconfigureComponentTesting" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migrateComponentTesting" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "needsLegacyConfigMigration" } }] } }] } }] } }] };
const RenameSpecsManual_CloseWatcherDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "RenameSpecsManual_CloseWatcher" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "migrateCloseManualRenameWatcher" } }] } }] };
const EnvironmentSetup_DetectionChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "EnvironmentSetup_DetectionChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "frameworkDetectionChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportedBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "frameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "allBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "erroredFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }] } }] } }] } }] };
const EnvironmentSetup_WizardUpdateDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "EnvironmentSetup_wizardUpdate" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "WizardUpdateInput" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "wizardUpdate" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "input" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportedBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "frameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "allBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "erroredFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }] } }] } }] } }] };
const EnvironmentSetup_ClearTestingTypeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "EnvironmentSetup_ClearTestingType" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "clearCurrentTestingType" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }] } }] } }] } }] };
const InstallDependencies_ScaffoldFilesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "InstallDependencies_scaffoldFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "scaffoldTestingType" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "scaffoldedFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }] } }] } }] } }] } }] };
const Wizard_InstalledPackagesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "Wizard_InstalledPackages" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "packagesToInstall" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "package" } }, { "kind": "Field", "name": { "kind": "Name", "value": "minVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "detectedVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "satisfied" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "installDependenciesCommand" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }] } }] } }] };
const OpenBrowserDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "OpenBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFocusSupported" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browserStatus" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }] } }] };
const OpenBrowser_ClearTestingTypeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenBrowser_ClearTestingType" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "clearCurrentTestingType" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }] } }] } }] } }] };
const OpenBrowser_LaunchProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenBrowser_LaunchProject" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "TestingTypeEnum" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "launchOpenProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "setProjectPreferencesInGlobalCache" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "testingType" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }] } }] } }] } }] };
const OpenBrowser_CloseBrowserDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenBrowser_CloseBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "closeBrowser" } }] } }] };
const OpenBrowser_FocusActiveBrowserWindowDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenBrowser_FocusActiveBrowserWindow" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "focusActiveBrowserWindow" } }] } }] };
const OpenBrowser_ResetLatestVersionTelemetryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenBrowser_ResetLatestVersionTelemetry" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "resetLatestVersionTelemetry" } }] } }] };
const OpenBrowserList_SetBrowserDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenBrowserList_SetBrowser" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "launchpadSetBrowser" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "id" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFocusSupported" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "browserStatus" } }] } }] } }] };
const OpenBrowserList_BrowserStatusChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "OpenBrowserList_browserStatusChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserStatusChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "browserStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFocusSupported" } }] } }] } }] } }] };
const ScaffoldedFiles_CompleteSetupDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ScaffoldedFiles_completeSetup" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "completeSetup" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "scaffoldedFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "status" } }] } }] } }] } }] };
const TestingTypeSelectionDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "TestingTypeSelection" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "TestingTypeEnum" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setAndLoadCurrentTestingType" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "testingType" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "testingType" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isE2EConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingConfigFile" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isLoadingNodeEvents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "scaffoldedFiles" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }, { "kind": "Field", "name": { "kind": "Name", "value": "contents" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fileExtension" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "bundler" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportedBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "frameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "supportStatus" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "category" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "allBundlers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "type" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "erroredFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "path" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "packagesToInstall" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "description" } }, { "kind": "Field", "name": { "kind": "Name", "value": "package" } }, { "kind": "Field", "name": { "kind": "Name", "value": "minVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "detectedVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "satisfied" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "installDependenciesCommand" } }] } }] } }] } }] };
const WarningList_RemoveWarningDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "WarningList_removeWarning" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "dismissWarning" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "id" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }] } }] } }] };
const WarningList_PingBaseUrlDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "WarningList_pingBaseUrl" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "pingBaseUrl" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }] } }] } }] };
const main$1 = "";
const tailwind = "";
var nodejsCustomInspectSymbol = typeof Symbol === "function" && typeof Symbol.for === "function" ? Symbol.for("nodejs.util.inspect.custom") : void 0;
const nodejsCustomInspectSymbol$1 = nodejsCustomInspectSymbol;
function _typeof$2(obj) {
  "@babel/helpers - typeof";
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof$2 = function _typeof2(obj2) {
      return typeof obj2;
    };
  } else {
    _typeof$2 = function _typeof2(obj2) {
      return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
    };
  }
  return _typeof$2(obj);
}
var MAX_ARRAY_LENGTH = 10;
var MAX_RECURSIVE_DEPTH = 2;
function inspect(value) {
  return formatValue(value, []);
}
function formatValue(value, seenValues) {
  switch (_typeof$2(value)) {
    case "string":
      return JSON.stringify(value);
    case "function":
      return value.name ? "[function ".concat(value.name, "]") : "[function]";
    case "object":
      if (value === null) {
        return "null";
      }
      return formatObjectValue(value, seenValues);
    default:
      return String(value);
  }
}
function formatObjectValue(value, previouslySeenValues) {
  if (previouslySeenValues.indexOf(value) !== -1) {
    return "[Circular]";
  }
  var seenValues = [].concat(previouslySeenValues, [value]);
  var customInspectFn = getCustomFn(value);
  if (customInspectFn !== void 0) {
    var customValue = customInspectFn.call(value);
    if (customValue !== value) {
      return typeof customValue === "string" ? customValue : formatValue(customValue, seenValues);
    }
  } else if (Array.isArray(value)) {
    return formatArray(value, seenValues);
  }
  return formatObject(value, seenValues);
}
function formatObject(object, seenValues) {
  var keys = Object.keys(object);
  if (keys.length === 0) {
    return "{}";
  }
  if (seenValues.length > MAX_RECURSIVE_DEPTH) {
    return "[" + getObjectTag(object) + "]";
  }
  var properties = keys.map(function(key) {
    var value = formatValue(object[key], seenValues);
    return key + ": " + value;
  });
  return "{ " + properties.join(", ") + " }";
}
function formatArray(array, seenValues) {
  if (array.length === 0) {
    return "[]";
  }
  if (seenValues.length > MAX_RECURSIVE_DEPTH) {
    return "[Array]";
  }
  var len = Math.min(MAX_ARRAY_LENGTH, array.length);
  var remaining = array.length - len;
  var items = [];
  for (var i2 = 0; i2 < len; ++i2) {
    items.push(formatValue(array[i2], seenValues));
  }
  if (remaining === 1) {
    items.push("... 1 more item");
  } else if (remaining > 1) {
    items.push("... ".concat(remaining, " more items"));
  }
  return "[" + items.join(", ") + "]";
}
function getCustomFn(object) {
  var customInspectFn = object[String(nodejsCustomInspectSymbol$1)];
  if (typeof customInspectFn === "function") {
    return customInspectFn;
  }
  if (typeof object.inspect === "function") {
    return object.inspect;
  }
}
function getObjectTag(object) {
  var tag = Object.prototype.toString.call(object).replace(/^\[object /, "").replace(/]$/, "");
  if (tag === "Object" && typeof object.constructor === "function") {
    var name2 = object.constructor.name;
    if (typeof name2 === "string" && name2 !== "") {
      return name2;
    }
  }
  return tag;
}
function invariant$1(condition, message) {
  var booleanCondition = Boolean(condition);
  if (!booleanCondition) {
    throw new Error(message != null ? message : "Unexpected invariant triggered.");
  }
}
function defineInspect(classObject) {
  var fn = classObject.prototype.toJSON;
  typeof fn === "function" || invariant$1(0);
  classObject.prototype.inspect = fn;
  if (nodejsCustomInspectSymbol$1) {
    classObject.prototype[nodejsCustomInspectSymbol$1] = fn;
  }
}
var Location = /* @__PURE__ */ function() {
  function Location2(startToken, endToken, source) {
    this.start = startToken.start;
    this.end = endToken.end;
    this.startToken = startToken;
    this.endToken = endToken;
    this.source = source;
  }
  var _proto = Location2.prototype;
  _proto.toJSON = function toJSON() {
    return {
      start: this.start,
      end: this.end
    };
  };
  return Location2;
}();
defineInspect(Location);
var Token$4 = /* @__PURE__ */ function() {
  function Token2(kind, start, end, line, column, prev2, value) {
    this.kind = kind;
    this.start = start;
    this.end = end;
    this.line = line;
    this.column = column;
    this.value = value;
    this.prev = prev2;
    this.next = null;
  }
  var _proto2 = Token2.prototype;
  _proto2.toJSON = function toJSON() {
    return {
      kind: this.kind,
      value: this.value,
      line: this.line,
      column: this.column
    };
  };
  return Token2;
}();
defineInspect(Token$4);
function isNode$1(maybeNode) {
  return maybeNode != null && typeof maybeNode.kind === "string";
}
var QueryDocumentKeys = {
  Name: [],
  Document: ["definitions"],
  OperationDefinition: ["name", "variableDefinitions", "directives", "selectionSet"],
  VariableDefinition: ["variable", "type", "defaultValue", "directives"],
  Variable: ["name"],
  SelectionSet: ["selections"],
  Field: ["alias", "name", "arguments", "directives", "selectionSet"],
  Argument: ["name", "value"],
  FragmentSpread: ["name", "directives"],
  InlineFragment: ["typeCondition", "directives", "selectionSet"],
  FragmentDefinition: [
    "name",
    // Note: fragment variable definitions are experimental and may be changed
    // or removed in the future.
    "variableDefinitions",
    "typeCondition",
    "directives",
    "selectionSet"
  ],
  IntValue: [],
  FloatValue: [],
  StringValue: [],
  BooleanValue: [],
  NullValue: [],
  EnumValue: [],
  ListValue: ["values"],
  ObjectValue: ["fields"],
  ObjectField: ["name", "value"],
  Directive: ["name", "arguments"],
  NamedType: ["name"],
  ListType: ["type"],
  NonNullType: ["type"],
  SchemaDefinition: ["description", "directives", "operationTypes"],
  OperationTypeDefinition: ["type"],
  ScalarTypeDefinition: ["description", "name", "directives"],
  ObjectTypeDefinition: ["description", "name", "interfaces", "directives", "fields"],
  FieldDefinition: ["description", "name", "arguments", "type", "directives"],
  InputValueDefinition: ["description", "name", "type", "defaultValue", "directives"],
  InterfaceTypeDefinition: ["description", "name", "interfaces", "directives", "fields"],
  UnionTypeDefinition: ["description", "name", "directives", "types"],
  EnumTypeDefinition: ["description", "name", "directives", "values"],
  EnumValueDefinition: ["description", "name", "directives"],
  InputObjectTypeDefinition: ["description", "name", "directives", "fields"],
  DirectiveDefinition: ["description", "name", "arguments", "locations"],
  SchemaExtension: ["directives", "operationTypes"],
  ScalarTypeExtension: ["name", "directives"],
  ObjectTypeExtension: ["name", "interfaces", "directives", "fields"],
  InterfaceTypeExtension: ["name", "interfaces", "directives", "fields"],
  UnionTypeExtension: ["name", "directives", "types"],
  EnumTypeExtension: ["name", "directives", "values"],
  InputObjectTypeExtension: ["name", "directives", "fields"]
};
var BREAK = Object.freeze({});
function visit$1(root2, visitor) {
  var visitorKeys = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : QueryDocumentKeys;
  var stack = void 0;
  var inArray = Array.isArray(root2);
  var keys = [root2];
  var index2 = -1;
  var edits = [];
  var node = void 0;
  var key = void 0;
  var parent = void 0;
  var path = [];
  var ancestors = [];
  var newRoot = root2;
  do {
    index2++;
    var isLeaving = index2 === keys.length;
    var isEdited = isLeaving && edits.length !== 0;
    if (isLeaving) {
      key = ancestors.length === 0 ? void 0 : path[path.length - 1];
      node = parent;
      parent = ancestors.pop();
      if (isEdited) {
        if (inArray) {
          node = node.slice();
        } else {
          var clone2 = {};
          for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {
            var k = _Object$keys2[_i2];
            clone2[k] = node[k];
          }
          node = clone2;
        }
        var editOffset = 0;
        for (var ii2 = 0; ii2 < edits.length; ii2++) {
          var editKey = edits[ii2][0];
          var editValue = edits[ii2][1];
          if (inArray) {
            editKey -= editOffset;
          }
          if (inArray && editValue === null) {
            node.splice(editKey, 1);
            editOffset++;
          } else {
            node[editKey] = editValue;
          }
        }
      }
      index2 = stack.index;
      keys = stack.keys;
      edits = stack.edits;
      inArray = stack.inArray;
      stack = stack.prev;
    } else {
      key = parent ? inArray ? index2 : keys[index2] : void 0;
      node = parent ? parent[key] : newRoot;
      if (node === null || node === void 0) {
        continue;
      }
      if (parent) {
        path.push(key);
      }
    }
    var result = void 0;
    if (!Array.isArray(node)) {
      if (!isNode$1(node)) {
        throw new Error("Invalid AST Node: ".concat(inspect(node), "."));
      }
      var visitFn = getVisitFn(visitor, node.kind, isLeaving);
      if (visitFn) {
        result = visitFn.call(visitor, node, key, parent, path, ancestors);
        if (result === BREAK) {
          break;
        }
        if (result === false) {
          if (!isLeaving) {
            path.pop();
            continue;
          }
        } else if (result !== void 0) {
          edits.push([key, result]);
          if (!isLeaving) {
            if (isNode$1(result)) {
              node = result;
            } else {
              path.pop();
              continue;
            }
          }
        }
      }
    }
    if (result === void 0 && isEdited) {
      edits.push([key, node]);
    }
    if (isLeaving) {
      path.pop();
    } else {
      var _visitorKeys$node$kin;
      stack = {
        inArray,
        index: index2,
        keys,
        edits,
        prev: stack
      };
      inArray = Array.isArray(node);
      keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];
      index2 = -1;
      edits = [];
      if (parent) {
        ancestors.push(parent);
      }
      parent = node;
    }
  } while (stack !== void 0);
  if (edits.length !== 0) {
    newRoot = edits[edits.length - 1][1];
  }
  return newRoot;
}
function getVisitFn(visitor, kind, isLeaving) {
  var kindVisitor = visitor[kind];
  if (kindVisitor) {
    if (!isLeaving && typeof kindVisitor === "function") {
      return kindVisitor;
    }
    var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;
    if (typeof kindSpecificVisitor === "function") {
      return kindSpecificVisitor;
    }
  } else {
    var specificVisitor = isLeaving ? visitor.leave : visitor.enter;
    if (specificVisitor) {
      if (typeof specificVisitor === "function") {
        return specificVisitor;
      }
      var specificKindVisitor = specificVisitor[kind];
      if (typeof specificKindVisitor === "function") {
        return specificKindVisitor;
      }
    }
  }
}
var Kind = Object.freeze({
  // Name
  NAME: "Name",
  // Document
  DOCUMENT: "Document",
  OPERATION_DEFINITION: "OperationDefinition",
  VARIABLE_DEFINITION: "VariableDefinition",
  SELECTION_SET: "SelectionSet",
  FIELD: "Field",
  ARGUMENT: "Argument",
  // Fragments
  FRAGMENT_SPREAD: "FragmentSpread",
  INLINE_FRAGMENT: "InlineFragment",
  FRAGMENT_DEFINITION: "FragmentDefinition",
  // Values
  VARIABLE: "Variable",
  INT: "IntValue",
  FLOAT: "FloatValue",
  STRING: "StringValue",
  BOOLEAN: "BooleanValue",
  NULL: "NullValue",
  ENUM: "EnumValue",
  LIST: "ListValue",
  OBJECT: "ObjectValue",
  OBJECT_FIELD: "ObjectField",
  // Directives
  DIRECTIVE: "Directive",
  // Types
  NAMED_TYPE: "NamedType",
  LIST_TYPE: "ListType",
  NON_NULL_TYPE: "NonNullType",
  // Type System Definitions
  SCHEMA_DEFINITION: "SchemaDefinition",
  OPERATION_TYPE_DEFINITION: "OperationTypeDefinition",
  // Type Definitions
  SCALAR_TYPE_DEFINITION: "ScalarTypeDefinition",
  OBJECT_TYPE_DEFINITION: "ObjectTypeDefinition",
  FIELD_DEFINITION: "FieldDefinition",
  INPUT_VALUE_DEFINITION: "InputValueDefinition",
  INTERFACE_TYPE_DEFINITION: "InterfaceTypeDefinition",
  UNION_TYPE_DEFINITION: "UnionTypeDefinition",
  ENUM_TYPE_DEFINITION: "EnumTypeDefinition",
  ENUM_VALUE_DEFINITION: "EnumValueDefinition",
  INPUT_OBJECT_TYPE_DEFINITION: "InputObjectTypeDefinition",
  // Directive Definitions
  DIRECTIVE_DEFINITION: "DirectiveDefinition",
  // Type System Extensions
  SCHEMA_EXTENSION: "SchemaExtension",
  // Type Extensions
  SCALAR_TYPE_EXTENSION: "ScalarTypeExtension",
  OBJECT_TYPE_EXTENSION: "ObjectTypeExtension",
  INTERFACE_TYPE_EXTENSION: "InterfaceTypeExtension",
  UNION_TYPE_EXTENSION: "UnionTypeExtension",
  ENUM_TYPE_EXTENSION: "EnumTypeExtension",
  INPUT_OBJECT_TYPE_EXTENSION: "InputObjectTypeExtension"
});
function dedentBlockStringValue(rawString) {
  var lines = rawString.split(/\r\n|[\n\r]/g);
  var commonIndent = getBlockStringIndentation(rawString);
  if (commonIndent !== 0) {
    for (var i2 = 1; i2 < lines.length; i2++) {
      lines[i2] = lines[i2].slice(commonIndent);
    }
  }
  var startLine = 0;
  while (startLine < lines.length && isBlank(lines[startLine])) {
    ++startLine;
  }
  var endLine = lines.length;
  while (endLine > startLine && isBlank(lines[endLine - 1])) {
    --endLine;
  }
  return lines.slice(startLine, endLine).join("\n");
}
function isBlank(str) {
  for (var i2 = 0; i2 < str.length; ++i2) {
    if (str[i2] !== " " && str[i2] !== "	") {
      return false;
    }
  }
  return true;
}
function getBlockStringIndentation(value) {
  var _commonIndent;
  var isFirstLine = true;
  var isEmptyLine = true;
  var indent2 = 0;
  var commonIndent = null;
  for (var i2 = 0; i2 < value.length; ++i2) {
    switch (value.charCodeAt(i2)) {
      case 13:
        if (value.charCodeAt(i2 + 1) === 10) {
          ++i2;
        }
      case 10:
        isFirstLine = false;
        isEmptyLine = true;
        indent2 = 0;
        break;
      case 9:
      case 32:
        ++indent2;
        break;
      default:
        if (isEmptyLine && !isFirstLine && (commonIndent === null || indent2 < commonIndent)) {
          commonIndent = indent2;
        }
        isEmptyLine = false;
    }
  }
  return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;
}
function printBlockString(value) {
  var indentation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
  var preferMultipleLines = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
  var isSingleLine = value.indexOf("\n") === -1;
  var hasLeadingSpace = value[0] === " " || value[0] === "	";
  var hasTrailingQuote = value[value.length - 1] === '"';
  var hasTrailingSlash = value[value.length - 1] === "\\";
  var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;
  var result = "";
  if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
    result += "\n" + indentation;
  }
  result += indentation ? value.replace(/\n/g, "\n" + indentation) : value;
  if (printAsMultipleLines) {
    result += "\n";
  }
  return '"""' + result.replace(/"""/g, '\\"""') + '"""';
}
function print$1(ast2) {
  return visit$1(ast2, {
    leave: printDocASTReducer
  });
}
var MAX_LINE_LENGTH = 80;
var printDocASTReducer = {
  Name: function Name(node) {
    return node.value;
  },
  Variable: function Variable(node) {
    return "$" + node.name;
  },
  // Document
  Document: function Document(node) {
    return join$1(node.definitions, "\n\n") + "\n";
  },
  OperationDefinition: function OperationDefinition(node) {
    var op = node.operation;
    var name2 = node.name;
    var varDefs = wrap("(", join$1(node.variableDefinitions, ", "), ")");
    var directives = join$1(node.directives, " ");
    var selectionSet = node.selectionSet;
    return !name2 && !directives && !varDefs && op === "query" ? selectionSet : join$1([op, join$1([name2, varDefs]), directives, selectionSet], " ");
  },
  VariableDefinition: function VariableDefinition(_ref) {
    var variable = _ref.variable, type2 = _ref.type, defaultValue = _ref.defaultValue, directives = _ref.directives;
    return variable + ": " + type2 + wrap(" = ", defaultValue) + wrap(" ", join$1(directives, " "));
  },
  SelectionSet: function SelectionSet(_ref2) {
    var selections = _ref2.selections;
    return block$2(selections);
  },
  Field: function Field(_ref3) {
    var alias = _ref3.alias, name2 = _ref3.name, args = _ref3.arguments, directives = _ref3.directives, selectionSet = _ref3.selectionSet;
    var prefix = wrap("", alias, ": ") + name2;
    var argsLine = prefix + wrap("(", join$1(args, ", "), ")");
    if (argsLine.length > MAX_LINE_LENGTH) {
      argsLine = prefix + wrap("(\n", indent(join$1(args, "\n")), "\n)");
    }
    return join$1([argsLine, join$1(directives, " "), selectionSet], " ");
  },
  Argument: function Argument(_ref4) {
    var name2 = _ref4.name, value = _ref4.value;
    return name2 + ": " + value;
  },
  // Fragments
  FragmentSpread: function FragmentSpread(_ref5) {
    var name2 = _ref5.name, directives = _ref5.directives;
    return "..." + name2 + wrap(" ", join$1(directives, " "));
  },
  InlineFragment: function InlineFragment(_ref6) {
    var typeCondition = _ref6.typeCondition, directives = _ref6.directives, selectionSet = _ref6.selectionSet;
    return join$1(["...", wrap("on ", typeCondition), join$1(directives, " "), selectionSet], " ");
  },
  FragmentDefinition: function FragmentDefinition(_ref7) {
    var name2 = _ref7.name, typeCondition = _ref7.typeCondition, variableDefinitions = _ref7.variableDefinitions, directives = _ref7.directives, selectionSet = _ref7.selectionSet;
    return (
      // Note: fragment variable definitions are experimental and may be changed
      // or removed in the future.
      "fragment ".concat(name2).concat(wrap("(", join$1(variableDefinitions, ", "), ")"), " ") + "on ".concat(typeCondition, " ").concat(wrap("", join$1(directives, " "), " ")) + selectionSet
    );
  },
  // Value
  IntValue: function IntValue(_ref8) {
    var value = _ref8.value;
    return value;
  },
  FloatValue: function FloatValue(_ref9) {
    var value = _ref9.value;
    return value;
  },
  StringValue: function StringValue(_ref10, key) {
    var value = _ref10.value, isBlockString = _ref10.block;
    return isBlockString ? printBlockString(value, key === "description" ? "" : "  ") : JSON.stringify(value);
  },
  BooleanValue: function BooleanValue(_ref11) {
    var value = _ref11.value;
    return value ? "true" : "false";
  },
  NullValue: function NullValue() {
    return "null";
  },
  EnumValue: function EnumValue(_ref12) {
    var value = _ref12.value;
    return value;
  },
  ListValue: function ListValue(_ref13) {
    var values = _ref13.values;
    return "[" + join$1(values, ", ") + "]";
  },
  ObjectValue: function ObjectValue(_ref14) {
    var fields = _ref14.fields;
    return "{" + join$1(fields, ", ") + "}";
  },
  ObjectField: function ObjectField(_ref15) {
    var name2 = _ref15.name, value = _ref15.value;
    return name2 + ": " + value;
  },
  // Directive
  Directive: function Directive(_ref16) {
    var name2 = _ref16.name, args = _ref16.arguments;
    return "@" + name2 + wrap("(", join$1(args, ", "), ")");
  },
  // Type
  NamedType: function NamedType(_ref17) {
    var name2 = _ref17.name;
    return name2;
  },
  ListType: function ListType(_ref18) {
    var type2 = _ref18.type;
    return "[" + type2 + "]";
  },
  NonNullType: function NonNullType(_ref19) {
    var type2 = _ref19.type;
    return type2 + "!";
  },
  // Type System Definitions
  SchemaDefinition: addDescription(function(_ref20) {
    var directives = _ref20.directives, operationTypes = _ref20.operationTypes;
    return join$1(["schema", join$1(directives, " "), block$2(operationTypes)], " ");
  }),
  OperationTypeDefinition: function OperationTypeDefinition(_ref21) {
    var operation = _ref21.operation, type2 = _ref21.type;
    return operation + ": " + type2;
  },
  ScalarTypeDefinition: addDescription(function(_ref22) {
    var name2 = _ref22.name, directives = _ref22.directives;
    return join$1(["scalar", name2, join$1(directives, " ")], " ");
  }),
  ObjectTypeDefinition: addDescription(function(_ref23) {
    var name2 = _ref23.name, interfaces = _ref23.interfaces, directives = _ref23.directives, fields = _ref23.fields;
    return join$1(["type", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  }),
  FieldDefinition: addDescription(function(_ref24) {
    var name2 = _ref24.name, args = _ref24.arguments, type2 = _ref24.type, directives = _ref24.directives;
    return name2 + (hasMultilineItems(args) ? wrap("(\n", indent(join$1(args, "\n")), "\n)") : wrap("(", join$1(args, ", "), ")")) + ": " + type2 + wrap(" ", join$1(directives, " "));
  }),
  InputValueDefinition: addDescription(function(_ref25) {
    var name2 = _ref25.name, type2 = _ref25.type, defaultValue = _ref25.defaultValue, directives = _ref25.directives;
    return join$1([name2 + ": " + type2, wrap("= ", defaultValue), join$1(directives, " ")], " ");
  }),
  InterfaceTypeDefinition: addDescription(function(_ref26) {
    var name2 = _ref26.name, interfaces = _ref26.interfaces, directives = _ref26.directives, fields = _ref26.fields;
    return join$1(["interface", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  }),
  UnionTypeDefinition: addDescription(function(_ref27) {
    var name2 = _ref27.name, directives = _ref27.directives, types = _ref27.types;
    return join$1(["union", name2, join$1(directives, " "), types && types.length !== 0 ? "= " + join$1(types, " | ") : ""], " ");
  }),
  EnumTypeDefinition: addDescription(function(_ref28) {
    var name2 = _ref28.name, directives = _ref28.directives, values = _ref28.values;
    return join$1(["enum", name2, join$1(directives, " "), block$2(values)], " ");
  }),
  EnumValueDefinition: addDescription(function(_ref29) {
    var name2 = _ref29.name, directives = _ref29.directives;
    return join$1([name2, join$1(directives, " ")], " ");
  }),
  InputObjectTypeDefinition: addDescription(function(_ref30) {
    var name2 = _ref30.name, directives = _ref30.directives, fields = _ref30.fields;
    return join$1(["input", name2, join$1(directives, " "), block$2(fields)], " ");
  }),
  DirectiveDefinition: addDescription(function(_ref31) {
    var name2 = _ref31.name, args = _ref31.arguments, repeatable = _ref31.repeatable, locations = _ref31.locations;
    return "directive @" + name2 + (hasMultilineItems(args) ? wrap("(\n", indent(join$1(args, "\n")), "\n)") : wrap("(", join$1(args, ", "), ")")) + (repeatable ? " repeatable" : "") + " on " + join$1(locations, " | ");
  }),
  SchemaExtension: function SchemaExtension(_ref32) {
    var directives = _ref32.directives, operationTypes = _ref32.operationTypes;
    return join$1(["extend schema", join$1(directives, " "), block$2(operationTypes)], " ");
  },
  ScalarTypeExtension: function ScalarTypeExtension(_ref33) {
    var name2 = _ref33.name, directives = _ref33.directives;
    return join$1(["extend scalar", name2, join$1(directives, " ")], " ");
  },
  ObjectTypeExtension: function ObjectTypeExtension(_ref34) {
    var name2 = _ref34.name, interfaces = _ref34.interfaces, directives = _ref34.directives, fields = _ref34.fields;
    return join$1(["extend type", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  },
  InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {
    var name2 = _ref35.name, interfaces = _ref35.interfaces, directives = _ref35.directives, fields = _ref35.fields;
    return join$1(["extend interface", name2, wrap("implements ", join$1(interfaces, " & ")), join$1(directives, " "), block$2(fields)], " ");
  },
  UnionTypeExtension: function UnionTypeExtension(_ref36) {
    var name2 = _ref36.name, directives = _ref36.directives, types = _ref36.types;
    return join$1(["extend union", name2, join$1(directives, " "), types && types.length !== 0 ? "= " + join$1(types, " | ") : ""], " ");
  },
  EnumTypeExtension: function EnumTypeExtension(_ref37) {
    var name2 = _ref37.name, directives = _ref37.directives, values = _ref37.values;
    return join$1(["extend enum", name2, join$1(directives, " "), block$2(values)], " ");
  },
  InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {
    var name2 = _ref38.name, directives = _ref38.directives, fields = _ref38.fields;
    return join$1(["extend input", name2, join$1(directives, " "), block$2(fields)], " ");
  }
};
function addDescription(cb) {
  return function(node) {
    return join$1([node.description, cb(node)], "\n");
  };
}
function join$1(maybeArray) {
  var _maybeArray$filter$jo;
  var separator = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
  return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function(x2) {
    return x2;
  }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : "";
}
function block$2(array) {
  return wrap("{\n", indent(join$1(array, "\n")), "\n}");
}
function wrap(start, maybeString) {
  var end = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
  return maybeString != null && maybeString !== "" ? start + maybeString + end : "";
}
function indent(str) {
  return wrap("  ", str.replace(/\n/g, "\n  "));
}
function isMultiline(str) {
  return str.indexOf("\n") !== -1;
}
function hasMultilineItems(maybeArray) {
  return maybeArray != null && maybeArray.some(isMultiline);
}
function _typeof$1(obj) {
  "@babel/helpers - typeof";
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof$1 = function _typeof2(obj2) {
      return typeof obj2;
    };
  } else {
    _typeof$1 = function _typeof2(obj2) {
      return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
    };
  }
  return _typeof$1(obj);
}
function isObjectLike$1(value) {
  return _typeof$1(value) == "object" && value !== null;
}
var SYMBOL_TO_STRING_TAG = typeof Symbol === "function" && Symbol.toStringTag != null ? Symbol.toStringTag : "@@toStringTag";
function getLocation(source, position) {
  var lineRegexp = /\r\n|[\n\r]/g;
  var line = 1;
  var column = position + 1;
  var match3;
  while ((match3 = lineRegexp.exec(source.body)) && match3.index < position) {
    line += 1;
    column = position + 1 - (match3.index + match3[0].length);
  }
  return {
    line,
    column
  };
}
function printLocation(location2) {
  return printSourceLocation(location2.source, getLocation(location2.source, location2.start));
}
function printSourceLocation(source, sourceLocation) {
  var firstLineColumnOffset = source.locationOffset.column - 1;
  var body = whitespace(firstLineColumnOffset) + source.body;
  var lineIndex = sourceLocation.line - 1;
  var lineOffset = source.locationOffset.line - 1;
  var lineNum = sourceLocation.line + lineOffset;
  var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;
  var columnNum = sourceLocation.column + columnOffset;
  var locationStr = "".concat(source.name, ":").concat(lineNum, ":").concat(columnNum, "\n");
  var lines = body.split(/\r\n|[\n\r]/g);
  var locationLine = lines[lineIndex];
  if (locationLine.length > 120) {
    var subLineIndex = Math.floor(columnNum / 80);
    var subLineColumnNum = columnNum % 80;
    var subLines = [];
    for (var i2 = 0; i2 < locationLine.length; i2 += 80) {
      subLines.push(locationLine.slice(i2, i2 + 80));
    }
    return locationStr + printPrefixedLines([["".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function(subLine) {
      return ["", subLine];
    }), [[" ", whitespace(subLineColumnNum - 1) + "^"], ["", subLines[subLineIndex + 1]]]));
  }
  return locationStr + printPrefixedLines([
    // Lines specified like this: ["prefix", "string"],
    ["".concat(lineNum - 1), lines[lineIndex - 1]],
    ["".concat(lineNum), locationLine],
    ["", whitespace(columnNum - 1) + "^"],
    ["".concat(lineNum + 1), lines[lineIndex + 1]]
  ]);
}
function printPrefixedLines(lines) {
  var existingLines = lines.filter(function(_ref) {
    _ref[0];
    var line = _ref[1];
    return line !== void 0;
  });
  var padLen = Math.max.apply(Math, existingLines.map(function(_ref2) {
    var prefix = _ref2[0];
    return prefix.length;
  }));
  return existingLines.map(function(_ref3) {
    var prefix = _ref3[0], line = _ref3[1];
    return leftPad(padLen, prefix) + (line ? " | " + line : " |");
  }).join("\n");
}
function whitespace(len) {
  return Array(len + 1).join(" ");
}
function leftPad(len, str) {
  return whitespace(len - str.length) + str;
}
function _typeof(obj) {
  "@babel/helpers - typeof";
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof = function _typeof2(obj2) {
      return typeof obj2;
    };
  } else {
    _typeof = function _typeof2(obj2) {
      return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
    };
  }
  return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}
function _defineProperties$1(target2, props) {
  for (var i2 = 0; i2 < props.length; i2++) {
    var descriptor = props[i2];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor)
      descriptor.writable = true;
    Object.defineProperty(target2, descriptor.key, descriptor);
  }
}
function _createClass$1(Constructor, protoProps, staticProps) {
  if (protoProps)
    _defineProperties$1(Constructor.prototype, protoProps);
  if (staticProps)
    _defineProperties$1(Constructor, staticProps);
  return Constructor;
}
function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }
  subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
  if (superClass)
    _setPrototypeOf(subClass, superClass);
}
function _createSuper(Derived) {
  var hasNativeReflectConstruct = _isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = _getPrototypeOf(Derived), result;
    if (hasNativeReflectConstruct) {
      var NewTarget = _getPrototypeOf(this).constructor;
      result = Reflect.construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }
    return _possibleConstructorReturn(this, result);
  };
}
function _possibleConstructorReturn(self2, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }
  return _assertThisInitialized(self2);
}
function _assertThisInitialized(self2) {
  if (self2 === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }
  return self2;
}
function _wrapNativeSuper(Class) {
  var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0;
  _wrapNativeSuper = function _wrapNativeSuper2(Class2) {
    if (Class2 === null || !_isNativeFunction(Class2))
      return Class2;
    if (typeof Class2 !== "function") {
      throw new TypeError("Super expression must either be null or a function");
    }
    if (typeof _cache !== "undefined") {
      if (_cache.has(Class2))
        return _cache.get(Class2);
      _cache.set(Class2, Wrapper);
    }
    function Wrapper() {
      return _construct(Class2, arguments, _getPrototypeOf(this).constructor);
    }
    Wrapper.prototype = Object.create(Class2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });
    return _setPrototypeOf(Wrapper, Class2);
  };
  return _wrapNativeSuper(Class);
}
function _construct(Parent, args, Class) {
  if (_isNativeReflectConstruct()) {
    _construct = Reflect.construct;
  } else {
    _construct = function _construct2(Parent2, args2, Class2) {
      var a2 = [null];
      a2.push.apply(a2, args2);
      var Constructor = Function.bind.apply(Parent2, a2);
      var instance = new Constructor();
      if (Class2)
        _setPrototypeOf(instance, Class2.prototype);
      return instance;
    };
  }
  return _construct.apply(null, arguments);
}
function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !Reflect.construct)
    return false;
  if (Reflect.construct.sham)
    return false;
  if (typeof Proxy === "function")
    return true;
  try {
    Date.prototype.toString.call(Reflect.construct(Date, [], function() {
    }));
    return true;
  } catch (e) {
    return false;
  }
}
function _isNativeFunction(fn) {
  return Function.toString.call(fn).indexOf("[native code]") !== -1;
}
function _setPrototypeOf(o2, p2) {
  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) {
    o3.__proto__ = p3;
    return o3;
  };
  return _setPrototypeOf(o2, p2);
}
function _getPrototypeOf(o2) {
  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o3) {
    return o3.__proto__ || Object.getPrototypeOf(o3);
  };
  return _getPrototypeOf(o2);
}
var GraphQLError = /* @__PURE__ */ function(_Error) {
  _inherits(GraphQLError2, _Error);
  var _super = _createSuper(GraphQLError2);
  function GraphQLError2(message, nodes, source, positions, path, originalError, extensions) {
    var _locations2, _source2, _positions2, _extensions2;
    var _this;
    _classCallCheck(this, GraphQLError2);
    _this = _super.call(this, message);
    var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : void 0 : nodes ? [nodes] : void 0;
    var _source = source;
    if (!_source && _nodes) {
      var _nodes$0$loc;
      _source = (_nodes$0$loc = _nodes[0].loc) === null || _nodes$0$loc === void 0 ? void 0 : _nodes$0$loc.source;
    }
    var _positions = positions;
    if (!_positions && _nodes) {
      _positions = _nodes.reduce(function(list3, node) {
        if (node.loc) {
          list3.push(node.loc.start);
        }
        return list3;
      }, []);
    }
    if (_positions && _positions.length === 0) {
      _positions = void 0;
    }
    var _locations;
    if (positions && source) {
      _locations = positions.map(function(pos) {
        return getLocation(source, pos);
      });
    } else if (_nodes) {
      _locations = _nodes.reduce(function(list3, node) {
        if (node.loc) {
          list3.push(getLocation(node.loc.source, node.loc.start));
        }
        return list3;
      }, []);
    }
    var _extensions = extensions;
    if (_extensions == null && originalError != null) {
      var originalExtensions = originalError.extensions;
      if (isObjectLike$1(originalExtensions)) {
        _extensions = originalExtensions;
      }
    }
    Object.defineProperties(_assertThisInitialized(_this), {
      name: {
        value: "GraphQLError"
      },
      message: {
        value: message,
        // By being enumerable, JSON.stringify will include `message` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: true,
        writable: true
      },
      locations: {
        // Coercing falsy values to undefined ensures they will not be included
        // in JSON.stringify() when not provided.
        value: (_locations2 = _locations) !== null && _locations2 !== void 0 ? _locations2 : void 0,
        // By being enumerable, JSON.stringify will include `locations` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: _locations != null
      },
      path: {
        // Coercing falsy values to undefined ensures they will not be included
        // in JSON.stringify() when not provided.
        value: path !== null && path !== void 0 ? path : void 0,
        // By being enumerable, JSON.stringify will include `path` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: path != null
      },
      nodes: {
        value: _nodes !== null && _nodes !== void 0 ? _nodes : void 0
      },
      source: {
        value: (_source2 = _source) !== null && _source2 !== void 0 ? _source2 : void 0
      },
      positions: {
        value: (_positions2 = _positions) !== null && _positions2 !== void 0 ? _positions2 : void 0
      },
      originalError: {
        value: originalError
      },
      extensions: {
        // Coercing falsy values to undefined ensures they will not be included
        // in JSON.stringify() when not provided.
        value: (_extensions2 = _extensions) !== null && _extensions2 !== void 0 ? _extensions2 : void 0,
        // By being enumerable, JSON.stringify will include `path` in the
        // resulting output. This ensures that the simplest possible GraphQL
        // service adheres to the spec.
        enumerable: _extensions != null
      }
    });
    if (originalError !== null && originalError !== void 0 && originalError.stack) {
      Object.defineProperty(_assertThisInitialized(_this), "stack", {
        value: originalError.stack,
        writable: true,
        configurable: true
      });
      return _possibleConstructorReturn(_this);
    }
    if (Error.captureStackTrace) {
      Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError2);
    } else {
      Object.defineProperty(_assertThisInitialized(_this), "stack", {
        value: Error().stack,
        writable: true,
        configurable: true
      });
    }
    return _this;
  }
  _createClass$1(GraphQLError2, [{
    key: "toString",
    value: function toString2() {
      return printError(this);
    }
    // FIXME: workaround to not break chai comparisons, should be remove in v16
    // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
  }, {
    key: SYMBOL_TO_STRING_TAG,
    get: function get2() {
      return "Object";
    }
  }]);
  return GraphQLError2;
}(/* @__PURE__ */ _wrapNativeSuper(Error));
function printError(error2) {
  var output = error2.message;
  if (error2.nodes) {
    for (var _i2 = 0, _error$nodes2 = error2.nodes; _i2 < _error$nodes2.length; _i2++) {
      var node = _error$nodes2[_i2];
      if (node.loc) {
        output += "\n\n" + printLocation(node.loc);
      }
    }
  } else if (error2.source && error2.locations) {
    for (var _i4 = 0, _error$locations2 = error2.locations; _i4 < _error$locations2.length; _i4++) {
      var location2 = _error$locations2[_i4];
      output += "\n\n" + printSourceLocation(error2.source, location2);
    }
  }
  return output;
}
function syntaxError(source, position, description) {
  return new GraphQLError("Syntax Error: ".concat(description), void 0, source, [position]);
}
var TokenKind = Object.freeze({
  SOF: "<SOF>",
  EOF: "<EOF>",
  BANG: "!",
  DOLLAR: "$",
  AMP: "&",
  PAREN_L: "(",
  PAREN_R: ")",
  SPREAD: "...",
  COLON: ":",
  EQUALS: "=",
  AT: "@",
  BRACKET_L: "[",
  BRACKET_R: "]",
  BRACE_L: "{",
  PIPE: "|",
  BRACE_R: "}",
  NAME: "Name",
  INT: "Int",
  FLOAT: "Float",
  STRING: "String",
  BLOCK_STRING: "BlockString",
  COMMENT: "Comment"
});
function devAssert(condition, message) {
  var booleanCondition = Boolean(condition);
  if (!booleanCondition) {
    throw new Error(message);
  }
}
const instanceOf = (
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
  // eslint-disable-next-line no-shadow
  function instanceOf2(value, constructor) {
    return value instanceof constructor;
  }
);
function _defineProperties(target2, props) {
  for (var i2 = 0; i2 < props.length; i2++) {
    var descriptor = props[i2];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor)
      descriptor.writable = true;
    Object.defineProperty(target2, descriptor.key, descriptor);
  }
}
function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps)
    _defineProperties(Constructor.prototype, protoProps);
  if (staticProps)
    _defineProperties(Constructor, staticProps);
  return Constructor;
}
var Source = /* @__PURE__ */ function() {
  function Source2(body) {
    var name2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "GraphQL request";
    var locationOffset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
      line: 1,
      column: 1
    };
    typeof body === "string" || devAssert(0, "Body must be a string. Received: ".concat(inspect(body), "."));
    this.body = body;
    this.name = name2;
    this.locationOffset = locationOffset;
    this.locationOffset.line > 0 || devAssert(0, "line in locationOffset is 1-indexed and must be positive.");
    this.locationOffset.column > 0 || devAssert(0, "column in locationOffset is 1-indexed and must be positive.");
  }
  _createClass(Source2, [{
    key: SYMBOL_TO_STRING_TAG,
    get: function get2() {
      return "Source";
    }
  }]);
  return Source2;
}();
function isSource(source) {
  return instanceOf(source, Source);
}
var DirectiveLocation = Object.freeze({
  // Request Definitions
  QUERY: "QUERY",
  MUTATION: "MUTATION",
  SUBSCRIPTION: "SUBSCRIPTION",
  FIELD: "FIELD",
  FRAGMENT_DEFINITION: "FRAGMENT_DEFINITION",
  FRAGMENT_SPREAD: "FRAGMENT_SPREAD",
  INLINE_FRAGMENT: "INLINE_FRAGMENT",
  VARIABLE_DEFINITION: "VARIABLE_DEFINITION",
  // Type System Definitions
  SCHEMA: "SCHEMA",
  SCALAR: "SCALAR",
  OBJECT: "OBJECT",
  FIELD_DEFINITION: "FIELD_DEFINITION",
  ARGUMENT_DEFINITION: "ARGUMENT_DEFINITION",
  INTERFACE: "INTERFACE",
  UNION: "UNION",
  ENUM: "ENUM",
  ENUM_VALUE: "ENUM_VALUE",
  INPUT_OBJECT: "INPUT_OBJECT",
  INPUT_FIELD_DEFINITION: "INPUT_FIELD_DEFINITION"
});
var Lexer = /* @__PURE__ */ function() {
  function Lexer2(source) {
    var startOfFileToken = new Token$4(TokenKind.SOF, 0, 0, 0, 0, null);
    this.source = source;
    this.lastToken = startOfFileToken;
    this.token = startOfFileToken;
    this.line = 1;
    this.lineStart = 0;
  }
  var _proto = Lexer2.prototype;
  _proto.advance = function advance() {
    this.lastToken = this.token;
    var token2 = this.token = this.lookahead();
    return token2;
  };
  _proto.lookahead = function lookahead() {
    var token2 = this.token;
    if (token2.kind !== TokenKind.EOF) {
      do {
        var _token$next;
        token2 = (_token$next = token2.next) !== null && _token$next !== void 0 ? _token$next : token2.next = readToken(this, token2);
      } while (token2.kind === TokenKind.COMMENT);
    }
    return token2;
  };
  return Lexer2;
}();
function isPunctuatorTokenKind(kind) {
  return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;
}
function printCharCode(code3) {
  return (
    // NaN/undefined represents access beyond the end of the file.
    isNaN(code3) ? TokenKind.EOF : (
      // Trust JSON for ASCII.
      code3 < 127 ? JSON.stringify(String.fromCharCode(code3)) : (
        // Otherwise print the escaped form.
        '"\\u'.concat(("00" + code3.toString(16).toUpperCase()).slice(-4), '"')
      )
    )
  );
}
function readToken(lexer, prev2) {
  var source = lexer.source;
  var body = source.body;
  var bodyLength = body.length;
  var pos = prev2.end;
  while (pos < bodyLength) {
    var code3 = body.charCodeAt(pos);
    var _line = lexer.line;
    var _col = 1 + pos - lexer.lineStart;
    switch (code3) {
      case 65279:
      case 9:
      case 32:
      case 44:
        ++pos;
        continue;
      case 10:
        ++pos;
        ++lexer.line;
        lexer.lineStart = pos;
        continue;
      case 13:
        if (body.charCodeAt(pos + 1) === 10) {
          pos += 2;
        } else {
          ++pos;
        }
        ++lexer.line;
        lexer.lineStart = pos;
        continue;
      case 33:
        return new Token$4(TokenKind.BANG, pos, pos + 1, _line, _col, prev2);
      case 35:
        return readComment(source, pos, _line, _col, prev2);
      case 36:
        return new Token$4(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev2);
      case 38:
        return new Token$4(TokenKind.AMP, pos, pos + 1, _line, _col, prev2);
      case 40:
        return new Token$4(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev2);
      case 41:
        return new Token$4(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev2);
      case 46:
        if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {
          return new Token$4(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev2);
        }
        break;
      case 58:
        return new Token$4(TokenKind.COLON, pos, pos + 1, _line, _col, prev2);
      case 61:
        return new Token$4(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev2);
      case 64:
        return new Token$4(TokenKind.AT, pos, pos + 1, _line, _col, prev2);
      case 91:
        return new Token$4(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev2);
      case 93:
        return new Token$4(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev2);
      case 123:
        return new Token$4(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev2);
      case 124:
        return new Token$4(TokenKind.PIPE, pos, pos + 1, _line, _col, prev2);
      case 125:
        return new Token$4(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev2);
      case 34:
        if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {
          return readBlockString(source, pos, _line, _col, prev2, lexer);
        }
        return readString(source, pos, _line, _col, prev2);
      case 45:
      case 48:
      case 49:
      case 50:
      case 51:
      case 52:
      case 53:
      case 54:
      case 55:
      case 56:
      case 57:
        return readNumber(source, pos, code3, _line, _col, prev2);
      case 65:
      case 66:
      case 67:
      case 68:
      case 69:
      case 70:
      case 71:
      case 72:
      case 73:
      case 74:
      case 75:
      case 76:
      case 77:
      case 78:
      case 79:
      case 80:
      case 81:
      case 82:
      case 83:
      case 84:
      case 85:
      case 86:
      case 87:
      case 88:
      case 89:
      case 90:
      case 95:
      case 97:
      case 98:
      case 99:
      case 100:
      case 101:
      case 102:
      case 103:
      case 104:
      case 105:
      case 106:
      case 107:
      case 108:
      case 109:
      case 110:
      case 111:
      case 112:
      case 113:
      case 114:
      case 115:
      case 116:
      case 117:
      case 118:
      case 119:
      case 120:
      case 121:
      case 122:
        return readName(source, pos, _line, _col, prev2);
    }
    throw syntaxError(source, pos, unexpectedCharacterMessage(code3));
  }
  var line = lexer.line;
  var col = 1 + pos - lexer.lineStart;
  return new Token$4(TokenKind.EOF, bodyLength, bodyLength, line, col, prev2);
}
function unexpectedCharacterMessage(code3) {
  if (code3 < 32 && code3 !== 9 && code3 !== 10 && code3 !== 13) {
    return "Cannot contain the invalid character ".concat(printCharCode(code3), ".");
  }
  if (code3 === 39) {
    return `Unexpected single quote character ('), did you mean to use a double quote (")?`;
  }
  return "Cannot parse the unexpected character ".concat(printCharCode(code3), ".");
}
function readComment(source, start, line, col, prev2) {
  var body = source.body;
  var code3;
  var position = start;
  do {
    code3 = body.charCodeAt(++position);
  } while (!isNaN(code3) && // SourceCharacter but not LineTerminator
  (code3 > 31 || code3 === 9));
  return new Token$4(TokenKind.COMMENT, start, position, line, col, prev2, body.slice(start + 1, position));
}
function readNumber(source, start, firstCode, line, col, prev2) {
  var body = source.body;
  var code3 = firstCode;
  var position = start;
  var isFloat = false;
  if (code3 === 45) {
    code3 = body.charCodeAt(++position);
  }
  if (code3 === 48) {
    code3 = body.charCodeAt(++position);
    if (code3 >= 48 && code3 <= 57) {
      throw syntaxError(source, position, "Invalid number, unexpected digit after 0: ".concat(printCharCode(code3), "."));
    }
  } else {
    position = readDigits(source, position, code3);
    code3 = body.charCodeAt(position);
  }
  if (code3 === 46) {
    isFloat = true;
    code3 = body.charCodeAt(++position);
    position = readDigits(source, position, code3);
    code3 = body.charCodeAt(position);
  }
  if (code3 === 69 || code3 === 101) {
    isFloat = true;
    code3 = body.charCodeAt(++position);
    if (code3 === 43 || code3 === 45) {
      code3 = body.charCodeAt(++position);
    }
    position = readDigits(source, position, code3);
    code3 = body.charCodeAt(position);
  }
  if (code3 === 46 || isNameStart(code3)) {
    throw syntaxError(source, position, "Invalid number, expected digit but got: ".concat(printCharCode(code3), "."));
  }
  return new Token$4(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev2, body.slice(start, position));
}
function readDigits(source, start, firstCode) {
  var body = source.body;
  var position = start;
  var code3 = firstCode;
  if (code3 >= 48 && code3 <= 57) {
    do {
      code3 = body.charCodeAt(++position);
    } while (code3 >= 48 && code3 <= 57);
    return position;
  }
  throw syntaxError(source, position, "Invalid number, expected digit but got: ".concat(printCharCode(code3), "."));
}
function readString(source, start, line, col, prev2) {
  var body = source.body;
  var position = start + 1;
  var chunkStart = position;
  var code3 = 0;
  var value = "";
  while (position < body.length && !isNaN(code3 = body.charCodeAt(position)) && // not LineTerminator
  code3 !== 10 && code3 !== 13) {
    if (code3 === 34) {
      value += body.slice(chunkStart, position);
      return new Token$4(TokenKind.STRING, start, position + 1, line, col, prev2, value);
    }
    if (code3 < 32 && code3 !== 9) {
      throw syntaxError(source, position, "Invalid character within String: ".concat(printCharCode(code3), "."));
    }
    ++position;
    if (code3 === 92) {
      value += body.slice(chunkStart, position - 1);
      code3 = body.charCodeAt(position);
      switch (code3) {
        case 34:
          value += '"';
          break;
        case 47:
          value += "/";
          break;
        case 92:
          value += "\\";
          break;
        case 98:
          value += "\b";
          break;
        case 102:
          value += "\f";
          break;
        case 110:
          value += "\n";
          break;
        case 114:
          value += "\r";
          break;
        case 116:
          value += "	";
          break;
        case 117: {
          var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));
          if (charCode < 0) {
            var invalidSequence = body.slice(position + 1, position + 5);
            throw syntaxError(source, position, "Invalid character escape sequence: \\u".concat(invalidSequence, "."));
          }
          value += String.fromCharCode(charCode);
          position += 4;
          break;
        }
        default:
          throw syntaxError(source, position, "Invalid character escape sequence: \\".concat(String.fromCharCode(code3), "."));
      }
      ++position;
      chunkStart = position;
    }
  }
  throw syntaxError(source, position, "Unterminated string.");
}
function readBlockString(source, start, line, col, prev2, lexer) {
  var body = source.body;
  var position = start + 3;
  var chunkStart = position;
  var code3 = 0;
  var rawValue = "";
  while (position < body.length && !isNaN(code3 = body.charCodeAt(position))) {
    if (code3 === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {
      rawValue += body.slice(chunkStart, position);
      return new Token$4(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev2, dedentBlockStringValue(rawValue));
    }
    if (code3 < 32 && code3 !== 9 && code3 !== 10 && code3 !== 13) {
      throw syntaxError(source, position, "Invalid character within String: ".concat(printCharCode(code3), "."));
    }
    if (code3 === 10) {
      ++position;
      ++lexer.line;
      lexer.lineStart = position;
    } else if (code3 === 13) {
      if (body.charCodeAt(position + 1) === 10) {
        position += 2;
      } else {
        ++position;
      }
      ++lexer.line;
      lexer.lineStart = position;
    } else if (
      // Escape Triple-Quote (\""")
      code3 === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34
    ) {
      rawValue += body.slice(chunkStart, position) + '"""';
      position += 4;
      chunkStart = position;
    } else {
      ++position;
    }
  }
  throw syntaxError(source, position, "Unterminated string.");
}
function uniCharCode(a2, b2, c2, d2) {
  return char2hex(a2) << 12 | char2hex(b2) << 8 | char2hex(c2) << 4 | char2hex(d2);
}
function char2hex(a2) {
  return a2 >= 48 && a2 <= 57 ? a2 - 48 : a2 >= 65 && a2 <= 70 ? a2 - 55 : a2 >= 97 && a2 <= 102 ? a2 - 87 : -1;
}
function readName(source, start, line, col, prev2) {
  var body = source.body;
  var bodyLength = body.length;
  var position = start + 1;
  var code3 = 0;
  while (position !== bodyLength && !isNaN(code3 = body.charCodeAt(position)) && (code3 === 95 || // _
  code3 >= 48 && code3 <= 57 || // 0-9
  code3 >= 65 && code3 <= 90 || // A-Z
  code3 >= 97 && code3 <= 122)) {
    ++position;
  }
  return new Token$4(TokenKind.NAME, start, position, line, col, prev2, body.slice(start, position));
}
function isNameStart(code3) {
  return code3 === 95 || code3 >= 65 && code3 <= 90 || code3 >= 97 && code3 <= 122;
}
function parse$4(source, options2) {
  var parser2 = new Parser(source, options2);
  return parser2.parseDocument();
}
var Parser = /* @__PURE__ */ function() {
  function Parser2(source, options2) {
    var sourceObj = isSource(source) ? source : new Source(source);
    this._lexer = new Lexer(sourceObj);
    this._options = options2;
  }
  var _proto = Parser2.prototype;
  _proto.parseName = function parseName2() {
    var token2 = this.expectToken(TokenKind.NAME);
    return {
      kind: Kind.NAME,
      value: token2.value,
      loc: this.loc(token2)
    };
  };
  _proto.parseDocument = function parseDocument() {
    var start = this._lexer.token;
    return {
      kind: Kind.DOCUMENT,
      definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),
      loc: this.loc(start)
    };
  };
  _proto.parseDefinition = function parseDefinition() {
    if (this.peek(TokenKind.NAME)) {
      switch (this._lexer.token.value) {
        case "query":
        case "mutation":
        case "subscription":
          return this.parseOperationDefinition();
        case "fragment":
          return this.parseFragmentDefinition();
        case "schema":
        case "scalar":
        case "type":
        case "interface":
        case "union":
        case "enum":
        case "input":
        case "directive":
          return this.parseTypeSystemDefinition();
        case "extend":
          return this.parseTypeSystemExtension();
      }
    } else if (this.peek(TokenKind.BRACE_L)) {
      return this.parseOperationDefinition();
    } else if (this.peekDescription()) {
      return this.parseTypeSystemDefinition();
    }
    throw this.unexpected();
  };
  _proto.parseOperationDefinition = function parseOperationDefinition() {
    var start = this._lexer.token;
    if (this.peek(TokenKind.BRACE_L)) {
      return {
        kind: Kind.OPERATION_DEFINITION,
        operation: "query",
        name: void 0,
        variableDefinitions: [],
        directives: [],
        selectionSet: this.parseSelectionSet(),
        loc: this.loc(start)
      };
    }
    var operation = this.parseOperationType();
    var name2;
    if (this.peek(TokenKind.NAME)) {
      name2 = this.parseName();
    }
    return {
      kind: Kind.OPERATION_DEFINITION,
      operation,
      name: name2,
      variableDefinitions: this.parseVariableDefinitions(),
      directives: this.parseDirectives(false),
      selectionSet: this.parseSelectionSet(),
      loc: this.loc(start)
    };
  };
  _proto.parseOperationType = function parseOperationType() {
    var operationToken = this.expectToken(TokenKind.NAME);
    switch (operationToken.value) {
      case "query":
        return "query";
      case "mutation":
        return "mutation";
      case "subscription":
        return "subscription";
    }
    throw this.unexpected(operationToken);
  };
  _proto.parseVariableDefinitions = function parseVariableDefinitions() {
    return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);
  };
  _proto.parseVariableDefinition = function parseVariableDefinition() {
    var start = this._lexer.token;
    return {
      kind: Kind.VARIABLE_DEFINITION,
      variable: this.parseVariable(),
      type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),
      defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : void 0,
      directives: this.parseDirectives(true),
      loc: this.loc(start)
    };
  };
  _proto.parseVariable = function parseVariable() {
    var start = this._lexer.token;
    this.expectToken(TokenKind.DOLLAR);
    return {
      kind: Kind.VARIABLE,
      name: this.parseName(),
      loc: this.loc(start)
    };
  };
  _proto.parseSelectionSet = function parseSelectionSet() {
    var start = this._lexer.token;
    return {
      kind: Kind.SELECTION_SET,
      selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),
      loc: this.loc(start)
    };
  };
  _proto.parseSelection = function parseSelection() {
    return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();
  };
  _proto.parseField = function parseField() {
    var start = this._lexer.token;
    var nameOrAlias = this.parseName();
    var alias;
    var name2;
    if (this.expectOptionalToken(TokenKind.COLON)) {
      alias = nameOrAlias;
      name2 = this.parseName();
    } else {
      name2 = nameOrAlias;
    }
    return {
      kind: Kind.FIELD,
      alias,
      name: name2,
      arguments: this.parseArguments(false),
      directives: this.parseDirectives(false),
      selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0,
      loc: this.loc(start)
    };
  };
  _proto.parseArguments = function parseArguments(isConst) {
    var item = isConst ? this.parseConstArgument : this.parseArgument;
    return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);
  };
  _proto.parseArgument = function parseArgument() {
    var start = this._lexer.token;
    var name2 = this.parseName();
    this.expectToken(TokenKind.COLON);
    return {
      kind: Kind.ARGUMENT,
      name: name2,
      value: this.parseValueLiteral(false),
      loc: this.loc(start)
    };
  };
  _proto.parseConstArgument = function parseConstArgument() {
    var start = this._lexer.token;
    return {
      kind: Kind.ARGUMENT,
      name: this.parseName(),
      value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),
      loc: this.loc(start)
    };
  };
  _proto.parseFragment = function parseFragment() {
    var start = this._lexer.token;
    this.expectToken(TokenKind.SPREAD);
    var hasTypeCondition = this.expectOptionalKeyword("on");
    if (!hasTypeCondition && this.peek(TokenKind.NAME)) {
      return {
        kind: Kind.FRAGMENT_SPREAD,
        name: this.parseFragmentName(),
        directives: this.parseDirectives(false),
        loc: this.loc(start)
      };
    }
    return {
      kind: Kind.INLINE_FRAGMENT,
      typeCondition: hasTypeCondition ? this.parseNamedType() : void 0,
      directives: this.parseDirectives(false),
      selectionSet: this.parseSelectionSet(),
      loc: this.loc(start)
    };
  };
  _proto.parseFragmentDefinition = function parseFragmentDefinition() {
    var _this$_options;
    var start = this._lexer.token;
    this.expectKeyword("fragment");
    if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {
      return {
        kind: Kind.FRAGMENT_DEFINITION,
        name: this.parseFragmentName(),
        variableDefinitions: this.parseVariableDefinitions(),
        typeCondition: (this.expectKeyword("on"), this.parseNamedType()),
        directives: this.parseDirectives(false),
        selectionSet: this.parseSelectionSet(),
        loc: this.loc(start)
      };
    }
    return {
      kind: Kind.FRAGMENT_DEFINITION,
      name: this.parseFragmentName(),
      typeCondition: (this.expectKeyword("on"), this.parseNamedType()),
      directives: this.parseDirectives(false),
      selectionSet: this.parseSelectionSet(),
      loc: this.loc(start)
    };
  };
  _proto.parseFragmentName = function parseFragmentName() {
    if (this._lexer.token.value === "on") {
      throw this.unexpected();
    }
    return this.parseName();
  };
  _proto.parseValueLiteral = function parseValueLiteral(isConst) {
    var token2 = this._lexer.token;
    switch (token2.kind) {
      case TokenKind.BRACKET_L:
        return this.parseList(isConst);
      case TokenKind.BRACE_L:
        return this.parseObject(isConst);
      case TokenKind.INT:
        this._lexer.advance();
        return {
          kind: Kind.INT,
          value: token2.value,
          loc: this.loc(token2)
        };
      case TokenKind.FLOAT:
        this._lexer.advance();
        return {
          kind: Kind.FLOAT,
          value: token2.value,
          loc: this.loc(token2)
        };
      case TokenKind.STRING:
      case TokenKind.BLOCK_STRING:
        return this.parseStringLiteral();
      case TokenKind.NAME:
        this._lexer.advance();
        switch (token2.value) {
          case "true":
            return {
              kind: Kind.BOOLEAN,
              value: true,
              loc: this.loc(token2)
            };
          case "false":
            return {
              kind: Kind.BOOLEAN,
              value: false,
              loc: this.loc(token2)
            };
          case "null":
            return {
              kind: Kind.NULL,
              loc: this.loc(token2)
            };
          default:
            return {
              kind: Kind.ENUM,
              value: token2.value,
              loc: this.loc(token2)
            };
        }
      case TokenKind.DOLLAR:
        if (!isConst) {
          return this.parseVariable();
        }
        break;
    }
    throw this.unexpected();
  };
  _proto.parseStringLiteral = function parseStringLiteral() {
    var token2 = this._lexer.token;
    this._lexer.advance();
    return {
      kind: Kind.STRING,
      value: token2.value,
      block: token2.kind === TokenKind.BLOCK_STRING,
      loc: this.loc(token2)
    };
  };
  _proto.parseList = function parseList(isConst) {
    var _this = this;
    var start = this._lexer.token;
    var item = function item2() {
      return _this.parseValueLiteral(isConst);
    };
    return {
      kind: Kind.LIST,
      values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),
      loc: this.loc(start)
    };
  };
  _proto.parseObject = function parseObject(isConst) {
    var _this2 = this;
    var start = this._lexer.token;
    var item = function item2() {
      return _this2.parseObjectField(isConst);
    };
    return {
      kind: Kind.OBJECT,
      fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),
      loc: this.loc(start)
    };
  };
  _proto.parseObjectField = function parseObjectField(isConst) {
    var start = this._lexer.token;
    var name2 = this.parseName();
    this.expectToken(TokenKind.COLON);
    return {
      kind: Kind.OBJECT_FIELD,
      name: name2,
      value: this.parseValueLiteral(isConst),
      loc: this.loc(start)
    };
  };
  _proto.parseDirectives = function parseDirectives(isConst) {
    var directives = [];
    while (this.peek(TokenKind.AT)) {
      directives.push(this.parseDirective(isConst));
    }
    return directives;
  };
  _proto.parseDirective = function parseDirective(isConst) {
    var start = this._lexer.token;
    this.expectToken(TokenKind.AT);
    return {
      kind: Kind.DIRECTIVE,
      name: this.parseName(),
      arguments: this.parseArguments(isConst),
      loc: this.loc(start)
    };
  };
  _proto.parseTypeReference = function parseTypeReference() {
    var start = this._lexer.token;
    var type2;
    if (this.expectOptionalToken(TokenKind.BRACKET_L)) {
      type2 = this.parseTypeReference();
      this.expectToken(TokenKind.BRACKET_R);
      type2 = {
        kind: Kind.LIST_TYPE,
        type: type2,
        loc: this.loc(start)
      };
    } else {
      type2 = this.parseNamedType();
    }
    if (this.expectOptionalToken(TokenKind.BANG)) {
      return {
        kind: Kind.NON_NULL_TYPE,
        type: type2,
        loc: this.loc(start)
      };
    }
    return type2;
  };
  _proto.parseNamedType = function parseNamedType() {
    var start = this._lexer.token;
    return {
      kind: Kind.NAMED_TYPE,
      name: this.parseName(),
      loc: this.loc(start)
    };
  };
  _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {
    var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;
    if (keywordToken.kind === TokenKind.NAME) {
      switch (keywordToken.value) {
        case "schema":
          return this.parseSchemaDefinition();
        case "scalar":
          return this.parseScalarTypeDefinition();
        case "type":
          return this.parseObjectTypeDefinition();
        case "interface":
          return this.parseInterfaceTypeDefinition();
        case "union":
          return this.parseUnionTypeDefinition();
        case "enum":
          return this.parseEnumTypeDefinition();
        case "input":
          return this.parseInputObjectTypeDefinition();
        case "directive":
          return this.parseDirectiveDefinition();
      }
    }
    throw this.unexpected(keywordToken);
  };
  _proto.peekDescription = function peekDescription() {
    return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);
  };
  _proto.parseDescription = function parseDescription() {
    if (this.peekDescription()) {
      return this.parseStringLiteral();
    }
  };
  _proto.parseSchemaDefinition = function parseSchemaDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("schema");
    var directives = this.parseDirectives(true);
    var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);
    return {
      kind: Kind.SCHEMA_DEFINITION,
      description,
      directives,
      operationTypes,
      loc: this.loc(start)
    };
  };
  _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {
    var start = this._lexer.token;
    var operation = this.parseOperationType();
    this.expectToken(TokenKind.COLON);
    var type2 = this.parseNamedType();
    return {
      kind: Kind.OPERATION_TYPE_DEFINITION,
      operation,
      type: type2,
      loc: this.loc(start)
    };
  };
  _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("scalar");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.SCALAR_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      loc: this.loc(start)
    };
  };
  _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("type");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    return {
      kind: Kind.OBJECT_TYPE_DEFINITION,
      description,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start)
    };
  };
  _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {
    var _this$_options2;
    if (!this.expectOptionalKeyword("implements")) {
      return [];
    }
    if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {
      var types = [];
      this.expectOptionalToken(TokenKind.AMP);
      do {
        types.push(this.parseNamedType());
      } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));
      return types;
    }
    return this.delimitedMany(TokenKind.AMP, this.parseNamedType);
  };
  _proto.parseFieldsDefinition = function parseFieldsDefinition() {
    var _this$_options3;
    if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {
      this._lexer.advance();
      this._lexer.advance();
      return [];
    }
    return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);
  };
  _proto.parseFieldDefinition = function parseFieldDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    var name2 = this.parseName();
    var args = this.parseArgumentDefs();
    this.expectToken(TokenKind.COLON);
    var type2 = this.parseTypeReference();
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.FIELD_DEFINITION,
      description,
      name: name2,
      arguments: args,
      type: type2,
      directives,
      loc: this.loc(start)
    };
  };
  _proto.parseArgumentDefs = function parseArgumentDefs() {
    return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);
  };
  _proto.parseInputValueDef = function parseInputValueDef() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    var name2 = this.parseName();
    this.expectToken(TokenKind.COLON);
    var type2 = this.parseTypeReference();
    var defaultValue;
    if (this.expectOptionalToken(TokenKind.EQUALS)) {
      defaultValue = this.parseValueLiteral(true);
    }
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.INPUT_VALUE_DEFINITION,
      description,
      name: name2,
      type: type2,
      defaultValue,
      directives,
      loc: this.loc(start)
    };
  };
  _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("interface");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    return {
      kind: Kind.INTERFACE_TYPE_DEFINITION,
      description,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start)
    };
  };
  _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("union");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var types = this.parseUnionMemberTypes();
    return {
      kind: Kind.UNION_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      types,
      loc: this.loc(start)
    };
  };
  _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {
    return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];
  };
  _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("enum");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var values = this.parseEnumValuesDefinition();
    return {
      kind: Kind.ENUM_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      values,
      loc: this.loc(start)
    };
  };
  _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {
    return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);
  };
  _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    return {
      kind: Kind.ENUM_VALUE_DEFINITION,
      description,
      name: name2,
      directives,
      loc: this.loc(start)
    };
  };
  _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("input");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var fields = this.parseInputFieldsDefinition();
    return {
      kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,
      description,
      name: name2,
      directives,
      fields,
      loc: this.loc(start)
    };
  };
  _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {
    return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);
  };
  _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {
    var keywordToken = this._lexer.lookahead();
    if (keywordToken.kind === TokenKind.NAME) {
      switch (keywordToken.value) {
        case "schema":
          return this.parseSchemaExtension();
        case "scalar":
          return this.parseScalarTypeExtension();
        case "type":
          return this.parseObjectTypeExtension();
        case "interface":
          return this.parseInterfaceTypeExtension();
        case "union":
          return this.parseUnionTypeExtension();
        case "enum":
          return this.parseEnumTypeExtension();
        case "input":
          return this.parseInputObjectTypeExtension();
      }
    }
    throw this.unexpected(keywordToken);
  };
  _proto.parseSchemaExtension = function parseSchemaExtension() {
    var start = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("schema");
    var directives = this.parseDirectives(true);
    var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);
    if (directives.length === 0 && operationTypes.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.SCHEMA_EXTENSION,
      directives,
      operationTypes,
      loc: this.loc(start)
    };
  };
  _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {
    var start = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("scalar");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    if (directives.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.SCALAR_TYPE_EXTENSION,
      name: name2,
      directives,
      loc: this.loc(start)
    };
  };
  _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {
    var start = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("type");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.OBJECT_TYPE_EXTENSION,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start)
    };
  };
  _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {
    var start = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("interface");
    var name2 = this.parseName();
    var interfaces = this.parseImplementsInterfaces();
    var directives = this.parseDirectives(true);
    var fields = this.parseFieldsDefinition();
    if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.INTERFACE_TYPE_EXTENSION,
      name: name2,
      interfaces,
      directives,
      fields,
      loc: this.loc(start)
    };
  };
  _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {
    var start = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("union");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var types = this.parseUnionMemberTypes();
    if (directives.length === 0 && types.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.UNION_TYPE_EXTENSION,
      name: name2,
      directives,
      types,
      loc: this.loc(start)
    };
  };
  _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {
    var start = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("enum");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var values = this.parseEnumValuesDefinition();
    if (directives.length === 0 && values.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.ENUM_TYPE_EXTENSION,
      name: name2,
      directives,
      values,
      loc: this.loc(start)
    };
  };
  _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {
    var start = this._lexer.token;
    this.expectKeyword("extend");
    this.expectKeyword("input");
    var name2 = this.parseName();
    var directives = this.parseDirectives(true);
    var fields = this.parseInputFieldsDefinition();
    if (directives.length === 0 && fields.length === 0) {
      throw this.unexpected();
    }
    return {
      kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,
      name: name2,
      directives,
      fields,
      loc: this.loc(start)
    };
  };
  _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {
    var start = this._lexer.token;
    var description = this.parseDescription();
    this.expectKeyword("directive");
    this.expectToken(TokenKind.AT);
    var name2 = this.parseName();
    var args = this.parseArgumentDefs();
    var repeatable = this.expectOptionalKeyword("repeatable");
    this.expectKeyword("on");
    var locations = this.parseDirectiveLocations();
    return {
      kind: Kind.DIRECTIVE_DEFINITION,
      description,
      name: name2,
      arguments: args,
      repeatable,
      locations,
      loc: this.loc(start)
    };
  };
  _proto.parseDirectiveLocations = function parseDirectiveLocations() {
    return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);
  };
  _proto.parseDirectiveLocation = function parseDirectiveLocation() {
    var start = this._lexer.token;
    var name2 = this.parseName();
    if (DirectiveLocation[name2.value] !== void 0) {
      return name2;
    }
    throw this.unexpected(start);
  };
  _proto.loc = function loc(startToken) {
    var _this$_options4;
    if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {
      return new Location(startToken, this._lexer.lastToken, this._lexer.source);
    }
  };
  _proto.peek = function peek(kind) {
    return this._lexer.token.kind === kind;
  };
  _proto.expectToken = function expectToken(kind) {
    var token2 = this._lexer.token;
    if (token2.kind === kind) {
      this._lexer.advance();
      return token2;
    }
    throw syntaxError(this._lexer.source, token2.start, "Expected ".concat(getTokenKindDesc(kind), ", found ").concat(getTokenDesc(token2), "."));
  };
  _proto.expectOptionalToken = function expectOptionalToken(kind) {
    var token2 = this._lexer.token;
    if (token2.kind === kind) {
      this._lexer.advance();
      return token2;
    }
    return void 0;
  };
  _proto.expectKeyword = function expectKeyword(value) {
    var token2 = this._lexer.token;
    if (token2.kind === TokenKind.NAME && token2.value === value) {
      this._lexer.advance();
    } else {
      throw syntaxError(this._lexer.source, token2.start, 'Expected "'.concat(value, '", found ').concat(getTokenDesc(token2), "."));
    }
  };
  _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {
    var token2 = this._lexer.token;
    if (token2.kind === TokenKind.NAME && token2.value === value) {
      this._lexer.advance();
      return true;
    }
    return false;
  };
  _proto.unexpected = function unexpected(atToken) {
    var token2 = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;
    return syntaxError(this._lexer.source, token2.start, "Unexpected ".concat(getTokenDesc(token2), "."));
  };
  _proto.any = function any(openKind, parseFn, closeKind) {
    this.expectToken(openKind);
    var nodes = [];
    while (!this.expectOptionalToken(closeKind)) {
      nodes.push(parseFn.call(this));
    }
    return nodes;
  };
  _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {
    if (this.expectOptionalToken(openKind)) {
      var nodes = [];
      do {
        nodes.push(parseFn.call(this));
      } while (!this.expectOptionalToken(closeKind));
      return nodes;
    }
    return [];
  };
  _proto.many = function many(openKind, parseFn, closeKind) {
    this.expectToken(openKind);
    var nodes = [];
    do {
      nodes.push(parseFn.call(this));
    } while (!this.expectOptionalToken(closeKind));
    return nodes;
  };
  _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {
    this.expectOptionalToken(delimiterKind);
    var nodes = [];
    do {
      nodes.push(parseFn.call(this));
    } while (this.expectOptionalToken(delimiterKind));
    return nodes;
  };
  return Parser2;
}();
function getTokenDesc(token2) {
  var value = token2.value;
  return getTokenKindDesc(token2.kind) + (value != null ? ' "'.concat(value, '"') : "");
}
function getTokenKindDesc(kind) {
  return isPunctuatorTokenKind(kind) ? '"'.concat(kind, '"') : kind;
}
function l$1(a2, b2) {
  b2.tag = a2;
  return b2;
}
function m() {
}
function p$1(a2) {
  return function(b2) {
    var c2 = a2.length;
    let d2 = false, e = false, f2 = false, g = 0;
    b2(
      l$1(0, [
        function(h2) {
          if (h2) {
            d2 = true;
          } else if (e) {
            f2 = true;
          } else {
            for (e = f2 = true; f2 && !d2; ) {
              g < c2 ? (h2 = a2[g], g = g + 1 | 0, f2 = false, b2(l$1(1, [h2]))) : (d2 = true, b2(0));
            }
            e = false;
          }
        }
      ])
    );
  };
}
function r() {
}
function t(a2) {
  a2(0);
}
function u$2(a2) {
  let b2 = false;
  a2(
    l$1(0, [
      function(c2) {
        c2 ? b2 = true : b2 || a2(0);
      }
    ])
  );
}
function C(a2) {
  return a2(0);
}
function D$1(a2) {
  return function(b2) {
    return function(c2) {
      let e = m, f2 = false, g = [], h2 = false;
      b2(function(b3) {
        "number" == typeof b3 ? h2 || (h2 = true, 0 === g.length && c2(0)) : b3.tag ? h2 || (f2 = false, function(a3) {
          function b4(a4) {
            "number" == typeof a4 ? 0 !== g.length && (g = g.filter(d2), a4 = 0 === g.length, h2 && a4 ? c2(0) : !f2 && a4 && (f2 = true, e(0))) : a4.tag ? 0 !== g.length && (c2(l$1(1, [a4[0]])), k(0)) : (k = a4 = a4[0], g = g.concat(a4), a4(0));
          }
          function d2(a4) {
            return a4 !== k;
          }
          let k = m;
          1 === a3.length ? a3(b4) : a3.bind(null, b4);
        }(a2(b3[0])), f2 || (f2 = true, e(0))) : e = b3[0];
      });
      c2(
        l$1(0, [
          function(a3) {
            a3 ? (h2 || (h2 = true, e(a3)), g.forEach(function(c3) {
              return c3(a3);
            }), g = []) : (f2 || h2 ? f2 = false : (f2 = true, e(0)), g.forEach(C));
          }
        ])
      );
    };
  };
}
function E$1(a2) {
  return a2;
}
function H(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = false;
      return b2(function(e) {
        if ("number" == typeof e) {
          d2 || (d2 = true, c2(e));
        } else if (e.tag) {
          d2 || (a2(e[0]), c2(e));
        } else {
          var g = e[0];
          c2(
            l$1(0, [
              function(a3) {
                if (!d2) {
                  return a3 && (d2 = true), g(a3);
                }
              }
            ])
          );
        }
      });
    };
  };
}
function J$1(a2) {
  a2(0);
}
function K(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        h2 && ("number" == typeof a3 ? (h2 = false, n ? c2(a3) : f2 || (f2 = true, e(0))) : a3.tag ? (c2(a3), k ? k = false : g(0)) : (g = a3 = a3[0], k = false, a3(0)));
      }
      let e = m, f2 = false, g = m, h2 = false, k = false, n = false;
      b2(function(b3) {
        "number" == typeof b3 ? n || (n = true, h2 || c2(0)) : b3.tag ? n || (h2 && (g(1), g = m), f2 ? f2 = false : (f2 = true, e(0)), b3 = a2(b3[0]), h2 = true, b3(d2)) : e = b3[0];
      });
      c2(
        l$1(0, [
          function(a3) {
            if (a3) {
              if (n || (n = true, e(1)), h2) {
                return h2 = false, g(1);
              }
            } else {
              n || f2 || (f2 = true, e(0)), h2 && !k && (k = true, g(0));
            }
          }
        ])
      );
    };
  };
}
function M(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = [], e = m;
      return b2(function(b3) {
        "number" == typeof b3 ? p$1(d2)(c2) : b3.tag ? (d2.length >= a2 && 0 < a2 && d2.shift(), d2.push(b3[0]), e(0)) : (b3 = b3[0], 0 >= a2 ? (b3(1), u$2(c2)) : (e = b3, b3(0)));
      });
    };
  };
}
function N$1(a2) {
  return function(b2) {
    let c2 = m, d2 = false;
    b2(function(e) {
      "number" == typeof e ? d2 = true : e.tag ? d2 || (a2(e[0]), c2(0)) : (c2 = e = e[0], e(0));
    });
    return {
      unsubscribe: function() {
        if (!d2) {
          return d2 = true, c2(1);
        }
      }
    };
  };
}
function O() {
}
function buffer$1(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        "number" == typeof a3 ? k || (k = true, f2(1), 0 < e.length && c2(l$1(1, [e])), c2(0)) : a3.tag ? !k && 0 < e.length && (a3 = e, e = [], c2(l$1(1, [a3]))) : g = a3[0];
      }
      let e = [], f2 = m, g = m, h2 = false, k = false;
      b2(function(b3) {
        "number" == typeof b3 ? k || (k = true, g(1), 0 < e.length && c2(l$1(1, [e])), c2(0)) : b3.tag ? k || (e.push(b3[0]), h2 ? h2 = false : (h2 = true, f2(0), g(0))) : (f2 = b3[0], a2(d2));
      });
      c2(
        l$1(0, [
          function(a3) {
            if (!k) {
              if (a3) {
                return k = true, f2(1), g(1);
              }
              if (!h2) {
                return h2 = true, f2(0), g(0);
              }
            }
          }
        ])
      );
    };
  };
}
function filter$1(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = m;
      return b2(function(b3) {
        "number" == typeof b3 ? c2(b3) : b3.tag ? a2(b3[0]) ? c2(b3) : d2(0) : (d2 = b3[0], c2(b3));
      });
    };
  };
}
function fromPromise$1(a2) {
  return function(b2) {
    let c2 = false;
    a2.then(function(a3) {
      c2 || (b2(l$1(1, [a3])), b2(0));
      return Promise.resolve(void 0);
    });
    b2(
      l$1(0, [
        function(a3) {
          a3 && (c2 = true);
        }
      ])
    );
  };
}
function fromValue$1(a2) {
  return function(b2) {
    let c2 = false;
    b2(
      l$1(0, [
        function(d2) {
          d2 ? c2 = true : c2 || (c2 = true, b2(l$1(1, [a2])), b2(0));
        }
      ])
    );
  };
}
function make$1(a2) {
  return function(b2) {
    let c2 = r, d2 = false;
    c2 = a2({
      next: function(a3) {
        d2 || b2(l$1(1, [a3]));
      },
      complete: function() {
        d2 || (d2 = true, b2(0));
      }
    });
    b2(
      l$1(0, [
        function(a3) {
          if (a3 && !d2) {
            return d2 = true, c2();
          }
        }
      ])
    );
  };
}
function makeSubject$1() {
  let a2 = [], b2 = false;
  return {
    source: function(c2) {
      function b3(a3) {
        return a3 !== c2;
      }
      a2 = a2.concat(c2);
      c2(
        l$1(0, [
          function(c3) {
            c3 && (a2 = a2.filter(b3));
          }
        ])
      );
    },
    next: function(c2) {
      b2 || a2.forEach(function(a3) {
        a3(l$1(1, [c2]));
      });
    },
    complete: function() {
      b2 || (b2 = true, a2.forEach(t));
    }
  };
}
function map$1$1(a2) {
  return function(b2) {
    return function(c2) {
      return b2(function(b3) {
        b3 = "number" == typeof b3 ? 0 : b3.tag ? l$1(1, [a2(b3[0])]) : l$1(0, [b3[0]]);
        c2(b3);
      });
    };
  };
}
function merge$1(a2) {
  return D$1(E$1)(p$1(a2));
}
function onEnd$1(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = false;
      return b2(function(b3) {
        if ("number" == typeof b3) {
          if (d2) {
            return;
          }
          d2 = true;
          c2(b3);
          return a2();
        }
        if (b3.tag) {
          d2 || c2(b3);
        } else {
          var e = b3[0];
          c2(
            l$1(0, [
              function(c3) {
                if (!d2) {
                  return c3 ? (d2 = true, e(c3), a2()) : e(c3);
                }
              }
            ])
          );
        }
      });
    };
  };
}
function onStart$1(a2) {
  return function(b2) {
    return function(c2) {
      return b2(function(b3) {
        "number" == typeof b3 ? c2(b3) : b3.tag ? c2(b3) : (c2(b3), a2());
      });
    };
  };
}
function pipe() {
  for (var a2 = arguments, b2 = arguments[0], c2 = 1, d2 = arguments.length; c2 < d2; c2++) {
    b2 = a2[c2](b2);
  }
  return b2;
}
function publish$1(a2) {
  return N$1(O)(a2);
}
function share$1(a2) {
  function b2(a3) {
    "number" == typeof a3 ? (c2.forEach(J$1), c2 = []) : a3.tag ? (e = false, c2.forEach(function(b3) {
      b3(a3);
    })) : d2 = a3[0];
  }
  let c2 = [], d2 = m, e = false;
  return function(f2) {
    function g(a3) {
      return a3 !== f2;
    }
    c2 = c2.concat(f2);
    1 === c2.length && a2(b2);
    f2(
      l$1(0, [
        function(a3) {
          if (a3) {
            if (c2 = c2.filter(g), 0 === c2.length) {
              return d2(1);
            }
          } else {
            e || (e = true, d2(a3));
          }
        }
      ])
    );
  };
}
function skipUntil$1(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        "number" == typeof a3 ? g && (k = true, e(1)) : a3.tag ? (g = false, f2(1)) : (f2 = a3 = a3[0], a3(0));
      }
      let e = m, f2 = m, g = true, h2 = false, k = false;
      b2(function(b3) {
        "number" == typeof b3 ? (g && f2(1), k = true, c2(0)) : b3.tag ? g || k ? h2 ? h2 = false : (h2 = true, e(0), f2(0)) : (h2 = false, c2(b3)) : (e = b3[0], a2(d2));
      });
      c2(
        l$1(0, [
          function(a3) {
            if (!k) {
              if (a3) {
                if (k = true, e(1), g) {
                  return f2(1);
                }
              } else {
                h2 || (h2 = true, g && f2(0), e(0));
              }
            }
          }
        ])
      );
    };
  };
}
function take$1(a2) {
  return function(b2) {
    return function(c2) {
      let d2 = false, e = 0, f2 = m;
      b2(function(b3) {
        "number" == typeof b3 ? d2 || (d2 = true, c2(0)) : b3.tag ? e < a2 && !d2 && (e = e + 1 | 0, c2(b3), !d2 && e >= a2 && (d2 = true, c2(0), f2(1))) : (b3 = b3[0], 0 >= a2 ? (d2 = true, c2(0), b3(1)) : f2 = b3);
      });
      c2(
        l$1(0, [
          function(b3) {
            if (!d2) {
              if (b3) {
                return d2 = true, f2(1);
              }
              if (e < a2) {
                return f2(0);
              }
            }
          }
        ])
      );
    };
  };
}
function takeUntil$1(a2) {
  return function(b2) {
    return function(c2) {
      function d2(a3) {
        "number" != typeof a3 && (a3.tag ? (e = true, f2(1), c2(0)) : (g = a3 = a3[0], a3(0)));
      }
      let e = false, f2 = m, g = m;
      b2(function(b3) {
        "number" == typeof b3 ? e || (e = true, g(1), c2(0)) : b3.tag ? e || c2(b3) : (f2 = b3[0], a2(d2));
      });
      c2(
        l$1(0, [
          function(a3) {
            if (!e) {
              return a3 ? (e = true, f2(1), g(1)) : f2(0);
            }
          }
        ])
      );
    };
  };
}
function toPromise$1(a2) {
  return new Promise(function(b2) {
    M(1)(a2)(function(a3) {
      if ("number" != typeof a3) {
        if (a3.tag) {
          b2(a3[0]);
        } else {
          a3[0](0);
        }
      }
    });
  });
}
"function" == typeof Symbol ? Symbol.observable || (Symbol.observable = Symbol("observable")) : "@@observable";
function rehydrateGraphQlError(r2) {
  if ("string" == typeof r2) {
    return new GraphQLError(r2);
  } else if ("object" == typeof r2 && r2.message) {
    return new GraphQLError(r2.message, r2.nodes, r2.source, r2.positions, r2.path, r2, r2.extensions || {});
  } else {
    return r2;
  }
}
var o = function(e) {
  function CombinedError(r2) {
    var t2 = r2.networkError;
    var n = r2.response;
    var a2 = (r2.graphQLErrors || []).map(rehydrateGraphQlError);
    var o2 = function generateErrorMessage(e2, r3) {
      var t3 = "";
      if (void 0 !== e2) {
        return t3 = "[Network] " + e2.message;
      }
      if (void 0 !== r3) {
        r3.forEach(function(e3) {
          t3 += "[GraphQL] " + e3.message + "\n";
        });
      }
      return t3.trim();
    }(t2, a2);
    e.call(this, o2);
    this.name = "CombinedError";
    this.message = o2;
    this.graphQLErrors = a2;
    this.networkError = t2;
    this.response = n;
  }
  if (e) {
    CombinedError.__proto__ = e;
  }
  (CombinedError.prototype = Object.create(e && e.prototype)).constructor = CombinedError;
  CombinedError.prototype.toString = function toString2() {
    return this.message;
  };
  return CombinedError;
}(Error);
function phash(e, r2) {
  e |= 0;
  for (var t2 = 0, n = 0 | r2.length; t2 < n; t2++) {
    e = (e << 5) + e + r2.charCodeAt(t2);
  }
  return e;
}
function hash$2(e) {
  return phash(5381, e) >>> 0;
}
var i$2 = /* @__PURE__ */ new Set();
var s = /* @__PURE__ */ new WeakMap();
function stringify(e) {
  if (null === e || i$2.has(e)) {
    return "null";
  } else if ("object" != typeof e) {
    return JSON.stringify(e) || "";
  } else if (e.toJSON) {
    return stringify(e.toJSON());
  } else if (Array.isArray(e)) {
    var r2 = "[";
    for (var t2 = 0, n = e.length; t2 < n; t2++) {
      if (t2 > 0) {
        r2 += ",";
      }
      var a2 = stringify(e[t2]);
      r2 += a2.length > 0 ? a2 : "null";
    }
    return r2 += "]";
  }
  var o2 = Object.keys(e).sort();
  if (!o2.length && e.constructor && e.constructor !== Object) {
    var u2 = s.get(e) || Math.random().toString(36).slice(2);
    s.set(e, u2);
    return '{"__key":"' + u2 + '"}';
  }
  i$2.add(e);
  var f2 = "{";
  for (var c2 = 0, l2 = o2.length; c2 < l2; c2++) {
    var h2 = o2[c2];
    var p2 = stringify(e[h2]);
    if (p2) {
      if (f2.length > 1) {
        f2 += ",";
      }
      f2 += stringify(h2) + ":" + p2;
    }
  }
  i$2.delete(e);
  return f2 += "}";
}
function stringifyVariables(e) {
  i$2.clear();
  return stringify(e);
}
var u$1 = /("{3}[\s\S]*"{3}|"(?:\\.|[^"])*")/g;
var f = /([\s,]|#[^\n\r]+)+/g;
function replaceOutsideStrings(e, r2) {
  return r2 % 2 == 0 ? e.replace(f, " ").trim() : e;
}
function stringifyDocument(e) {
  var r2 = ("string" != typeof e ? e.loc && e.loc.source.body || print$1(e) : e).split(u$1).map(replaceOutsideStrings).join("");
  if ("string" != typeof e) {
    var t2 = "definitions" in e && getOperationName$1(e);
    if (t2) {
      r2 = "# " + t2 + "\n" + r2;
    }
    if (!e.loc) {
      e.loc = {
        start: 0,
        end: r2.length,
        source: {
          body: r2,
          name: "gql",
          locationOffset: {
            line: 1,
            column: 1
          }
        }
      };
    }
  }
  return r2;
}
var c$1 = /* @__PURE__ */ new Map();
function keyDocument(e) {
  var r2;
  var n;
  if ("string" == typeof e) {
    r2 = hash$2(stringifyDocument(e));
    n = c$1.get(r2) || parse$4(e, {
      noLocation: true
    });
  } else {
    r2 = e.__key || hash$2(stringifyDocument(e));
    n = c$1.get(r2) || e;
  }
  if (!n.loc) {
    stringifyDocument(n);
  }
  n.__key = r2;
  c$1.set(r2, n);
  return n;
}
function createRequest(e, r2) {
  if (!r2) {
    r2 = {};
  }
  var t2 = keyDocument(e);
  return {
    key: phash(t2.__key, stringifyVariables(r2)) >>> 0,
    query: t2,
    variables: r2
  };
}
function getOperationName$1(e) {
  for (var t2 = 0, n = e.definitions.length; t2 < n; t2++) {
    var a2 = e.definitions[t2];
    if (a2.kind === Kind.OPERATION_DEFINITION && a2.name) {
      return a2.name.value;
    }
  }
}
function getOperationType(e) {
  for (var t2 = 0, n = e.definitions.length; t2 < n; t2++) {
    var a2 = e.definitions[t2];
    if (a2.kind === Kind.OPERATION_DEFINITION) {
      return a2.operation;
    }
  }
}
function _extends$3() {
  return (_extends$3 = Object.assign || function(e) {
    for (var r2 = 1; r2 < arguments.length; r2++) {
      var t2 = arguments[r2];
      for (var n in t2) {
        if (Object.prototype.hasOwnProperty.call(t2, n)) {
          e[n] = t2[n];
        }
      }
    }
    return e;
  }).apply(this, arguments);
}
function makeResult(e, r2, t2) {
  if (!("data" in r2) && !("errors" in r2) || "path" in r2) {
    throw new Error("No Content");
  }
  return {
    operation: e,
    data: r2.data,
    error: Array.isArray(r2.errors) ? new o({
      graphQLErrors: r2.errors,
      response: t2
    }) : void 0,
    extensions: "object" == typeof r2.extensions && r2.extensions || void 0,
    hasNext: !!r2.hasNext
  };
}
function mergeResultPatch(e, r2, t2) {
  var n = _extends$3({}, e);
  n.hasNext = !!r2.hasNext;
  if (!("path" in r2)) {
    if ("data" in r2) {
      n.data = r2.data;
    }
    return n;
  }
  if (Array.isArray(r2.errors)) {
    n.error = new o({
      graphQLErrors: n.error ? n.error.graphQLErrors.concat(r2.errors) : r2.errors,
      response: t2
    });
  }
  var a2 = n.data = _extends$3({}, n.data);
  var i2 = 0;
  var s2;
  while (i2 < r2.path.length) {
    a2 = a2[s2 = r2.path[i2++]] = Array.isArray(a2[s2]) ? [].concat(a2[s2]) : _extends$3({}, a2[s2]);
  }
  _extends$3(a2, r2.data);
  return n;
}
function makeErrorResult(e, r2, t2) {
  return {
    operation: e,
    data: void 0,
    error: new o({
      networkError: r2,
      response: t2
    }),
    extensions: void 0
  };
}
function shouldUseGet(e) {
  return "query" === e.kind && !!e.context.preferGetMethod;
}
function makeFetchBody(e) {
  return {
    query: print$1(e.query),
    operationName: getOperationName$1(e.query),
    variables: e.variables || void 0,
    extensions: void 0
  };
}
function makeFetchURL(e, r2) {
  var t2 = shouldUseGet(e);
  var n = e.context.url;
  if (!t2 || !r2) {
    return n;
  }
  var a2 = [];
  if (r2.operationName) {
    a2.push("operationName=" + encodeURIComponent(r2.operationName));
  }
  if (r2.query) {
    a2.push("query=" + encodeURIComponent(r2.query.replace(/#[^\n\r]+/g, " ").trim()));
  }
  if (r2.variables) {
    a2.push("variables=" + encodeURIComponent(stringifyVariables(r2.variables)));
  }
  if (r2.extensions) {
    a2.push("extensions=" + encodeURIComponent(stringifyVariables(r2.extensions)));
  }
  var o2 = n + "?" + a2.join("&");
  if (o2.length > 2047) {
    e.context.preferGetMethod = false;
    return n;
  }
  return o2;
}
function makeFetchOptions(e, r2) {
  var t2 = shouldUseGet(e);
  var n = "function" == typeof e.context.fetchOptions ? e.context.fetchOptions() : e.context.fetchOptions || {};
  return _extends$3({}, n, {
    body: !t2 && r2 ? JSON.stringify(r2) : void 0,
    method: t2 ? "GET" : "POST",
    headers: t2 ? n.headers : _extends$3({}, {
      "content-type": "application/json"
    }, n.headers)
  });
}
var l = "undefined" != typeof Symbol ? Symbol.asyncIterator : null;
var h = "undefined" != typeof TextDecoder ? new TextDecoder() : null;
var p = /content-type:[^\r\n]*application\/json/i;
var d = /boundary="?([^=";]+)"?/i;
function makeFetchSource(e, r2, t2) {
  var n = "manual" === t2.redirect ? 400 : 300;
  var o2 = e.context.fetch;
  return make$1(function(a2) {
    var i2 = a2.next;
    var s2 = a2.complete;
    var u2 = "undefined" != typeof AbortController ? new AbortController() : null;
    if (u2) {
      t2.signal = u2.signal;
    }
    var f2 = false;
    function executeIncrementalFetch(e2, r3, t3) {
      var n2 = t3.headers && t3.headers.get("Content-Type") || "";
      if (!/multipart\/mixed/i.test(n2)) {
        return t3.json().then(function(n3) {
          var a4 = makeResult(r3, n3, t3);
          f2 = true;
          e2(a4);
        });
      }
      var a3 = "---";
      var o3 = n2.match(d);
      if (o3) {
        a3 = "--" + o3[1];
      }
      var i3;
      var cancel = function() {
      };
      if (l && t3[l]) {
        var s3 = t3[l]();
        i3 = s3.next.bind(s3);
      } else if ("body" in t3 && t3.body) {
        var u3 = t3.body.getReader();
        cancel = u3.cancel.bind(u3);
        i3 = u3.read.bind(u3);
      } else {
        throw new TypeError("Streaming requests unsupported");
      }
      var c3 = "";
      var v2 = true;
      var m3 = null;
      var g = null;
      return i3().then(function next(n3) {
        if (!n3.done) {
          var o4 = function toString2(e3) {
            return "Buffer" === e3.constructor.name ? e3.toString() : h.decode(e3);
          }(n3.value);
          var s4 = o4.indexOf(a3);
          if (s4 > -1) {
            s4 += c3.length;
          } else {
            s4 = c3.indexOf(a3);
          }
          c3 += o4;
          while (s4 > -1) {
            var u4 = c3.slice(0, s4);
            var l2 = c3.slice(s4 + a3.length);
            if (v2) {
              v2 = false;
            } else {
              var d2 = u4.indexOf("\r\n\r\n") + 4;
              var y2 = u4.slice(0, d2);
              var x2 = u4.slice(d2, u4.lastIndexOf("\r\n"));
              var b2 = void 0;
              if (p.test(y2)) {
                try {
                  b2 = JSON.parse(x2);
                  m3 = g = g ? mergeResultPatch(g, b2, t3) : makeResult(r3, b2, t3);
                } catch (e3) {
                }
              }
              if ("--" === l2.slice(0, 2) || b2 && !b2.hasNext) {
                if (!g) {
                  return e2(makeResult(r3, {}, t3));
                }
                break;
              }
            }
            s4 = (c3 = l2).indexOf(a3);
          }
        } else {
          f2 = true;
        }
        if (m3) {
          e2(m3);
          m3 = null;
        }
        if (!n3.done && (!g || g.hasNext)) {
          return i3().then(next);
        }
      }).finally(cancel);
    }
    var c2 = false;
    var v = false;
    var m2;
    Promise.resolve().then(function() {
      if (c2) {
        return;
      }
      return (o2 || fetch)(r2, t2);
    }).then(function(r3) {
      if (!r3) {
        return;
      }
      v = (m2 = r3).status < 200 || m2.status >= n;
      return executeIncrementalFetch(i2, e, m2);
    }).then(s2).catch(function(r3) {
      if (f2) {
        throw r3;
      }
      if ("AbortError" !== r3.name) {
        var t3 = makeErrorResult(e, v ? new Error(m2.statusText) : r3, m2);
        i2(t3);
        s2();
      }
    });
    return function() {
      c2 = true;
      if (u2) {
        u2.abort();
      }
    };
  });
}
function collectTypes(e, n) {
  if (Array.isArray(e)) {
    for (var r2 = 0; r2 < e.length; r2++) {
      collectTypes(e[r2], n);
    }
  } else if ("object" == typeof e && null !== e) {
    for (var t2 in e) {
      if ("__typename" === t2 && "string" == typeof e[t2]) {
        n[e[t2]] = 0;
      } else {
        collectTypes(e[t2], n);
      }
    }
  }
  return n;
}
function collectTypesFromResponse(e) {
  return Object.keys(collectTypes(e, {}));
}
var formatNode = function(e) {
  if (e.selectionSet && !e.selectionSet.selections.some(function(e2) {
    return e2.kind === Kind.FIELD && "__typename" === e2.name.value && !e2.alias;
  })) {
    return _extends$3({}, e, {
      selectionSet: _extends$3({}, e.selectionSet, {
        selections: e.selectionSet.selections.concat([{
          kind: Kind.FIELD,
          name: {
            kind: Kind.NAME,
            value: "__typename"
          }
        }])
      })
    });
  }
};
var F$1 = /* @__PURE__ */ new Map();
function formatDocument(n) {
  var r2 = keyDocument(n);
  var a2 = F$1.get(r2.__key);
  if (!a2) {
    a2 = visit$1(r2, {
      Field: formatNode,
      InlineFragment: formatNode
    });
    Object.defineProperty(a2, "__key", {
      value: r2.__key,
      enumerable: false
    });
    F$1.set(r2.__key, a2);
  }
  return a2;
}
function maskTypename(e) {
  if (!e || "object" != typeof e) {
    return e;
  }
  return Object.keys(e).reduce(function(n, r2) {
    var t2 = e[r2];
    if ("__typename" === r2) {
      Object.defineProperty(n, "__typename", {
        enumerable: false,
        value: t2
      });
    } else if (Array.isArray(t2)) {
      n[r2] = t2.map(maskTypename);
    } else if (t2 && "object" == typeof t2 && "__typename" in t2) {
      n[r2] = maskTypename(t2);
    } else {
      n[r2] = t2;
    }
    return n;
  }, Array.isArray(e) ? [] : {});
}
function withPromise(e) {
  e.toPromise = function() {
    return new Promise(function(n) {
      var r2 = N$1(function(e2) {
        if (!e2.stale && !e2.hasNext) {
          Promise.resolve().then(function() {
            r2.unsubscribe();
            n(e2);
          });
        }
      })(e);
    });
  };
  return e;
}
function makeOperation(e, n, r2) {
  if (!r2) {
    r2 = n.context;
  }
  return {
    key: n.key,
    query: n.query,
    variables: n.variables,
    kind: e,
    context: r2
  };
}
function addMetadata(e, n) {
  return makeOperation(e.kind, e, _extends$3({}, e.context, {
    meta: _extends$3({}, e.context.meta, n)
  }));
}
function noop$3() {
}
function applyDefinitions(e, r2, t2) {
  for (var a2 = 0; a2 < t2.length; a2++) {
    if (t2[a2].kind === Kind.FRAGMENT_DEFINITION) {
      var o2 = t2[a2].name.value;
      var i2 = stringifyDocument(t2[a2]);
      if (!e.has(o2)) {
        e.set(o2, i2);
        r2.push(t2[a2]);
      }
    } else {
      r2.push(t2[a2]);
    }
  }
}
function gql() {
  var e = arguments;
  var r2 = /* @__PURE__ */ new Map();
  var a2 = [];
  var o2 = [];
  var i2 = Array.isArray(arguments[0]) ? arguments[0][0] : arguments[0] || "";
  for (var u2 = 1; u2 < arguments.length; u2++) {
    var c2 = e[u2];
    if (c2 && c2.definitions) {
      o2.push.apply(o2, c2.definitions);
    } else {
      i2 += c2;
    }
    i2 += e[0][u2];
  }
  applyDefinitions(r2, a2, keyDocument(i2).definitions);
  applyDefinitions(r2, a2, o2);
  return keyDocument({
    kind: Kind.DOCUMENT,
    definitions: a2
  });
}
function shouldSkip(e) {
  var n = e.kind;
  return "mutation" !== n && "query" !== n;
}
function cacheExchange$1(e) {
  var n = e.forward;
  var r2 = e.client;
  e.dispatchDebug;
  var a2 = /* @__PURE__ */ new Map();
  var i2 = /* @__PURE__ */ Object.create(null);
  function mapTypeNames(e2) {
    var n2 = makeOperation(e2.kind, e2);
    n2.query = formatDocument(e2.query);
    return n2;
  }
  function isOperationCached(e2) {
    var n2 = e2.context.requestPolicy;
    return "query" === e2.kind && "network-only" !== n2 && ("cache-only" === n2 || a2.has(e2.key));
  }
  return function(e2) {
    var u2 = share$1(e2);
    var c2 = map$1$1(function(e3) {
      var n2 = a2.get(e3.key);
      var i3 = _extends$3({}, n2, {
        operation: addMetadata(e3, {
          cacheOutcome: n2 ? "hit" : "miss"
        })
      });
      if ("cache-and-network" === e3.context.requestPolicy) {
        i3.stale = true;
        reexecuteOperation(r2, e3);
      }
      return i3;
    })(filter$1(function(e3) {
      return !shouldSkip(e3) && isOperationCached(e3);
    })(u2));
    var s2 = H(function(e3) {
      var n2 = e3.operation;
      if (!n2) {
        return;
      }
      var o2 = collectTypesFromResponse(e3.data).concat(n2.context.additionalTypenames || []);
      if ("mutation" === e3.operation.kind) {
        var u3 = /* @__PURE__ */ new Set();
        for (var c3 = 0; c3 < o2.length; c3++) {
          var s3 = o2[c3];
          var f2 = i2[s3] || (i2[s3] = /* @__PURE__ */ new Set());
          f2.forEach(function(e4) {
            u3.add(e4);
          });
          f2.clear();
        }
        u3.forEach(function(e4) {
          if (a2.has(e4)) {
            n2 = a2.get(e4).operation;
            a2.delete(e4);
            reexecuteOperation(r2, n2);
          }
        });
      } else if ("query" === n2.kind && e3.data) {
        a2.set(n2.key, e3);
        for (var p2 = 0; p2 < o2.length; p2++) {
          var l2 = o2[p2];
          (i2[l2] || (i2[l2] = /* @__PURE__ */ new Set())).add(n2.key);
        }
      }
    })(n(filter$1(function(e3) {
      return "query" !== e3.kind || "cache-only" !== e3.context.requestPolicy;
    })(map$1$1(function(e3) {
      return addMetadata(e3, {
        cacheOutcome: "miss"
      });
    })(merge$1([map$1$1(mapTypeNames)(filter$1(function(e3) {
      return !shouldSkip(e3) && !isOperationCached(e3);
    })(u2)), filter$1(function(e3) {
      return shouldSkip(e3);
    })(u2)])))));
    return merge$1([c2, s2]);
  };
}
function reexecuteOperation(e, n) {
  return e.reexecuteOperation(makeOperation(n.kind, n, _extends$3({}, n.context, {
    requestPolicy: "network-only"
  })));
}
function subscriptionExchange(e) {
  var n = e.forwardSubscription;
  var t2 = e.enableAllOperations;
  return function(e2) {
    var a2 = e2.client;
    var i2 = e2.forward;
    function isSubscriptionOperation(e3) {
      var n2 = e3.kind;
      return "subscription" === n2 || !!t2 && ("query" === n2 || "mutation" === n2);
    }
    return function(e3) {
      var t3 = share$1(e3);
      var u2 = D$1(function(e4) {
        var i3 = e4.key;
        var u3 = filter$1(function(e5) {
          return "teardown" === e5.kind && e5.key === i3;
        })(t3);
        return takeUntil$1(u3)(function createSubscriptionSource(e5) {
          var t4 = n({
            key: e5.key.toString(36),
            query: print$1(e5.query),
            variables: e5.variables,
            context: _extends$3({}, e5.context)
          });
          return make$1(function(n2) {
            var r2 = n2.next;
            var o2 = n2.complete;
            var i4 = false;
            var u4;
            Promise.resolve().then(function() {
              if (i4) {
                return;
              }
              u4 = t4.subscribe({
                next: function(n3) {
                  return r2(makeResult(e5, n3));
                },
                error: function(n3) {
                  return r2(makeErrorResult(e5, n3));
                },
                complete: function() {
                  if (!i4) {
                    i4 = true;
                    if ("subscription" === e5.kind) {
                      a2.reexecuteOperation(makeOperation("teardown", e5, e5.context));
                    }
                    o2();
                  }
                }
              });
            });
            return function() {
              i4 = true;
              if (u4) {
                u4.unsubscribe();
              }
            };
          });
        }(e4));
      })(filter$1(isSubscriptionOperation)(t3));
      var c2 = i2(filter$1(function(e4) {
        return !isSubscriptionOperation(e4);
      })(t3));
      return merge$1([u2, c2]);
    };
  };
}
function dedupExchange(e) {
  var n = e.forward;
  e.dispatchDebug;
  var t2 = /* @__PURE__ */ new Set();
  function filterIncomingOperation(e2) {
    var n2 = e2.key;
    var a2 = e2.kind;
    if ("teardown" === a2) {
      t2.delete(n2);
      return true;
    }
    if ("query" !== a2 && "subscription" !== a2) {
      return true;
    }
    var o2 = t2.has(n2);
    t2.add(n2);
    return !o2;
  }
  function afterOperationResult(e2) {
    if (!e2.hasNext) {
      t2.delete(e2.operation.key);
    }
  }
  return function(e2) {
    var r2 = filter$1(filterIncomingOperation)(e2);
    return H(afterOperationResult)(n(r2));
  };
}
function fetchExchange(e) {
  var n = e.forward;
  e.dispatchDebug;
  return function(e2) {
    var t2 = share$1(e2);
    var a2 = D$1(function(e3) {
      var n2 = e3.key;
      var a3 = filter$1(function(e4) {
        return "teardown" === e4.kind && e4.key === n2;
      })(t2);
      var o3 = makeFetchBody(e3);
      var i2 = makeFetchURL(e3, o3);
      var u2 = makeFetchOptions(e3, o3);
      return H(function(n3) {
        !n3.data ? n3.error : void 0;
      })(takeUntil$1(a3)(makeFetchSource(e3, i2, u2)));
    })(filter$1(function(e3) {
      return "query" === e3.kind || "mutation" === e3.kind;
    })(t2));
    var o2 = n(filter$1(function(e3) {
      return "query" !== e3.kind && "mutation" !== e3.kind;
    })(t2));
    return merge$1([a2, o2]);
  };
}
function fallbackExchange(e) {
  e.dispatchDebug;
  return function(e2) {
    return filter$1(function() {
      return false;
    })(H(function(e3) {
      if ("teardown" !== e3.kind && false) {
        var r2 = 'No exchange has handled operations of kind "' + e3.kind + `". Check whether you've added an exchange responsible for these operations.`;
        console.warn(r2);
      }
    })(e2));
  };
}
fallbackExchange({
  dispatchDebug: noop$3
});
function composeExchanges(e) {
  return function(n) {
    var r2 = n.client;
    n.dispatchDebug;
    return e.reduceRight(function(e2, n2) {
      return n2({
        client: r2,
        forward: e2,
        dispatchDebug: function dispatchDebug$1(e3) {
        }
      });
    }, n.forward);
  };
}
function errorExchange(e) {
  var n = e.onError;
  return function(e2) {
    var r2 = e2.forward;
    return function(e3) {
      return H(function(e4) {
        var r3 = e4.error;
        if (r3) {
          n(r3, e4.operation);
        }
      })(r2(e3));
    };
  };
}
var L$1 = [dedupExchange, cacheExchange$1, fetchExchange];
var J = function Client(e) {
  var n = /* @__PURE__ */ new Map();
  var r2 = /* @__PURE__ */ new Map();
  var t2 = [];
  var a2 = makeSubject$1();
  var i2 = a2.source;
  var u2 = a2.next;
  var c2 = false;
  function dispatchOperation(e2) {
    c2 = true;
    if (e2) {
      u2(e2);
    }
    while (e2 = t2.shift()) {
      u2(e2);
    }
    c2 = false;
  }
  function makeResultSource(e2) {
    var a3 = filter$1(function(n2) {
      return n2.operation.kind === e2.kind && n2.operation.key === e2.key && (!n2.operation.context._instance || n2.operation.context._instance === e2.context._instance);
    })(y2);
    if (f2.maskTypename) {
      a3 = map$1$1(function(e3) {
        return _extends$3({}, e3, {
          data: maskTypename(e3.data)
        });
      })(a3);
    }
    if ("mutation" === e2.kind) {
      return take$1(1)(onStart$1(function() {
        return dispatchOperation(e2);
      })(a3));
    }
    return share$1(onEnd$1(function() {
      n.delete(e2.key);
      r2.delete(e2.key);
      for (var a4 = t2.length - 1; a4 >= 0; a4--) {
        if (t2[a4].key === e2.key) {
          t2.splice(a4, 1);
        }
      }
      dispatchOperation(makeOperation("teardown", e2, e2.context));
    })(H(function(r3) {
      n.set(e2.key, r3);
    })(K(function(n2) {
      if ("query" !== e2.kind || n2.stale) {
        return fromValue$1(n2);
      }
      return merge$1([fromValue$1(n2), map$1$1(function() {
        return _extends$3({}, n2, {
          stale: true
        });
      })(take$1(1)(filter$1(function(n3) {
        return "query" === n3.kind && n3.key === e2.key && "cache-only" !== n3.context.requestPolicy;
      })(i2)))]);
    })(takeUntil$1(filter$1(function(n2) {
      return "teardown" === n2.kind && n2.key === e2.key;
    })(i2))(a3)))));
  }
  var s2 = this instanceof Client ? this : Object.create(Client.prototype);
  var f2 = _extends$3(s2, {
    url: e.url,
    fetchOptions: e.fetchOptions,
    fetch: e.fetch,
    suspense: !!e.suspense,
    requestPolicy: e.requestPolicy || "cache-first",
    preferGetMethod: !!e.preferGetMethod,
    maskTypename: !!e.maskTypename,
    operations$: i2,
    reexecuteOperation: function reexecuteOperation2(e2) {
      if ("mutation" === e2.kind || r2.has(e2.key)) {
        t2.push(e2);
        if (!c2) {
          Promise.resolve().then(dispatchOperation);
        }
      }
    },
    createOperationContext: function createOperationContext(e2) {
      if (!e2) {
        e2 = {};
      }
      return _extends$3({}, {
        _instance: void 0,
        url: f2.url,
        fetchOptions: f2.fetchOptions,
        fetch: f2.fetch,
        preferGetMethod: f2.preferGetMethod
      }, e2, {
        suspense: e2.suspense || false !== e2.suspense && f2.suspense,
        requestPolicy: e2.requestPolicy || f2.requestPolicy
      });
    },
    createRequestOperation: function createRequestOperation(e2, n2, r3) {
      getOperationType(n2.query);
      var a3 = f2.createOperationContext(r3);
      if ("mutation" === e2) {
        a3._instance = [];
      }
      return makeOperation(e2, n2, a3);
    },
    executeRequestOperation: function executeRequestOperation(e2) {
      if ("mutation" === e2.kind) {
        return makeResultSource(e2);
      }
      return make$1(function(t3) {
        var a3 = r2.get(e2.key);
        if (!a3) {
          r2.set(e2.key, a3 = makeResultSource(e2));
        }
        var i3 = "cache-and-network" === e2.context.requestPolicy || "network-only" === e2.context.requestPolicy;
        return N$1(t3.next)(onEnd$1(t3.complete)(onStart$1(function() {
          var r3 = n.get(e2.key);
          if ("subscription" === e2.kind) {
            return dispatchOperation(e2);
          } else if (i3) {
            dispatchOperation(e2);
          }
          if (null != r3 && r3 === n.get(e2.key)) {
            t3.next(i3 ? _extends$3({}, r3, {
              stale: true
            }) : r3);
          } else if (!i3) {
            dispatchOperation(e2);
          }
        })(a3))).unsubscribe;
      });
    },
    executeQuery: function executeQuery(e2, n2) {
      var r3 = f2.createRequestOperation("query", e2, n2);
      return f2.executeRequestOperation(r3);
    },
    executeSubscription: function executeSubscription(e2, n2) {
      var r3 = f2.createRequestOperation("subscription", e2, n2);
      return f2.executeRequestOperation(r3);
    },
    executeMutation: function executeMutation(e2, n2) {
      var r3 = f2.createRequestOperation("mutation", e2, n2);
      return f2.executeRequestOperation(r3);
    },
    query: function query2(e2, n2, r3) {
      if (!r3 || "boolean" != typeof r3.suspense) {
        r3 = _extends$3({}, r3, {
          suspense: false
        });
      }
      return withPromise(f2.executeQuery(createRequest(e2, n2), r3));
    },
    readQuery: function readQuery2(e2, n2, r3) {
      var t3 = null;
      N$1(function(e3) {
        t3 = e3;
      })(f2.query(e2, n2, r3)).unsubscribe();
      return t3;
    },
    subscription: function subscription(e2, n2, r3) {
      return f2.executeSubscription(createRequest(e2, n2), r3);
    },
    mutation: function mutation(e2, n2, r3) {
      return withPromise(f2.executeMutation(createRequest(e2, n2), r3));
    }
  });
  var p2 = noop$3;
  var h2 = composeExchanges(void 0 !== e.exchanges ? e.exchanges : L$1);
  var y2 = share$1(h2({
    client: f2,
    dispatchDebug: p2,
    forward: fallbackExchange({
      dispatchDebug: p2
    })
  })(i2));
  publish$1(y2);
  return f2;
};
var W = J;
function _extends$2() {
  return (_extends$2 = Object.assign || function(e) {
    for (var u2 = 1; u2 < arguments.length; u2++) {
      var n = arguments[u2];
      for (var r2 in n) {
        if (Object.prototype.hasOwnProperty.call(n, r2)) {
          e[r2] = n[r2];
        }
      }
    }
    return e;
  }).apply(this, arguments);
}
function install(u2, t2) {
  var a2;
  if (!isRef(t2)) {
    a2 = ref(t2 instanceof J ? t2 : new J(t2));
  } else {
    a2 = t2;
  }
  u2.provide("$urql", a2);
}
function useClient() {
  var e = inject("$urql");
  return e;
}
function unwrapPossibleProxy(e) {
  return e && isRef(e) ? e.value : e;
}
var y = {
  flush: "pre"
};
function useQuery(e) {
  return callUseQuery(e);
}
function callUseQuery(e, t2, a2) {
  if (void 0 === t2) {
    t2 = useClient();
  }
  if (void 0 === a2) {
    a2 = [];
  }
  var i2 = reactive(e);
  var l2 = ref();
  var v = ref(false);
  var p2 = ref(false);
  var d2 = ref();
  var b2 = ref();
  var h2 = ref();
  var x2 = isRef(e.pause) ? e.pause : ref(!!e.pause);
  var w2 = ref(createRequest(i2.query, unwrapPossibleProxy(i2.variables)));
  var P = ref();
  a2.push(watchEffect(function() {
    var e2 = createRequest(i2.query, unwrapPossibleProxy(i2.variables));
    if (w2.value.key !== e2.key) {
      w2.value = e2;
    }
  }, y));
  a2.push(watchEffect(function() {
    P.value = !x2.value ? t2.value.executeQuery(w2.value, _extends$2({}, {
      requestPolicy: i2.requestPolicy
    }, i2.context)) : void 0;
  }, y));
  var Q = {
    data: l2,
    stale: v,
    error: d2,
    operation: b2,
    extensions: h2,
    fetching: p2,
    isPaused: x2,
    executeQuery: function executeQuery(e2) {
      var u2 = P.value = t2.value.executeQuery(w2.value, _extends$2({}, {
        requestPolicy: i2.requestPolicy
      }, i2.context, e2));
      return _extends$2({}, S2, {
        then: function then(e3, n) {
          return new Promise(function(e4) {
            var n2 = false;
            var r2 = N$1(function() {
              if (!Q.fetching.value && !Q.stale.value) {
                if (r2) {
                  r2.unsubscribe();
                }
                n2 = true;
                e4(Q);
              }
            })(u2);
            if (n2) {
              r2.unsubscribe();
            }
          }).then(e3, n);
        }
      });
    },
    pause: function pause() {
      x2.value = true;
    },
    resume: function resume() {
      x2.value = false;
    }
  };
  a2.push(watchEffect(function(e2) {
    if (P.value) {
      p2.value = true;
      v.value = false;
      e2(N$1(function(e3) {
        l2.value = e3.data;
        v.value = !!e3.stale;
        p2.value = false;
        d2.value = e3.error;
        b2.value = e3.operation;
        h2.value = e3.extensions;
      })(onEnd$1(function() {
        p2.value = false;
        v.value = false;
      })(P.value)).unsubscribe);
    } else {
      p2.value = false;
      v.value = false;
    }
  }, {
    flush: "sync"
  }));
  var S2 = _extends$2({}, Q, {
    then: function then(e2, u2) {
      return new Promise(function(e3) {
        if (!P.value) {
          return e3(Q);
        }
        var u3 = false;
        var n = N$1(function() {
          if (!Q.fetching.value && !Q.stale.value) {
            if (n) {
              n.unsubscribe();
            }
            u3 = true;
            e3(Q);
          }
        })(P.value);
        if (u3) {
          n.unsubscribe();
        }
      }).then(e2, u2);
    }
  });
  return S2;
}
function useMutation(e) {
  return callUseMutation(e);
}
function callUseMutation(e, n) {
  if (void 0 === n) {
    n = useClient();
  }
  var t2 = ref();
  var a2 = ref(false);
  var i2 = ref(false);
  var o2 = ref();
  var s2 = ref();
  var l2 = ref();
  return {
    data: t2,
    stale: a2,
    fetching: i2,
    error: o2,
    operation: s2,
    extensions: l2,
    executeMutation: function executeMutation(r2, v) {
      i2.value = true;
      return toPromise$1(take$1(1)(n.value.executeMutation(createRequest(e, unwrapPossibleProxy(r2)), v || {}))).then(function(e2) {
        t2.value = e2.data;
        a2.value = !!e2.stale;
        i2.value = false;
        o2.value = e2.error;
        s2.value = e2.operation;
        l2.value = e2.extensions;
        return e2;
      });
    }
  };
}
var b$1 = {
  flush: "pre"
};
function useSubscription(e, u2) {
  return callUseSubscription(e, u2);
}
function callUseSubscription(e, t2, a2, i2) {
  if (void 0 === a2) {
    a2 = useClient();
  }
  if (void 0 === i2) {
    i2 = [];
  }
  var l2 = reactive(e);
  var v = ref();
  var p2 = ref(false);
  var d2 = ref(false);
  var y2 = ref();
  var h2 = ref();
  var x2 = ref();
  var w2 = ref(t2);
  var P = isRef(e.pause) ? e.pause : ref(!!e.pause);
  var Q = ref(createRequest(l2.query, unwrapPossibleProxy(l2.variables)));
  var S2 = ref();
  i2.push(watchEffect(function() {
    var e2 = createRequest(l2.query, unwrapPossibleProxy(l2.variables));
    if (Q.value.key !== e2.key) {
      Q.value = e2;
    }
  }, b$1));
  i2.push(watchEffect(function() {
    S2.value = !P.value ? a2.value.executeSubscription(Q.value, _extends$2({}, l2.context)) : void 0;
  }, b$1));
  i2.push(watchEffect(function(e2) {
    if (S2.value) {
      d2.value = true;
      e2(N$1(function(e3) {
        d2.value = true;
        v.value = void 0 !== e3.data ? "function" == typeof w2.value ? w2.value(v.value, e3.data) : e3.data : e3.data, y2.value = e3.error;
        x2.value = e3.extensions;
        p2.value = !!e3.stale;
        h2.value = e3.operation;
      })(onEnd$1(function() {
        d2.value = false;
      })(S2.value)).unsubscribe);
    } else {
      d2.value = false;
    }
  }, b$1));
  var m2 = {
    data: v,
    stale: p2,
    error: y2,
    operation: h2,
    extensions: x2,
    fetching: d2,
    isPaused: P,
    executeSubscription: function executeSubscription(e2) {
      S2.value = a2.value.executeSubscription(Q.value, _extends$2({}, l2.context, e2));
      return m2;
    },
    pause: function pause() {
      P.value = true;
    },
    resume: function resume() {
      P.value = false;
    }
  };
  return m2;
}
const isFunction$2 = (value) => typeof value === "function";
const isString$3 = (value) => typeof value === "string";
const isNonEmptyString = (value) => isString$3(value) && value.trim().length > 0;
const isNumber$1 = (value) => typeof value === "number";
const isUndefined = (value) => typeof value === "undefined";
const isObject$3 = (value) => typeof value === "object" && value !== null;
const isJSX = (obj) => hasProp(obj, "tag") && isNonEmptyString(obj.tag);
const isTouchEvent = (event) => window.TouchEvent && event instanceof TouchEvent;
const isToastComponent = (obj) => hasProp(obj, "component") && isToastContent(obj.component);
const isVueComponent = (c2) => isFunction$2(c2) || isObject$3(c2);
const isToastContent = (obj) => (
  // Ignore undefined
  !isUndefined(obj) && // Is a string
  (isString$3(obj) || // Regular Vue component
  isVueComponent(obj) || // Nested object
  isToastComponent(obj))
);
const isDOMRect = (obj) => isObject$3(obj) && ["height", "width", "right", "left", "top", "bottom"].every((p2) => isNumber$1(obj[p2]));
const hasProp = (obj, propKey) => (isObject$3(obj) || isFunction$2(obj)) && propKey in obj;
const getId = ((i2) => () => i2++)(0);
function getX(event) {
  return isTouchEvent(event) ? event.targetTouches[0].clientX : event.clientX;
}
function getY(event) {
  return isTouchEvent(event) ? event.targetTouches[0].clientY : event.clientY;
}
const removeElement = (el2) => {
  if (!isUndefined(el2.remove)) {
    el2.remove();
  } else if (el2.parentNode) {
    el2.parentNode.removeChild(el2);
  }
};
const getVueComponentFromObj = (obj) => {
  if (isToastComponent(obj)) {
    return getVueComponentFromObj(obj.component);
  }
  if (isJSX(obj)) {
    return defineComponent({
      render() {
        return obj;
      }
    });
  }
  return typeof obj === "string" ? obj : toRaw(unref(obj));
};
const normalizeToastComponent = (obj) => {
  if (typeof obj === "string") {
    return obj;
  }
  const props = hasProp(obj, "props") && isObject$3(obj.props) ? obj.props : {};
  const listeners = hasProp(obj, "listeners") && isObject$3(obj.listeners) ? obj.listeners : {};
  return {
    component: getVueComponentFromObj(obj),
    props,
    listeners
  };
};
const isBrowser$1 = () => typeof window !== "undefined";
class EventBus {
  constructor() {
    this.allHandlers = {};
  }
  getHandlers(eventType) {
    return this.allHandlers[eventType] || [];
  }
  on(eventType, handler) {
    const handlers = this.getHandlers(eventType);
    handlers.push(handler);
    this.allHandlers[eventType] = handlers;
  }
  off(eventType, handler) {
    const handlers = this.getHandlers(eventType);
    handlers.splice(handlers.indexOf(handler) >>> 0, 1);
  }
  emit(eventType, event) {
    const handlers = this.getHandlers(eventType);
    handlers.forEach((handler) => handler(event));
  }
}
const isEventBusInterface = (e) => ["on", "off", "emit"].every((f2) => hasProp(e, f2) && isFunction$2(e[f2]));
var TYPE;
(function(TYPE2) {
  TYPE2["SUCCESS"] = "success";
  TYPE2["ERROR"] = "error";
  TYPE2["WARNING"] = "warning";
  TYPE2["INFO"] = "info";
  TYPE2["DEFAULT"] = "default";
})(TYPE || (TYPE = {}));
var POSITION;
(function(POSITION2) {
  POSITION2["TOP_LEFT"] = "top-left";
  POSITION2["TOP_CENTER"] = "top-center";
  POSITION2["TOP_RIGHT"] = "top-right";
  POSITION2["BOTTOM_LEFT"] = "bottom-left";
  POSITION2["BOTTOM_CENTER"] = "bottom-center";
  POSITION2["BOTTOM_RIGHT"] = "bottom-right";
})(POSITION || (POSITION = {}));
var EVENTS;
(function(EVENTS2) {
  EVENTS2["ADD"] = "add";
  EVENTS2["DISMISS"] = "dismiss";
  EVENTS2["UPDATE"] = "update";
  EVENTS2["CLEAR"] = "clear";
  EVENTS2["UPDATE_DEFAULTS"] = "update_defaults";
})(EVENTS || (EVENTS = {}));
const VT_NAMESPACE = "Vue-Toastification";
const COMMON = {
  type: {
    type: String,
    default: TYPE.DEFAULT
  },
  classNames: {
    type: [String, Array],
    default: () => []
  },
  trueBoolean: {
    type: Boolean,
    default: true
  }
};
const ICON = {
  type: COMMON.type,
  customIcon: {
    type: [String, Boolean, Object, Function],
    default: true
  }
};
const CLOSE_BUTTON = {
  component: {
    type: [String, Object, Function, Boolean],
    default: "button"
  },
  classNames: COMMON.classNames,
  showOnHover: {
    type: Boolean,
    default: false
  },
  ariaLabel: {
    type: String,
    default: "close"
  }
};
const PROGRESS_BAR = {
  timeout: {
    type: [Number, Boolean],
    default: 5e3
  },
  hideProgressBar: {
    type: Boolean,
    default: false
  },
  isRunning: {
    type: Boolean,
    default: false
  }
};
const TRANSITION = {
  transition: {
    type: [Object, String],
    default: `${VT_NAMESPACE}__bounce`
  }
};
const CORE_TOAST = {
  position: {
    type: String,
    default: POSITION.TOP_RIGHT
  },
  draggable: COMMON.trueBoolean,
  draggablePercent: {
    type: Number,
    default: 0.6
  },
  pauseOnFocusLoss: COMMON.trueBoolean,
  pauseOnHover: COMMON.trueBoolean,
  closeOnClick: COMMON.trueBoolean,
  timeout: PROGRESS_BAR.timeout,
  hideProgressBar: PROGRESS_BAR.hideProgressBar,
  toastClassName: COMMON.classNames,
  bodyClassName: COMMON.classNames,
  icon: ICON.customIcon,
  closeButton: CLOSE_BUTTON.component,
  closeButtonClassName: CLOSE_BUTTON.classNames,
  showCloseButtonOnHover: CLOSE_BUTTON.showOnHover,
  accessibility: {
    type: Object,
    default: () => ({
      toastRole: "alert",
      closeButtonLabel: "close"
    })
  },
  rtl: {
    type: Boolean,
    default: false
  },
  eventBus: {
    type: Object,
    required: true,
    default: new EventBus()
  }
};
const TOAST = {
  id: {
    type: [String, Number],
    required: true,
    default: 0
  },
  type: COMMON.type,
  content: {
    type: [String, Object, Function],
    required: true,
    default: ""
  },
  onClick: {
    type: Function,
    default: () => {
    }
  },
  onClose: {
    type: Function,
    default: (
      /* istanbul ignore next */
      () => {
      }
    )
  }
};
const CONTAINER = {
  container: {
    type: [Object, Function],
    default: () => document.body
  },
  newestOnTop: COMMON.trueBoolean,
  maxToasts: {
    type: Number,
    default: 20
  },
  transition: TRANSITION.transition,
  toastDefaults: Object,
  filterBeforeCreate: {
    type: Function,
    default: (toast) => toast
  },
  filterToasts: {
    type: Function,
    default: (toasts) => toasts
  },
  containerClassName: COMMON.classNames,
  onMounted: Function
};
var PROPS = {
  CORE_TOAST,
  TOAST,
  CONTAINER,
  PROGRESS_BAR,
  ICON,
  TRANSITION,
  CLOSE_BUTTON
};
var script$1 = defineComponent({
  name: "VtProgressBar",
  props: PROPS.PROGRESS_BAR,
  // TODO: The typescript compiler is not playing nice with emit types
  // Rollback this change once ts is able to infer emit types
  // emits: ["close-toast"],
  data() {
    return {
      hasClass: true
    };
  },
  computed: {
    style() {
      return {
        animationDuration: `${this.timeout}ms`,
        animationPlayState: this.isRunning ? "running" : "paused",
        opacity: this.hideProgressBar ? 0 : 1
      };
    },
    cpClass() {
      return this.hasClass ? `${VT_NAMESPACE}__progress-bar` : "";
    }
  },
  watch: {
    timeout() {
      this.hasClass = false;
      this.$nextTick(() => this.hasClass = true);
    }
  },
  mounted() {
    this.$el.addEventListener("animationend", this.animationEnded);
  },
  beforeUnmount() {
    this.$el.removeEventListener("animationend", this.animationEnded);
  },
  methods: {
    animationEnded() {
      this.$emit("close-toast");
    }
  }
});
function render$1d(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(
    "div",
    {
      style: _ctx.style,
      class: _ctx.cpClass
    },
    null,
    6
    /* CLASS, STYLE */
  );
}
script$1.render = render$1d;
script$1.__file = "src/components/VtProgressBar.vue";
var script$1$1 = defineComponent({
  name: "VtCloseButton",
  props: PROPS.CLOSE_BUTTON,
  computed: {
    buttonComponent() {
      if (this.component !== false) {
        return getVueComponentFromObj(this.component);
      }
      return "button";
    },
    classes() {
      const classes = [`${VT_NAMESPACE}__close-button`];
      if (this.showOnHover) {
        classes.push("show-on-hover");
      }
      return classes.concat(this.classNames);
    }
  }
});
const _hoisted_1$2p = /* @__PURE__ */ createTextVNode(" × ");
function render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.buttonComponent), mergeProps({
    "aria-label": _ctx.ariaLabel,
    class: _ctx.classes
  }, _ctx.$attrs), {
    default: withCtx(() => [
      _hoisted_1$2p
    ]),
    _: 1
  }, 16, ["aria-label", "class"]);
}
script$1$1.render = render$1$1;
script$1$1.__file = "src/components/VtCloseButton.vue";
var script$2 = {};
const _hoisted_1$1$2 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "check-circle",
  class: "svg-inline--fa fa-check-circle fa-w-16",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 512 512"
};
const _hoisted_2$26 = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"
  },
  null,
  -1
  /* HOISTED */
);
function render$2$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$1$2, [
    _hoisted_2$26
  ]);
}
script$2.render = render$2$1;
script$2.__file = "src/components/icons/VtSuccessIcon.vue";
var script$3 = {};
const _hoisted_1$2$2 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "info-circle",
  class: "svg-inline--fa fa-info-circle fa-w-16",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 512 512"
};
const _hoisted_2$1$2 = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"
  },
  null,
  -1
  /* HOISTED */
);
function render$3$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$2$2, [
    _hoisted_2$1$2
  ]);
}
script$3.render = render$3$1;
script$3.__file = "src/components/icons/VtInfoIcon.vue";
var script$4 = {};
const _hoisted_1$3$1 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "exclamation-circle",
  class: "svg-inline--fa fa-exclamation-circle fa-w-16",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 512 512"
};
const _hoisted_2$2$1 = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"
  },
  null,
  -1
  /* HOISTED */
);
function render$4$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$3$1, [
    _hoisted_2$2$1
  ]);
}
script$4.render = render$4$1;
script$4.__file = "src/components/icons/VtWarningIcon.vue";
var script$5 = {};
const _hoisted_1$4$1 = {
  "aria-hidden": "true",
  focusable: "false",
  "data-prefix": "fas",
  "data-icon": "exclamation-triangle",
  class: "svg-inline--fa fa-exclamation-triangle fa-w-18",
  role: "img",
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 576 512"
};
const _hoisted_2$3$1 = /* @__PURE__ */ createVNode(
  "path",
  {
    fill: "currentColor",
    d: "M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"
  },
  null,
  -1
  /* HOISTED */
);
function render$5$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock("svg", _hoisted_1$4$1, [
    _hoisted_2$3$1
  ]);
}
script$5.render = render$5$1;
script$5.__file = "src/components/icons/VtErrorIcon.vue";
var script$6 = defineComponent({
  name: "VtIcon",
  props: PROPS.ICON,
  computed: {
    customIconChildren() {
      return hasProp(this.customIcon, "iconChildren") ? this.trimValue(this.customIcon.iconChildren) : "";
    },
    customIconClass() {
      if (isString$3(this.customIcon)) {
        return this.trimValue(this.customIcon);
      } else if (hasProp(this.customIcon, "iconClass")) {
        return this.trimValue(this.customIcon.iconClass);
      }
      return "";
    },
    customIconTag() {
      if (hasProp(this.customIcon, "iconTag")) {
        return this.trimValue(this.customIcon.iconTag, "i");
      }
      return "i";
    },
    hasCustomIcon() {
      return this.customIconClass.length > 0;
    },
    component() {
      if (this.hasCustomIcon) {
        return this.customIconTag;
      }
      if (isToastContent(this.customIcon)) {
        return getVueComponentFromObj(this.customIcon);
      }
      return this.iconTypeComponent;
    },
    iconTypeComponent() {
      const types = {
        [TYPE.DEFAULT]: script$3,
        [TYPE.INFO]: script$3,
        [TYPE.SUCCESS]: script$2,
        [TYPE.ERROR]: script$5,
        [TYPE.WARNING]: script$4
      };
      return types[this.type];
    },
    iconClasses() {
      const classes = [`${VT_NAMESPACE}__icon`];
      if (this.hasCustomIcon) {
        return classes.concat(this.customIconClass);
      }
      return classes;
    }
  },
  methods: {
    trimValue(value, empty2 = "") {
      return isNonEmptyString(value) ? value.trim() : empty2;
    }
  }
});
function render$6$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(resolveDynamicComponent(_ctx.component), { class: _ctx.iconClasses }, {
    default: withCtx(() => [
      createTextVNode(
        toDisplayString$1(_ctx.customIconChildren),
        1
        /* TEXT */
      )
    ]),
    _: 1
  }, 8, ["class"]);
}
script$6.render = render$6$1;
script$6.__file = "src/components/VtIcon.vue";
var script$7 = defineComponent({
  name: "VtToast",
  components: {
    ProgressBar: script$1,
    CloseButton: script$1$1,
    Icon: script$6
  },
  inheritAttrs: false,
  props: Object.assign({}, PROPS.CORE_TOAST, PROPS.TOAST),
  data() {
    const data = {
      isRunning: true,
      disableTransitions: false,
      beingDragged: false,
      dragStart: 0,
      dragPos: {
        x: 0,
        y: 0
      },
      dragRect: {}
    };
    return data;
  },
  computed: {
    classes() {
      const classes = [`${VT_NAMESPACE}__toast`, `${VT_NAMESPACE}__toast--${this.type}`, `${this.position}`].concat(this.toastClassName);
      if (this.disableTransitions) {
        classes.push("disable-transition");
      }
      if (this.rtl) {
        classes.push(`${VT_NAMESPACE}__toast--rtl`);
      }
      return classes;
    },
    bodyClasses() {
      const classes = [`${VT_NAMESPACE}__toast-${isString$3(this.content) ? "body" : "component-body"}`].concat(this.bodyClassName);
      return classes;
    },
    /* istanbul ignore next */
    draggableStyle() {
      if (this.dragStart === this.dragPos.x) {
        return {};
      } else if (this.beingDragged) {
        return {
          transform: `translateX(${this.dragDelta}px)`,
          opacity: 1 - Math.abs(this.dragDelta / this.removalDistance)
        };
      } else {
        return {
          transition: "transform 0.2s, opacity 0.2s",
          transform: "translateX(0)",
          opacity: 1
        };
      }
    },
    dragDelta() {
      return this.beingDragged ? this.dragPos.x - this.dragStart : 0;
    },
    removalDistance() {
      if (isDOMRect(this.dragRect)) {
        return (this.dragRect.right - this.dragRect.left) * this.draggablePercent;
      }
      return 0;
    }
  },
  mounted() {
    if (this.draggable) {
      this.draggableSetup();
    }
    if (this.pauseOnFocusLoss) {
      this.focusSetup();
    }
  },
  beforeUnmount() {
    if (this.draggable) {
      this.draggableCleanup();
    }
    if (this.pauseOnFocusLoss) {
      this.focusCleanup();
    }
  },
  methods: {
    getVueComponentFromObj,
    closeToast() {
      this.eventBus.emit(EVENTS.DISMISS, this.id);
    },
    clickHandler() {
      if (this.onClick) {
        this.onClick(this.closeToast);
      }
      if (this.closeOnClick) {
        if (!this.beingDragged || this.dragStart === this.dragPos.x) {
          this.closeToast();
        }
      }
    },
    timeoutHandler() {
      this.closeToast();
    },
    hoverPause() {
      if (this.pauseOnHover) {
        this.isRunning = false;
      }
    },
    hoverPlay() {
      if (this.pauseOnHover) {
        this.isRunning = true;
      }
    },
    focusPause() {
      this.isRunning = false;
    },
    focusPlay() {
      this.isRunning = true;
    },
    focusSetup() {
      addEventListener("blur", this.focusPause);
      addEventListener("focus", this.focusPlay);
    },
    focusCleanup() {
      removeEventListener("blur", this.focusPause);
      removeEventListener("focus", this.focusPlay);
    },
    draggableSetup() {
      const element = this.$el;
      element.addEventListener("touchstart", this.onDragStart, {
        passive: true
      });
      element.addEventListener("mousedown", this.onDragStart);
      addEventListener("touchmove", this.onDragMove, {
        passive: false
      });
      addEventListener("mousemove", this.onDragMove);
      addEventListener("touchend", this.onDragEnd);
      addEventListener("mouseup", this.onDragEnd);
    },
    draggableCleanup() {
      const element = this.$el;
      element.removeEventListener("touchstart", this.onDragStart);
      element.removeEventListener("mousedown", this.onDragStart);
      removeEventListener("touchmove", this.onDragMove);
      removeEventListener("mousemove", this.onDragMove);
      removeEventListener("touchend", this.onDragEnd);
      removeEventListener("mouseup", this.onDragEnd);
    },
    onDragStart(event) {
      this.beingDragged = true;
      this.dragPos = {
        x: getX(event),
        y: getY(event)
      };
      this.dragStart = getX(event);
      this.dragRect = this.$el.getBoundingClientRect();
    },
    onDragMove(event) {
      if (this.beingDragged) {
        event.preventDefault();
        if (this.isRunning) {
          this.isRunning = false;
        }
        this.dragPos = {
          x: getX(event),
          y: getY(event)
        };
      }
    },
    onDragEnd() {
      if (this.beingDragged) {
        if (Math.abs(this.dragDelta) >= this.removalDistance) {
          this.disableTransitions = true;
          this.$nextTick(() => this.closeToast());
        } else {
          setTimeout(() => {
            this.beingDragged = false;
            if (isDOMRect(this.dragRect) && this.pauseOnHover && this.dragRect.bottom >= this.dragPos.y && this.dragPos.y >= this.dragRect.top && this.dragRect.left <= this.dragPos.x && this.dragPos.x <= this.dragRect.right) {
              this.isRunning = false;
            } else {
              this.isRunning = true;
            }
          });
        }
      }
    }
  }
});
function render$7$1(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_Icon = resolveComponent("Icon");
  const _component_CloseButton = resolveComponent("CloseButton");
  const _component_ProgressBar = resolveComponent("ProgressBar");
  return openBlock(), createBlock(
    "div",
    {
      class: _ctx.classes,
      style: _ctx.draggableStyle,
      onClick: _cache[1] || (_cache[1] = (...args) => _ctx.clickHandler(...args)),
      onMouseenter: _cache[2] || (_cache[2] = (...args) => _ctx.hoverPause(...args)),
      onMouseleave: _cache[3] || (_cache[3] = (...args) => _ctx.hoverPlay(...args))
    },
    [
      _ctx.icon ? (openBlock(), createBlock(_component_Icon, {
        key: 0,
        "custom-icon": _ctx.icon,
        type: _ctx.type
      }, null, 8, ["custom-icon", "type"])) : createCommentVNode("v-if", true),
      createVNode("div", {
        role: _ctx.accessibility.toastRole || "alert",
        class: _ctx.bodyClasses
      }, [
        typeof _ctx.content === "string" ? (openBlock(), createBlock(
          Fragment,
          { key: 0 },
          [
            createTextVNode(
              toDisplayString$1(_ctx.content),
              1
              /* TEXT */
            )
          ],
          64
          /* STABLE_FRAGMENT */
        )) : (openBlock(), createBlock(resolveDynamicComponent(_ctx.getVueComponentFromObj(_ctx.content)), mergeProps({
          key: 1,
          "toast-id": _ctx.id
        }, _ctx.content.props, toHandlers(_ctx.content.listeners), { onCloseToast: _ctx.closeToast }), null, 16, ["toast-id", "onCloseToast"]))
      ], 10, ["role"]),
      !!_ctx.closeButton ? (openBlock(), createBlock(_component_CloseButton, {
        key: 1,
        component: _ctx.closeButton,
        "class-names": _ctx.closeButtonClassName,
        "show-on-hover": _ctx.showCloseButtonOnHover,
        "aria-label": _ctx.accessibility.closeButtonLabel,
        onClick: withModifiers(_ctx.closeToast, ["stop"])
      }, null, 8, ["component", "class-names", "show-on-hover", "aria-label", "onClick"])) : createCommentVNode("v-if", true),
      _ctx.timeout ? (openBlock(), createBlock(_component_ProgressBar, {
        key: 2,
        "is-running": _ctx.isRunning,
        "hide-progress-bar": _ctx.hideProgressBar,
        timeout: _ctx.timeout,
        onCloseToast: _ctx.timeoutHandler
      }, null, 8, ["is-running", "hide-progress-bar", "timeout", "onCloseToast"])) : createCommentVNode("v-if", true)
    ],
    38
    /* CLASS, STYLE, HYDRATE_EVENTS */
  );
}
script$7.render = render$7$1;
script$7.__file = "src/components/VtToast.vue";
var script$8 = defineComponent({
  name: "VtTransition",
  props: PROPS.TRANSITION,
  emits: ["leave"],
  methods: {
    leave(el2) {
      el2.style.left = el2.offsetLeft + "px";
      el2.style.top = el2.offsetTop + "px";
      el2.style.width = getComputedStyle(el2).width;
      el2.style.position = "absolute";
    }
  }
});
function render$8$1(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createBlock(TransitionGroup, {
    tag: "div",
    "enter-active-class": _ctx.transition.enter ? _ctx.transition.enter : `${_ctx.transition}-enter-active`,
    "move-class": _ctx.transition.move ? _ctx.transition.move : `${_ctx.transition}-move`,
    "leave-active-class": _ctx.transition.leave ? _ctx.transition.leave : `${_ctx.transition}-leave-active`,
    onLeave: _ctx.leave
  }, {
    default: withCtx(() => [
      renderSlot(_ctx.$slots, "default")
    ]),
    _: 3
  }, 8, ["enter-active-class", "move-class", "leave-active-class", "onLeave"]);
}
script$8.render = render$8$1;
script$8.__file = "src/components/VtTransition.vue";
var script$9 = defineComponent({
  name: "VueToastification",
  components: {
    Toast: script$7,
    VtTransition: script$8
  },
  props: Object.assign({}, PROPS.CORE_TOAST, PROPS.CONTAINER, PROPS.TRANSITION),
  data() {
    const data = {
      count: 0,
      positions: Object.values(POSITION),
      toasts: {},
      defaults: {}
    };
    return data;
  },
  computed: {
    toastArray() {
      return Object.values(this.toasts);
    },
    filteredToasts() {
      return this.defaults.filterToasts(this.toastArray);
    }
  },
  beforeMount() {
    const events = this.eventBus;
    events.on(EVENTS.ADD, this.addToast);
    events.on(EVENTS.CLEAR, this.clearToasts);
    events.on(EVENTS.DISMISS, this.dismissToast);
    events.on(EVENTS.UPDATE, this.updateToast);
    events.on(EVENTS.UPDATE_DEFAULTS, this.updateDefaults);
    this.defaults = this.$props;
  },
  mounted() {
    this.setup(this.container);
  },
  methods: {
    async setup(container) {
      if (isFunction$2(container)) {
        container = await container();
      }
      removeElement(this.$el);
      container.appendChild(this.$el);
    },
    setToast(props) {
      if (!isUndefined(props.id)) {
        this.toasts[props.id] = props;
      }
    },
    addToast(params2) {
      params2.content = normalizeToastComponent(params2.content);
      const props = Object.assign({}, this.defaults, params2.type && this.defaults.toastDefaults && this.defaults.toastDefaults[params2.type], params2);
      const toast = this.defaults.filterBeforeCreate(props, this.toastArray);
      toast && this.setToast(toast);
    },
    dismissToast(id2) {
      const toast = this.toasts[id2];
      if (!isUndefined(toast) && !isUndefined(toast.onClose)) {
        toast.onClose();
      }
      delete this.toasts[id2];
    },
    clearToasts() {
      Object.keys(this.toasts).forEach((id2) => {
        this.dismissToast(id2);
      });
    },
    getPositionToasts(position) {
      const toasts = this.filteredToasts.filter((toast) => toast.position === position).slice(0, this.defaults.maxToasts);
      return this.defaults.newestOnTop ? toasts.reverse() : toasts;
    },
    updateDefaults(update) {
      if (!isUndefined(update.container)) {
        this.setup(update.container);
      }
      this.defaults = Object.assign({}, this.defaults, update);
    },
    updateToast({
      id: id2,
      options: options2,
      create
    }) {
      if (this.toasts[id2]) {
        if (options2.timeout && options2.timeout === this.toasts[id2].timeout) {
          options2.timeout++;
        }
        this.setToast(Object.assign({}, this.toasts[id2], options2));
      } else if (create) {
        this.addToast(Object.assign({}, {
          id: id2
        }, options2));
      }
    },
    getClasses(position) {
      const classes = [`${VT_NAMESPACE}__container`, position];
      return classes.concat(this.defaults.containerClassName);
    }
  }
});
function render$9$1(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_Toast = resolveComponent("Toast");
  const _component_VtTransition = resolveComponent("VtTransition");
  return openBlock(), createBlock("div", null, [
    (openBlock(true), createBlock(
      Fragment,
      null,
      renderList(_ctx.positions, (pos) => {
        return openBlock(), createBlock("div", { key: pos }, [
          createVNode(_component_VtTransition, {
            transition: _ctx.defaults.transition,
            class: _ctx.getClasses(pos)
          }, {
            default: withCtx(() => [
              (openBlock(true), createBlock(
                Fragment,
                null,
                renderList(_ctx.getPositionToasts(pos), (toast) => {
                  return openBlock(), createBlock(
                    _component_Toast,
                    mergeProps({
                      key: toast.id
                    }, toast),
                    null,
                    16
                    /* FULL_PROPS */
                  );
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ]),
            _: 2
          }, 1032, ["transition", "class"])
        ]);
      }),
      128
      /* KEYED_FRAGMENT */
    ))
  ]);
}
script$9.render = render$9$1;
script$9.__file = "src/components/VtToastContainer.vue";
const buildInterface = (globalOptions = {}, mountContainer = true) => {
  const events = globalOptions.eventBus = globalOptions.eventBus || new EventBus();
  if (mountContainer) {
    nextTick(() => {
      const app2 = createApp(script$9, Object.assign({}, globalOptions));
      const component = app2.mount(document.createElement("div"));
      const onMounted2 = globalOptions.onMounted;
      if (!isUndefined(onMounted2)) {
        onMounted2(component, app2);
      }
    });
  }
  const toast = (content, options2) => {
    const props = Object.assign({}, {
      id: getId(),
      type: TYPE.DEFAULT
    }, options2, {
      content
    });
    events.emit(EVENTS.ADD, props);
    return props.id;
  };
  toast.clear = () => events.emit(EVENTS.CLEAR, void 0);
  toast.updateDefaults = (update) => {
    events.emit(EVENTS.UPDATE_DEFAULTS, update);
  };
  toast.dismiss = (id2) => {
    events.emit(EVENTS.DISMISS, id2);
  };
  function updateToast(id2, {
    content,
    options: options2
  }, create = false) {
    const opt = Object.assign({}, options2, {
      content
    });
    events.emit(EVENTS.UPDATE, {
      id: id2,
      options: opt,
      create
    });
  }
  toast.update = updateToast;
  toast.success = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.SUCCESS
  }));
  toast.info = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.INFO
  }));
  toast.error = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.ERROR
  }));
  toast.warning = (content, options2) => toast(content, Object.assign({}, options2, {
    type: TYPE.WARNING
  }));
  return toast;
};
const createMockToastInterface = () => {
  const toast = () => console.warn("[Vue Toastification] This plugin does not support SSR!");
  return new Proxy(toast, {
    get() {
      return toast;
    }
  });
};
function createToastInterface(optionsOrEventBus) {
  if (!isBrowser$1()) {
    return createMockToastInterface();
  }
  if (isEventBusInterface(optionsOrEventBus)) {
    return buildInterface({
      eventBus: optionsOrEventBus
    }, false);
  }
  return buildInterface(optionsOrEventBus, true);
}
const toastInjectionKey = Symbol("VueToastification");
const globalEventBus = new EventBus();
const VueToastificationPlugin = (App, options2) => {
  const inter = createToastInterface(Object.assign({
    eventBus: globalEventBus
  }, options2));
  App.provide(toastInjectionKey, inter);
};
const useToast = (eventBus) => {
  if (eventBus) {
    return createToastInterface(eventBus);
  }
  const toast = getCurrentInstance() ? inject(toastInjectionKey) : void 0;
  return toast ? toast : createToastInterface(globalEventBus);
};
const _hoisted_1$2o = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$25 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M9 12L13 8M13 8L9 4M13 8L3 8",
  stroke: "currentColor",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$1M = [
  _hoisted_2$25
];
function render$1c(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2o, _hoisted_3$1M);
}
const __unplugin_components_0$n = { name: "cy-arrow-right_x16", render: render$1c };
const _hoisted_1$2n = {
  key: 0,
  class: "absolute top-0 right-0 text-teal-600 ribbon",
  "aria-hidden": "true"
};
const _hoisted_2$24 = ["disabled"];
const _hoisted_3$1L = { class: "tracking-tight text-gray-600 text-[14px] leading-[20px]" };
const _sfc_main$1A = /* @__PURE__ */ defineComponent({
  __name: "Card",
  props: {
    title: null,
    description: null,
    icon: null,
    hoverIcon: { default: void 0 },
    variant: null,
    iconSize: null,
    disabled: { type: Boolean, default: false },
    badgeText: { default: "" }
  },
  emits: ["click"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const classMap = {
      indigo: "icon-dark-indigo-400 icon-light-indigo-100 icon-light-secondary-jade-200 icon-dark-secondary-jade-400",
      jade: "icon-dark-jade-400 icon-light-jade-100"
    };
    const iconDimensions = computed(() => {
      return props.iconSize === 48 ? `w-[48px] h-[48px]` : `w-[64px] h-[64px]`;
    });
    const classes = computed(() => {
      const iconMargin = props.iconSize === 64 ? "mb-[32px]" : "mb-[8px]";
      return [iconDimensions.value, iconMargin];
    });
    const iconClass = computed(() => {
      const colorClass = props.disabled ? "icon-dark-gray-600 icon-light-gray-100 icon-dark-secondary-gray-600 icon-light-secondary-gray-300" : classMap[props.variant];
      return [iconDimensions.value, colorClass].join(" ");
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["relative block h-auto text-center border border-gray-100 rounded outline-none group children:hyphens-manual", {
          "bg-gray-50 cursor-default": __props.disabled,
          "cursor-pointer focus-within-default hocus-default": !__props.disabled
        }]),
        "data-cy": "card",
        onClick: _cache[0] || (_cache[0] = ($event) => !__props.disabled && emits("click"))
      }, [
        __props.badgeText ? (openBlock(), createElementBlock("div", _hoisted_1$2n, toDisplayString$1(__props.badgeText), 1)) : createCommentVNode("", true),
        createBaseVNode("div", {
          class: normalizeClass(["mx-auto children:transition-all children:duration-300", unref(classes)])
        }, [
          __props.hoverIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.hoverIcon), {
            key: 0,
            class: normalizeClass(["absolute opacity-0", [unref(iconClass), { "group-hover:opacity-100 group-focus:opacity-100": !__props.disabled }]]),
            "data-cy": "card-icon"
          }, null, 8, ["class"])) : createCommentVNode("", true),
          (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
            class: normalizeClass([
              "opacity-100",
              [
                __props.hoverIcon && !__props.disabled ? "group-hover:opacity-0" : void 0,
                unref(iconClass)
              ]
            ]),
            "data-cy": "card-icon"
          }, null, 8, ["class"]))
        ], 2),
        createBaseVNode("button", {
          class: normalizeClass(["font-medium mx-[8px] mb-[8px] text-[18px] leading-[24px] focus:outline-transparent", {
            "text-gray-700 cursor-default": __props.disabled,
            "text-indigo-500": !__props.disabled
          }]),
          disabled: __props.disabled
        }, toDisplayString$1(__props.title), 11, _hoisted_2$24),
        createBaseVNode("p", _hoisted_3$1L, [
          renderSlot(_ctx.$slots, "default", {}, () => [
            createTextVNode(toDisplayString$1(__props.description), 1)
          ], true)
        ]),
        renderSlot(_ctx.$slots, "footer", {}, void 0, true)
      ], 2);
    };
  }
});
const Card_vue_vue_type_style_index_0_scoped_b9303bc9_lang = "";
const _export_sfc$1 = (sfc, props) => {
  const target2 = sfc.__vccOpts || sfc;
  for (const [key, val] of props) {
    target2[key] = val;
  }
  return target2;
};
const Card = /* @__PURE__ */ _export_sfc$1(_sfc_main$1A, [["__scopeId", "data-v-b9303bc9"]]);
const _hoisted_1$2m = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$23 = /* @__PURE__ */ createBaseVNode("circle", {
  cx: "8",
  cy: "8",
  r: "3",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  fill: "#F3F4FA",
  stroke: "#D0D2E0",
  class: "icon-dark-stroke icon-light-fill"
}, null, -1);
const _hoisted_3$1K = [
  _hoisted_2$23
];
function render$1b(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2m, _hoisted_3$1K);
}
const __unplugin_components_0$m = { name: "cy-grommet_x16", render: render$1b };
const _sfc_main$1z = /* @__PURE__ */ defineComponent({
  __name: "StatusBadge",
  props: {
    status: { type: Boolean },
    title: null
  },
  setup(__props) {
    const props = __props;
    return (_ctx, _cache) => {
      const _component_i_cy_grommet_x16 = __unplugin_components_0$m;
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["border rounded-full font-medium p-[5px] pr-[16px] text-[14px] leading-[20px] inline-flex items-center relative", { "text-jade-500": props.status, "text-gray-600": !props.status }])
      }, [
        createVNode(_component_i_cy_grommet_x16, {
          class: normalizeClass(["h-[16px] mr-[4px] ml-[4px] w-[16px]", { "icon-light-jade-400 icon-dark-jade-400": props.status, "icon-dark-gray-200 icon-dark-gray-50": !props.status }])
        }, null, 8, ["class"]),
        createTextVNode(" " + toDisplayString$1(props.title), 1)
      ], 2);
    };
  }
});
const _hoisted_1$2l = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  viewBox: "0 0 64 64",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$22 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M55.5 55C56.3284 55 57 54.3284 57 53.5V19.5C57 18.6716 56.3284 18 55.5 18H48V44.5C48 45.3285 47.3284 46 46.5 46H16V53.5C16 54.3284 16.6716 55 17.5 55H55.5Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_3$1J = /* @__PURE__ */ createBaseVNode("path", {
  d: "M48 10.5C48 9.67157 47.3284 9 46.5 9H8.5C7.67157 9 7 9.67157 7 10.5V18H48V10.5Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_4$12 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M7 18V44.5C7 45.3285 7.67157 46 8.5 46H16M7 18V10.5C7 9.67157 7.67157 9 8.5 9H46.5C47.3284 9 48 9.67157 48 10.5V18M7 18H48M16 46H46.5C47.3284 46 48 45.3285 48 44.5V18M16 46V53.5C16 54.3284 16.6716 55 17.5 55H55.5C56.3284 55 57 54.3284 57 53.5V19.5C57 18.6716 56.3284 18 55.5 18H48M43 13.5H25M11.9987 13.5H12.0133M16 13.5H16.0133M20 13.5H20.0133",
  stroke: "#007780",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$D = [
  _hoisted_2$22,
  _hoisted_3$1J,
  _hoisted_4$12
];
function render$1a(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2l, _hoisted_5$D);
}
const IconE2E = { name: "cy-testing-type-e2e_x64", render: render$1a };
const _hoisted_1$2k = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  viewBox: "0 0 64 64",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$21 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M9 8C7.34315 8 6 9.34315 6 11V44C6 45.6569 7.34314 47 9 47H46C47.6569 47 49 45.6569 49 44V11C49 9.34315 47.6569 8 46 8H9Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_3$1I = /* @__PURE__ */ createBaseVNode("path", {
  d: "M55 56C56.6569 56 58 54.6569 58 53V20C58 18.3431 56.6569 17 55 17H49V44C49 45.6569 47.6569 47 46 47H15V53C15 54.6569 16.3431 56 18 56H55Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$11 = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M49 11C49 9.34315 47.6569 8 46 8H9C7.34315 8 6 9.34315 6 11V17H49V11ZM44 11.5C44.5523 11.5 45 11.9477 45 12.5C45 13.0523 44.5523 13.5 44 13.5H25C24.4477 13.5 24 13.0523 24 12.5C24 11.9477 24.4477 11.5 25 11.5H44ZM11 13.5C10.4477 13.5 10 13.0523 10 12.5C10 11.9477 10.4477 11.5 11 11.5C11.5523 11.5 12 11.9477 12 12.5C12 13.0523 11.5523 13.5 11 13.5ZM15 11.5C14.4477 11.5 14 11.9477 14 12.5C14 13.0523 14.4477 13.5 15 13.5C15.5523 13.5 16 13.0523 16 12.5C16 11.9477 15.5523 11.5 15 11.5ZM19 13.5C18.4477 13.5 18 13.0523 18 12.5C18 11.9477 18.4477 11.5 19 11.5C19.5523 11.5 20 11.9477 20 12.5C20 13.0523 19.5523 13.5 19 13.5Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$C = [
  _hoisted_2$21,
  _hoisted_3$1I,
  _hoisted_4$11
];
function render$19(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2k, _hoisted_5$C);
}
const IconE2ESolid = { name: "cy-testing-type-e2e-solid_x64", render: render$19 };
const _hoisted_1$2j = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  viewBox: "0 0 64 64",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$20 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 5H57.5C58.3284 5 59 5.67157 59 6.5V28H36V5Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_3$1H = /* @__PURE__ */ createBaseVNode("path", {
  d: "M32 32H9V53.5C9 54.3284 9.67157 55 10.5 55H32V32Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_4$10 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M32 9H33V8H32V9ZM36 5V4H35V5H36ZM59 28V29H60V28H59ZM36 28H35V29H36V28ZM55 32H56V31H55V32ZM10.5 10H32V8H10.5V10ZM31 9V32H33V9H31ZM32 31H9V33H32V31ZM10 32V10.5H8V32H10ZM31 32V55H33V32H31ZM32 54H10.5V56H32V54ZM10 53.5V32H8V53.5H10ZM36 6H57.5V4H36V6ZM58 6.5V28H60V6.5H58ZM59 27H36V29H59V27ZM37 28V5H35V28H37ZM32 33H55V31H32V33ZM54 32V53.5H56V32H54ZM53.5 54H32V56H53.5V54ZM54 53.5C54 53.7761 53.7761 54 53.5 54V56C54.8807 56 56 54.8807 56 53.5H54ZM57.5 6C57.7762 6 58 6.22386 58 6.5H60C60 5.11929 58.8807 4 57.5 4V6ZM10.5 54C10.2239 54 10 53.7761 10 53.5H8C8 54.8807 9.11929 56 10.5 56V54ZM10.5 8C9.11929 8 8 9.11929 8 10.5H10C10 10.2239 10.2239 10 10.5 10V8Z",
  fill: "#007780",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$B = [
  _hoisted_2$20,
  _hoisted_3$1H,
  _hoisted_4$10
];
function render$18(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2j, _hoisted_5$B);
}
const IconComponent = { name: "cy-testing-type-component_x64", render: render$18 };
const _hoisted_1$2i = {
  height: "1em",
  width: "1em",
  style: { "min-width": "64px", "min-height": "64px" },
  "data-cy": "testing-type-component",
  viewBox: "0 0 64 64",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1$ = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 4H57C58.6569 4 60 5.34315 60 7V28H36V4Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1G = /* @__PURE__ */ createBaseVNode("path", {
  d: "M32 56H11C9.34315 56 8 54.6568 8 53V32H32V56Z",
  fill: "#00595D",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$$ = /* @__PURE__ */ createBaseVNode("path", {
  d: "M36 28H34C34 29.1046 34.8954 30 36 30V28ZM8 32V30C6.89543 30 6 30.8954 6 32H8ZM32 56V58C33.1046 58 34 57.1045 34 56H32ZM36 4V2H34V4H36ZM60 28V30H62V28H60ZM32 32H34C34 30.8954 33.1046 30 32 30V32ZM32 54H11V58H32V54ZM10 53V32H6V53H10ZM36 6H57V2H36V6ZM58 7V28H62V7H58ZM60 26H36V30H60V26ZM38 28V4H34V28H38ZM30 32V56H34V32H30ZM32 30H8V34H32V30ZM57 6C57.5523 6 58 6.44772 58 7H62C62 4.23858 59.7614 2 57 2V6ZM11 54C10.4477 54 10 53.5522 10 53H6C6 55.7614 8.23858 58 11 58V54Z",
  class: "icon-light"
}, null, -1);
const _hoisted_5$A = /* @__PURE__ */ createBaseVNode("path", {
  d: "M11 8H32V32H56V53C56 54.6569 54.6568 56 53 56H32L32 32H8V11C8 9.34315 9.34315 8 11 8Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_6$k = [
  _hoisted_2$1$,
  _hoisted_3$1G,
  _hoisted_4$$,
  _hoisted_5$A
];
function render$17(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2i, _hoisted_6$k);
}
const IconComponentSolid = { name: "cy-testing-type-component-solid_x64", render: render$17 };
/*!
  * shared v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const hasSymbol$1 = typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol";
const makeSymbol = (name2) => hasSymbol$1 ? Symbol(name2) : name2;
const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });
const friendlyJSONstringify = (json) => JSON.stringify(json).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/\u0027/g, "\\u0027");
const isNumber = (val) => typeof val === "number" && isFinite(val);
const isDate = (val) => toTypeString(val) === "[object Date]";
const isRegExp$1 = (val) => toTypeString(val) === "[object RegExp]";
const isEmptyObject = (val) => isPlainObject$1(val) && Object.keys(val).length === 0;
function warn(msg, err) {
  if (typeof console !== "undefined") {
    console.warn(`[intlify] ` + msg);
    if (err) {
      console.warn(err.stack);
    }
  }
}
const assign$3 = Object.assign;
let _globalThis;
const getGlobalThis = () => {
  return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
};
function escapeHtml$2(rawText) {
  return rawText.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
}
const hasOwnProperty$2 = Object.prototype.hasOwnProperty;
function hasOwn(obj, key) {
  return hasOwnProperty$2.call(obj, key);
}
const isArray = Array.isArray;
const isFunction$1 = (val) => typeof val === "function";
const isString$2 = (val) => typeof val === "string";
const isBoolean = (val) => typeof val === "boolean";
const isObject$2 = (val) => (
  // eslint-disable-line
  val !== null && typeof val === "object"
);
const objectToString$1 = Object.prototype.toString;
const toTypeString = (value) => objectToString$1.call(value);
const isPlainObject$1 = (val) => toTypeString(val) === "[object Object]";
const toDisplayString = (val) => {
  return val == null ? "" : isArray(val) || isPlainObject$1(val) && val.toString === objectToString$1 ? JSON.stringify(val, null, 2) : String(val);
};
/*!
  * message-compiler v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const CompileErrorCodes = {
  // tokenizer error codes
  EXPECTED_TOKEN: 1,
  INVALID_TOKEN_IN_PLACEHOLDER: 2,
  UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,
  UNKNOWN_ESCAPE_SEQUENCE: 4,
  INVALID_UNICODE_ESCAPE_SEQUENCE: 5,
  UNBALANCED_CLOSING_BRACE: 6,
  UNTERMINATED_CLOSING_BRACE: 7,
  EMPTY_PLACEHOLDER: 8,
  NOT_ALLOW_NEST_PLACEHOLDER: 9,
  INVALID_LINKED_FORMAT: 10,
  // parser error codes
  MUST_HAVE_MESSAGES_IN_PLURAL: 11,
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
  // Special value for higher-order compilers to pick up the last code
  // to avoid collision of error codes. This should always be kept as the last
  // item.
  __EXTEND_POINT__: 15
};
function createCompileError(code3, loc, options2 = {}) {
  const { domain, messages, args } = options2;
  const msg = code3;
  const error2 = new SyntaxError(String(msg));
  error2.code = code3;
  if (loc) {
    error2.location = loc;
  }
  error2.domain = domain;
  return error2;
}
/*!
  * devtools-if v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const IntlifyDevToolsHooks = {
  I18nInit: "i18n:init",
  FunctionTranslate: "function:translate"
};
/*!
  * core-base v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const pathStateMachine = [];
pathStateMachine[
  0
  /* BEFORE_PATH */
] = {
  [
    "w"
    /* WORKSPACE */
  ]: [
    0
    /* BEFORE_PATH */
  ],
  [
    "i"
    /* IDENT */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4
    /* IN_SUB_PATH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: [
    7
    /* AFTER_PATH */
  ]
};
pathStateMachine[
  1
  /* IN_PATH */
] = {
  [
    "w"
    /* WORKSPACE */
  ]: [
    1
    /* IN_PATH */
  ],
  [
    "."
    /* DOT */
  ]: [
    2
    /* BEFORE_IDENT */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4
    /* IN_SUB_PATH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: [
    7
    /* AFTER_PATH */
  ]
};
pathStateMachine[
  2
  /* BEFORE_IDENT */
] = {
  [
    "w"
    /* WORKSPACE */
  ]: [
    2
    /* BEFORE_IDENT */
  ],
  [
    "i"
    /* IDENT */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "0"
    /* ZERO */
  ]: [
    3,
    0
    /* APPEND */
  ]
};
pathStateMachine[
  3
  /* IN_IDENT */
] = {
  [
    "i"
    /* IDENT */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "0"
    /* ZERO */
  ]: [
    3,
    0
    /* APPEND */
  ],
  [
    "w"
    /* WORKSPACE */
  ]: [
    1,
    1
    /* PUSH */
  ],
  [
    "."
    /* DOT */
  ]: [
    2,
    1
    /* PUSH */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4,
    1
    /* PUSH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: [
    7,
    1
    /* PUSH */
  ]
};
pathStateMachine[
  4
  /* IN_SUB_PATH */
] = {
  [
    "'"
    /* SINGLE_QUOTE */
  ]: [
    5,
    0
    /* APPEND */
  ],
  [
    '"'
    /* DOUBLE_QUOTE */
  ]: [
    6,
    0
    /* APPEND */
  ],
  [
    "["
    /* LEFT_BRACKET */
  ]: [
    4,
    2
    /* INC_SUB_PATH_DEPTH */
  ],
  [
    "]"
    /* RIGHT_BRACKET */
  ]: [
    1,
    3
    /* PUSH_SUB_PATH */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: 8,
  [
    "l"
    /* ELSE */
  ]: [
    4,
    0
    /* APPEND */
  ]
};
pathStateMachine[
  5
  /* IN_SINGLE_QUOTE */
] = {
  [
    "'"
    /* SINGLE_QUOTE */
  ]: [
    4,
    0
    /* APPEND */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: 8,
  [
    "l"
    /* ELSE */
  ]: [
    5,
    0
    /* APPEND */
  ]
};
pathStateMachine[
  6
  /* IN_DOUBLE_QUOTE */
] = {
  [
    '"'
    /* DOUBLE_QUOTE */
  ]: [
    4,
    0
    /* APPEND */
  ],
  [
    "o"
    /* END_OF_FAIL */
  ]: 8,
  [
    "l"
    /* ELSE */
  ]: [
    6,
    0
    /* APPEND */
  ]
};
const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
function isLiteral(exp) {
  return literalValueRE.test(exp);
}
function stripQuotes(str) {
  const a2 = str.charCodeAt(0);
  const b2 = str.charCodeAt(str.length - 1);
  return a2 === b2 && (a2 === 34 || a2 === 39) ? str.slice(1, -1) : str;
}
function getPathCharType(ch) {
  if (ch === void 0 || ch === null) {
    return "o";
  }
  const code3 = ch.charCodeAt(0);
  switch (code3) {
    case 91:
    case 93:
    case 46:
    case 34:
    case 39:
      return ch;
    case 95:
    case 36:
    case 45:
      return "i";
    case 9:
    case 10:
    case 13:
    case 160:
    case 65279:
    case 8232:
    case 8233:
      return "w";
  }
  return "i";
}
function formatSubPath(path) {
  const trimmed = path.trim();
  if (path.charAt(0) === "0" && isNaN(parseInt(path))) {
    return false;
  }
  return isLiteral(trimmed) ? stripQuotes(trimmed) : "*" + trimmed;
}
function parse$3(path) {
  const keys = [];
  let index2 = -1;
  let mode = 0;
  let subPathDepth = 0;
  let c2;
  let key;
  let newChar;
  let type2;
  let transition;
  let action;
  let typeMap;
  const actions = [];
  actions[
    0
    /* APPEND */
  ] = () => {
    if (key === void 0) {
      key = newChar;
    } else {
      key += newChar;
    }
  };
  actions[
    1
    /* PUSH */
  ] = () => {
    if (key !== void 0) {
      keys.push(key);
      key = void 0;
    }
  };
  actions[
    2
    /* INC_SUB_PATH_DEPTH */
  ] = () => {
    actions[
      0
      /* APPEND */
    ]();
    subPathDepth++;
  };
  actions[
    3
    /* PUSH_SUB_PATH */
  ] = () => {
    if (subPathDepth > 0) {
      subPathDepth--;
      mode = 4;
      actions[
        0
        /* APPEND */
      ]();
    } else {
      subPathDepth = 0;
      if (key === void 0) {
        return false;
      }
      key = formatSubPath(key);
      if (key === false) {
        return false;
      } else {
        actions[
          1
          /* PUSH */
        ]();
      }
    }
  };
  function maybeUnescapeQuote() {
    const nextChar = path[index2 + 1];
    if (mode === 5 && nextChar === "'" || mode === 6 && nextChar === '"') {
      index2++;
      newChar = "\\" + nextChar;
      actions[
        0
        /* APPEND */
      ]();
      return true;
    }
  }
  while (mode !== null) {
    index2++;
    c2 = path[index2];
    if (c2 === "\\" && maybeUnescapeQuote()) {
      continue;
    }
    type2 = getPathCharType(c2);
    typeMap = pathStateMachine[mode];
    transition = typeMap[type2] || typeMap[
      "l"
      /* ELSE */
    ] || 8;
    if (transition === 8) {
      return;
    }
    mode = transition[0];
    if (transition[1] !== void 0) {
      action = actions[transition[1]];
      if (action) {
        newChar = c2;
        if (action() === false) {
          return;
        }
      }
    }
    if (mode === 7) {
      return keys;
    }
  }
}
const cache$1 = /* @__PURE__ */ new Map();
function resolveWithKeyValue(obj, path) {
  return isObject$2(obj) ? obj[path] : null;
}
function resolveValue(obj, path) {
  if (!isObject$2(obj)) {
    return null;
  }
  let hit = cache$1.get(path);
  if (!hit) {
    hit = parse$3(path);
    if (hit) {
      cache$1.set(path, hit);
    }
  }
  if (!hit) {
    return null;
  }
  const len = hit.length;
  let last = obj;
  let i2 = 0;
  while (i2 < len) {
    const val = last[hit[i2]];
    if (val === void 0) {
      return null;
    }
    last = val;
    i2++;
  }
  return last;
}
const DEFAULT_MODIFIER = (str) => str;
const DEFAULT_MESSAGE = (ctx) => "";
const DEFAULT_MESSAGE_DATA_TYPE = "text";
const DEFAULT_NORMALIZE = (values) => values.length === 0 ? "" : values.join("");
const DEFAULT_INTERPOLATE = toDisplayString;
function pluralDefault(choice, choicesLength) {
  choice = Math.abs(choice);
  if (choicesLength === 2) {
    return choice ? choice > 1 ? 1 : 0 : 1;
  }
  return choice ? Math.min(choice, 2) : 0;
}
function getPluralIndex(options2) {
  const index2 = isNumber(options2.pluralIndex) ? options2.pluralIndex : -1;
  return options2.named && (isNumber(options2.named.count) || isNumber(options2.named.n)) ? isNumber(options2.named.count) ? options2.named.count : isNumber(options2.named.n) ? options2.named.n : index2 : index2;
}
function normalizeNamed(pluralIndex, props) {
  if (!props.count) {
    props.count = pluralIndex;
  }
  if (!props.n) {
    props.n = pluralIndex;
  }
}
function createMessageContext(options2 = {}) {
  const locale = options2.locale;
  const pluralIndex = getPluralIndex(options2);
  const pluralRule = isObject$2(options2.pluralRules) && isString$2(locale) && isFunction$1(options2.pluralRules[locale]) ? options2.pluralRules[locale] : pluralDefault;
  const orgPluralRule = isObject$2(options2.pluralRules) && isString$2(locale) && isFunction$1(options2.pluralRules[locale]) ? pluralDefault : void 0;
  const plural = (messages) => messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];
  const _list = options2.list || [];
  const list3 = (index2) => _list[index2];
  const _named = options2.named || {};
  isNumber(options2.pluralIndex) && normalizeNamed(pluralIndex, _named);
  const named = (key) => _named[key];
  function message(key) {
    const msg = isFunction$1(options2.messages) ? options2.messages(key) : isObject$2(options2.messages) ? options2.messages[key] : false;
    return !msg ? options2.parent ? options2.parent.message(key) : DEFAULT_MESSAGE : msg;
  }
  const _modifier = (name2) => options2.modifiers ? options2.modifiers[name2] : DEFAULT_MODIFIER;
  const normalize4 = isPlainObject$1(options2.processor) && isFunction$1(options2.processor.normalize) ? options2.processor.normalize : DEFAULT_NORMALIZE;
  const interpolate = isPlainObject$1(options2.processor) && isFunction$1(options2.processor.interpolate) ? options2.processor.interpolate : DEFAULT_INTERPOLATE;
  const type2 = isPlainObject$1(options2.processor) && isString$2(options2.processor.type) ? options2.processor.type : DEFAULT_MESSAGE_DATA_TYPE;
  const ctx = {
    [
      "list"
      /* LIST */
    ]: list3,
    [
      "named"
      /* NAMED */
    ]: named,
    [
      "plural"
      /* PLURAL */
    ]: plural,
    [
      "linked"
      /* LINKED */
    ]: (key, modifier) => {
      const msg = message(key)(ctx);
      return isString$2(modifier) ? _modifier(modifier)(msg) : msg;
    },
    [
      "message"
      /* MESSAGE */
    ]: message,
    [
      "type"
      /* TYPE */
    ]: type2,
    [
      "interpolate"
      /* INTERPOLATE */
    ]: interpolate,
    [
      "normalize"
      /* NORMALIZE */
    ]: normalize4
  };
  return ctx;
}
let devtools = null;
function setDevToolsHook(hook) {
  devtools = hook;
}
function initI18nDevTools(i18n, version2, meta) {
  devtools && devtools.emit(IntlifyDevToolsHooks.I18nInit, {
    timestamp: Date.now(),
    i18n,
    version: version2,
    meta
  });
}
const translateDevTools = /* @__PURE__ */ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);
function createDevToolsHook(hook) {
  return (payloads) => devtools && devtools.emit(hook, payloads);
}
function fallbackWithSimple(ctx, fallback, start) {
  return [.../* @__PURE__ */ new Set([
    start,
    ...isArray(fallback) ? fallback : isObject$2(fallback) ? Object.keys(fallback) : isString$2(fallback) ? [fallback] : [start]
  ])];
}
function fallbackWithLocaleChain(ctx, fallback, start) {
  const startLocale = isString$2(start) ? start : DEFAULT_LOCALE;
  const context = ctx;
  if (!context.__localeChainCache) {
    context.__localeChainCache = /* @__PURE__ */ new Map();
  }
  let chain = context.__localeChainCache.get(startLocale);
  if (!chain) {
    chain = [];
    let block3 = [start];
    while (isArray(block3)) {
      block3 = appendBlockToChain(chain, block3, fallback);
    }
    const defaults = isArray(fallback) || !isPlainObject$1(fallback) ? fallback : fallback["default"] ? fallback["default"] : null;
    block3 = isString$2(defaults) ? [defaults] : defaults;
    if (isArray(block3)) {
      appendBlockToChain(chain, block3, false);
    }
    context.__localeChainCache.set(startLocale, chain);
  }
  return chain;
}
function appendBlockToChain(chain, block3, blocks) {
  let follow = true;
  for (let i2 = 0; i2 < block3.length && isBoolean(follow); i2++) {
    const locale = block3[i2];
    if (isString$2(locale)) {
      follow = appendLocaleToChain(chain, block3[i2], blocks);
    }
  }
  return follow;
}
function appendLocaleToChain(chain, locale, blocks) {
  let follow;
  const tokens = locale.split("-");
  do {
    const target2 = tokens.join("-");
    follow = appendItemToChain(chain, target2, blocks);
    tokens.splice(-1, 1);
  } while (tokens.length && follow === true);
  return follow;
}
function appendItemToChain(chain, target2, blocks) {
  let follow = false;
  if (!chain.includes(target2)) {
    follow = true;
    if (target2) {
      follow = target2[target2.length - 1] !== "!";
      const locale = target2.replace(/!/g, "");
      chain.push(locale);
      if ((isArray(blocks) || isPlainObject$1(blocks)) && blocks[locale]) {
        follow = blocks[locale];
      }
    }
  }
  return follow;
}
const VERSION$1 = "9.2.0-beta.7";
const NOT_REOSLVED = -1;
const DEFAULT_LOCALE = "en-US";
const MISSING_RESOLVE_VALUE = "";
function getDefaultLinkedModifiers() {
  return {
    upper: (val) => isString$2(val) ? val.toUpperCase() : val,
    lower: (val) => isString$2(val) ? val.toLowerCase() : val,
    // prettier-ignore
    capitalize: (val) => isString$2(val) ? `${val.charAt(0).toLocaleUpperCase()}${val.substr(1)}` : val
  };
}
let _compiler;
let _resolver;
function registerMessageResolver(resolver) {
  _resolver = resolver;
}
let _fallbacker;
function registerLocaleFallbacker(fallbacker) {
  _fallbacker = fallbacker;
}
let _additionalMeta = null;
const setAdditionalMeta = (meta) => {
  _additionalMeta = meta;
};
const getAdditionalMeta = () => _additionalMeta;
let _cid = 0;
function createCoreContext(options2 = {}) {
  const version2 = isString$2(options2.version) ? options2.version : VERSION$1;
  const locale = isString$2(options2.locale) ? options2.locale : DEFAULT_LOCALE;
  const fallbackLocale = isArray(options2.fallbackLocale) || isPlainObject$1(options2.fallbackLocale) || isString$2(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : locale;
  const messages = isPlainObject$1(options2.messages) ? options2.messages : { [locale]: {} };
  const datetimeFormats = isPlainObject$1(options2.datetimeFormats) ? options2.datetimeFormats : { [locale]: {} };
  const numberFormats = isPlainObject$1(options2.numberFormats) ? options2.numberFormats : { [locale]: {} };
  const modifiers = assign$3({}, options2.modifiers || {}, getDefaultLinkedModifiers());
  const pluralRules = options2.pluralRules || {};
  const missing = isFunction$1(options2.missing) ? options2.missing : null;
  const missingWarn = isBoolean(options2.missingWarn) || isRegExp$1(options2.missingWarn) ? options2.missingWarn : true;
  const fallbackWarn = isBoolean(options2.fallbackWarn) || isRegExp$1(options2.fallbackWarn) ? options2.fallbackWarn : true;
  const fallbackFormat = !!options2.fallbackFormat;
  const unresolving = !!options2.unresolving;
  const postTranslation = isFunction$1(options2.postTranslation) ? options2.postTranslation : null;
  const processor = isPlainObject$1(options2.processor) ? options2.processor : null;
  const warnHtmlMessage = isBoolean(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true;
  const escapeParameter = !!options2.escapeParameter;
  const messageCompiler = isFunction$1(options2.messageCompiler) ? options2.messageCompiler : _compiler;
  const messageResolver = isFunction$1(options2.messageResolver) ? options2.messageResolver : _resolver || resolveWithKeyValue;
  const localeFallbacker = isFunction$1(options2.localeFallbacker) ? options2.localeFallbacker : _fallbacker || fallbackWithSimple;
  const onWarn = isFunction$1(options2.onWarn) ? options2.onWarn : warn;
  const internalOptions = options2;
  const __datetimeFormatters = isObject$2(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : /* @__PURE__ */ new Map();
  const __numberFormatters = isObject$2(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : /* @__PURE__ */ new Map();
  const __meta = isObject$2(internalOptions.__meta) ? internalOptions.__meta : {};
  _cid++;
  const context = {
    version: version2,
    cid: _cid,
    locale,
    fallbackLocale,
    messages,
    modifiers,
    pluralRules,
    missing,
    missingWarn,
    fallbackWarn,
    fallbackFormat,
    unresolving,
    postTranslation,
    processor,
    warnHtmlMessage,
    escapeParameter,
    messageCompiler,
    messageResolver,
    localeFallbacker,
    onWarn,
    __meta
  };
  {
    context.datetimeFormats = datetimeFormats;
    context.numberFormats = numberFormats;
    context.__datetimeFormatters = __datetimeFormatters;
    context.__numberFormatters = __numberFormatters;
  }
  if (__INTLIFY_PROD_DEVTOOLS__) {
    initI18nDevTools(context, version2, __meta);
  }
  return context;
}
function handleMissing(context, key, locale, missingWarn, type2) {
  const { missing, onWarn } = context;
  if (missing !== null) {
    const ret = missing(context, locale, key, type2);
    return isString$2(ret) ? ret : key;
  } else {
    return key;
  }
}
function updateFallbackLocale(ctx, locale, fallback) {
  const context = ctx;
  context.__localeChainCache = /* @__PURE__ */ new Map();
  ctx.localeFallbacker(ctx, fallback, locale);
}
let code$2 = CompileErrorCodes.__EXTEND_POINT__;
const inc$1 = () => code$2++;
const CoreErrorCodes = {
  INVALID_ARGUMENT: code$2,
  INVALID_DATE_ARGUMENT: inc$1(),
  INVALID_ISO_DATE_ARGUMENT: inc$1(),
  __EXTEND_POINT__: inc$1()
  // 18
};
function createCoreError(code3) {
  return createCompileError(code3, null, void 0);
}
const NOOP_MESSAGE_FUNCTION = () => "";
const isMessageFunction = (val) => isFunction$1(val);
function translate(context, ...args) {
  const { fallbackFormat, postTranslation, unresolving, fallbackLocale, messages } = context;
  const [key, options2] = parseTranslateArgs(...args);
  const missingWarn = isBoolean(options2.missingWarn) ? options2.missingWarn : context.missingWarn;
  const fallbackWarn = isBoolean(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn;
  const escapeParameter = isBoolean(options2.escapeParameter) ? options2.escapeParameter : context.escapeParameter;
  const resolvedMessage = !!options2.resolvedMessage;
  const defaultMsgOrKey = isString$2(options2.default) || isBoolean(options2.default) ? !isBoolean(options2.default) ? options2.default : key : fallbackFormat ? key : "";
  const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== "";
  const locale = isString$2(options2.locale) ? options2.locale : context.locale;
  escapeParameter && escapeParams(options2);
  let [format3, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [
    key,
    locale,
    messages[locale] || {}
  ];
  let cacheBaseKey = key;
  if (!resolvedMessage && !(isString$2(format3) || isMessageFunction(format3))) {
    if (enableDefaultMsg) {
      format3 = defaultMsgOrKey;
      cacheBaseKey = format3;
    }
  }
  if (!resolvedMessage && (!(isString$2(format3) || isMessageFunction(format3)) || !isString$2(targetLocale))) {
    return unresolving ? NOT_REOSLVED : key;
  }
  let occurred = false;
  const errorDetector = () => {
    occurred = true;
  };
  const msg = !isMessageFunction(format3) ? compileMessageFormat(context, key, targetLocale, format3, cacheBaseKey, errorDetector) : format3;
  if (occurred) {
    return format3;
  }
  const ctxOptions = getMessageContextOptions(context, targetLocale, message, options2);
  const msgContext = createMessageContext(ctxOptions);
  const messaged = evaluateMessage(context, msg, msgContext);
  const ret = postTranslation ? postTranslation(messaged) : messaged;
  if (__INTLIFY_PROD_DEVTOOLS__) {
    const payloads = {
      timestamp: Date.now(),
      key: isString$2(key) ? key : isMessageFunction(format3) ? format3.key : "",
      locale: targetLocale || (isMessageFunction(format3) ? format3.locale : ""),
      format: isString$2(format3) ? format3 : isMessageFunction(format3) ? format3.source : "",
      message: ret
    };
    payloads.meta = assign$3({}, context.__meta, getAdditionalMeta() || {});
    translateDevTools(payloads);
  }
  return ret;
}
function escapeParams(options2) {
  if (isArray(options2.list)) {
    options2.list = options2.list.map((item) => isString$2(item) ? escapeHtml$2(item) : item);
  } else if (isObject$2(options2.named)) {
    Object.keys(options2.named).forEach((key) => {
      if (isString$2(options2.named[key])) {
        options2.named[key] = escapeHtml$2(options2.named[key]);
      }
    });
  }
}
function resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {
  const { messages, onWarn, messageResolver: resolveValue2, localeFallbacker } = context;
  const locales = localeFallbacker(context, fallbackLocale, locale);
  let message = {};
  let targetLocale;
  let format3 = null;
  const type2 = "translate";
  for (let i2 = 0; i2 < locales.length; i2++) {
    targetLocale = locales[i2];
    message = messages[targetLocale] || {};
    if ((format3 = resolveValue2(message, key)) === null) {
      format3 = message[key];
    }
    if (isString$2(format3) || isFunction$1(format3))
      break;
    const missingRet = handleMissing(
      context,
      // eslint-disable-line @typescript-eslint/no-explicit-any
      key,
      targetLocale,
      missingWarn,
      type2
    );
    if (missingRet !== key) {
      format3 = missingRet;
    }
  }
  return [format3, targetLocale, message];
}
function compileMessageFormat(context, key, targetLocale, format3, cacheBaseKey, errorDetector) {
  const { messageCompiler, warnHtmlMessage } = context;
  if (isMessageFunction(format3)) {
    const msg2 = format3;
    msg2.locale = msg2.locale || targetLocale;
    msg2.key = msg2.key || key;
    return msg2;
  }
  const msg = messageCompiler(format3, getCompileOptions(context, targetLocale, cacheBaseKey, format3, warnHtmlMessage, errorDetector));
  msg.locale = targetLocale;
  msg.key = key;
  msg.source = format3;
  return msg;
}
function evaluateMessage(context, msg, msgCtx) {
  const messaged = msg(msgCtx);
  return messaged;
}
function parseTranslateArgs(...args) {
  const [arg1, arg2, arg3] = args;
  const options2 = {};
  if (!isString$2(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {
    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
  }
  const key = isNumber(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1;
  if (isNumber(arg2)) {
    options2.plural = arg2;
  } else if (isString$2(arg2)) {
    options2.default = arg2;
  } else if (isPlainObject$1(arg2) && !isEmptyObject(arg2)) {
    options2.named = arg2;
  } else if (isArray(arg2)) {
    options2.list = arg2;
  }
  if (isNumber(arg3)) {
    options2.plural = arg3;
  } else if (isString$2(arg3)) {
    options2.default = arg3;
  } else if (isPlainObject$1(arg3)) {
    assign$3(options2, arg3);
  }
  return [key, options2];
}
function getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {
  return {
    warnHtmlMessage,
    onError: (err) => {
      errorDetector && errorDetector(err);
      {
        throw err;
      }
    },
    onCacheKey: (source2) => generateFormatCacheKey(locale, key, source2)
  };
}
function getMessageContextOptions(context, locale, message, options2) {
  const { modifiers, pluralRules, messageResolver: resolveValue2 } = context;
  const resolveMessage = (key) => {
    const val = resolveValue2(message, key);
    if (isString$2(val)) {
      let occurred = false;
      const errorDetector = () => {
        occurred = true;
      };
      const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);
      return !occurred ? msg : NOOP_MESSAGE_FUNCTION;
    } else if (isMessageFunction(val)) {
      return val;
    } else {
      return NOOP_MESSAGE_FUNCTION;
    }
  };
  const ctxOptions = {
    locale,
    modifiers,
    pluralRules,
    messages: resolveMessage
  };
  if (context.processor) {
    ctxOptions.processor = context.processor;
  }
  if (options2.list) {
    ctxOptions.list = options2.list;
  }
  if (options2.named) {
    ctxOptions.named = options2.named;
  }
  if (isNumber(options2.plural)) {
    ctxOptions.pluralIndex = options2.plural;
  }
  return ctxOptions;
}
function datetime(context, ...args) {
  const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;
  const { __datetimeFormatters } = context;
  const [key, value, options2, overrides] = parseDateTimeArgs(...args);
  const missingWarn = isBoolean(options2.missingWarn) ? options2.missingWarn : context.missingWarn;
  isBoolean(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn;
  const part2 = !!options2.part;
  const locale = isString$2(options2.locale) ? options2.locale : context.locale;
  const locales = localeFallbacker(
    context,
    // eslint-disable-line @typescript-eslint/no-explicit-any
    fallbackLocale,
    locale
  );
  if (!isString$2(key) || key === "") {
    return new Intl.DateTimeFormat(locale).format(value);
  }
  let datetimeFormat = {};
  let targetLocale;
  let format3 = null;
  const type2 = "datetime format";
  for (let i2 = 0; i2 < locales.length; i2++) {
    targetLocale = locales[i2];
    datetimeFormat = datetimeFormats[targetLocale] || {};
    format3 = datetimeFormat[key];
    if (isPlainObject$1(format3))
      break;
    handleMissing(context, key, targetLocale, missingWarn, type2);
  }
  if (!isPlainObject$1(format3) || !isString$2(targetLocale)) {
    return unresolving ? NOT_REOSLVED : key;
  }
  let id2 = `${targetLocale}__${key}`;
  if (!isEmptyObject(overrides)) {
    id2 = `${id2}__${JSON.stringify(overrides)}`;
  }
  let formatter = __datetimeFormatters.get(id2);
  if (!formatter) {
    formatter = new Intl.DateTimeFormat(targetLocale, assign$3({}, format3, overrides));
    __datetimeFormatters.set(id2, formatter);
  }
  return !part2 ? formatter.format(value) : formatter.formatToParts(value);
}
function parseDateTimeArgs(...args) {
  const [arg1, arg2, arg3, arg4] = args;
  let options2 = {};
  let overrides = {};
  let value;
  if (isString$2(arg1)) {
    const matches2 = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);
    if (!matches2) {
      throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
    }
    const dateTime = matches2[3] ? matches2[3].trim().startsWith("T") ? `${matches2[1].trim()}${matches2[3].trim()}` : `${matches2[1].trim()}T${matches2[3].trim()}` : matches2[1].trim();
    value = new Date(dateTime);
    try {
      value.toISOString();
    } catch (e) {
      throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
    }
  } else if (isDate(arg1)) {
    if (isNaN(arg1.getTime())) {
      throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);
    }
    value = arg1;
  } else if (isNumber(arg1)) {
    value = arg1;
  } else {
    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
  }
  if (isString$2(arg2)) {
    options2.key = arg2;
  } else if (isPlainObject$1(arg2)) {
    options2 = arg2;
  }
  if (isString$2(arg3)) {
    options2.locale = arg3;
  } else if (isPlainObject$1(arg3)) {
    overrides = arg3;
  }
  if (isPlainObject$1(arg4)) {
    overrides = arg4;
  }
  return [options2.key || "", value, options2, overrides];
}
function clearDateTimeFormat(ctx, locale, format3) {
  const context = ctx;
  for (const key in format3) {
    const id2 = `${locale}__${key}`;
    if (!context.__datetimeFormatters.has(id2)) {
      continue;
    }
    context.__datetimeFormatters.delete(id2);
  }
}
function number(context, ...args) {
  const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;
  const { __numberFormatters } = context;
  const [key, value, options2, overrides] = parseNumberArgs(...args);
  const missingWarn = isBoolean(options2.missingWarn) ? options2.missingWarn : context.missingWarn;
  isBoolean(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn;
  const part2 = !!options2.part;
  const locale = isString$2(options2.locale) ? options2.locale : context.locale;
  const locales = localeFallbacker(
    context,
    // eslint-disable-line @typescript-eslint/no-explicit-any
    fallbackLocale,
    locale
  );
  if (!isString$2(key) || key === "") {
    return new Intl.NumberFormat(locale).format(value);
  }
  let numberFormat = {};
  let targetLocale;
  let format3 = null;
  const type2 = "number format";
  for (let i2 = 0; i2 < locales.length; i2++) {
    targetLocale = locales[i2];
    numberFormat = numberFormats[targetLocale] || {};
    format3 = numberFormat[key];
    if (isPlainObject$1(format3))
      break;
    handleMissing(context, key, targetLocale, missingWarn, type2);
  }
  if (!isPlainObject$1(format3) || !isString$2(targetLocale)) {
    return unresolving ? NOT_REOSLVED : key;
  }
  let id2 = `${targetLocale}__${key}`;
  if (!isEmptyObject(overrides)) {
    id2 = `${id2}__${JSON.stringify(overrides)}`;
  }
  let formatter = __numberFormatters.get(id2);
  if (!formatter) {
    formatter = new Intl.NumberFormat(targetLocale, assign$3({}, format3, overrides));
    __numberFormatters.set(id2, formatter);
  }
  return !part2 ? formatter.format(value) : formatter.formatToParts(value);
}
function parseNumberArgs(...args) {
  const [arg1, arg2, arg3, arg4] = args;
  let options2 = {};
  let overrides = {};
  if (!isNumber(arg1)) {
    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
  }
  const value = arg1;
  if (isString$2(arg2)) {
    options2.key = arg2;
  } else if (isPlainObject$1(arg2)) {
    options2 = arg2;
  }
  if (isString$2(arg3)) {
    options2.locale = arg3;
  } else if (isPlainObject$1(arg3)) {
    overrides = arg3;
  }
  if (isPlainObject$1(arg4)) {
    overrides = arg4;
  }
  return [options2.key || "", value, options2, overrides];
}
function clearNumberFormat(ctx, locale, format3) {
  const context = ctx;
  for (const key in format3) {
    const id2 = `${locale}__${key}`;
    if (!context.__numberFormatters.has(id2)) {
      continue;
    }
    context.__numberFormatters.delete(id2);
  }
}
{
  if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
    getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;
  }
}
/*!
  * vue-i18n v9.2.0-beta.7
  * (c) 2021 kazuya kawaguchi
  * Released under the MIT License.
  */
const VERSION = "9.2.0-beta.7";
function initFeatureFlags() {
  if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
    getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;
  }
}
let code$1 = CompileErrorCodes.__EXTEND_POINT__;
const inc = () => code$1++;
const I18nErrorCodes = {
  // composer module errors
  UNEXPECTED_RETURN_TYPE: code$1,
  // legacy module errors
  INVALID_ARGUMENT: inc(),
  // i18n module errors
  MUST_BE_CALL_SETUP_TOP: inc(),
  NOT_INSLALLED: inc(),
  NOT_AVAILABLE_IN_LEGACY_MODE: inc(),
  // directive module errors
  REQUIRED_VALUE: inc(),
  INVALID_VALUE: inc(),
  // vue-devtools errors
  CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),
  NOT_INSLALLED_WITH_PROVIDE: inc(),
  // unexpected error
  UNEXPECTED_ERROR: inc(),
  // not compatible legacy vue-i18n constructor
  NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),
  // bridge support vue 2.x only
  BRIDGE_SUPPORT_VUE_2_ONLY: inc(),
  // for enhancement
  __EXTEND_POINT__: inc()
  // 27
};
function createI18nError(code3, ...args) {
  return createCompileError(code3, null, void 0);
}
const TransrateVNodeSymbol = /* @__PURE__ */ makeSymbol("__transrateVNode");
const DatetimePartsSymbol = /* @__PURE__ */ makeSymbol("__datetimeParts");
const NumberPartsSymbol = /* @__PURE__ */ makeSymbol("__numberParts");
const SetPluralRulesSymbol = makeSymbol("__setPluralRules");
makeSymbol("__intlifyMeta");
function handleFlatJson(obj) {
  if (!isObject$2(obj)) {
    return obj;
  }
  for (const key in obj) {
    if (!hasOwn(obj, key)) {
      continue;
    }
    if (!key.includes(".")) {
      if (isObject$2(obj[key])) {
        handleFlatJson(obj[key]);
      }
    } else {
      const subKeys = key.split(".");
      const lastIndex = subKeys.length - 1;
      let currentObj = obj;
      for (let i2 = 0; i2 < lastIndex; i2++) {
        if (!(subKeys[i2] in currentObj)) {
          currentObj[subKeys[i2]] = {};
        }
        currentObj = currentObj[subKeys[i2]];
      }
      currentObj[subKeys[lastIndex]] = obj[key];
      delete obj[key];
      if (isObject$2(currentObj[subKeys[lastIndex]])) {
        handleFlatJson(currentObj[subKeys[lastIndex]]);
      }
    }
  }
  return obj;
}
function getLocaleMessages(locale, options2) {
  const { messages, __i18n, messageResolver, flatJson } = options2;
  const ret = isPlainObject$1(messages) ? messages : isArray(__i18n) ? {} : { [locale]: {} };
  if (isArray(__i18n)) {
    __i18n.forEach((custom) => {
      if ("locale" in custom && "resource" in custom) {
        const { locale: locale2, resource } = custom;
        if (locale2) {
          ret[locale2] = ret[locale2] || {};
          deepCopy(resource, ret[locale2]);
        } else {
          deepCopy(resource, ret);
        }
      } else {
        isString$2(custom) && deepCopy(JSON.parse(custom), ret);
      }
    });
  }
  if (messageResolver == null && flatJson) {
    for (const key in ret) {
      if (hasOwn(ret, key)) {
        handleFlatJson(ret[key]);
      }
    }
  }
  return ret;
}
const isNotObjectOrIsArray = (val) => !isObject$2(val) || isArray(val);
function deepCopy(src, des) {
  if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {
    throw createI18nError(I18nErrorCodes.INVALID_VALUE);
  }
  for (const key in src) {
    if (hasOwn(src, key)) {
      if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {
        des[key] = src[key];
      } else {
        deepCopy(src[key], des[key]);
      }
    }
  }
}
function getComponentOptions(instance) {
  return instance.type;
}
const DEVTOOLS_META = "__INTLIFY_META__";
let composerID = 0;
function defineCoreMissingHandler(missing) {
  return (ctx, locale, key, type2) => {
    return missing(locale, key, getCurrentInstance() || void 0, type2);
  };
}
const getMetaInfo = () => {
  const instance = getCurrentInstance();
  let meta = null;
  return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META]) ? { [DEVTOOLS_META]: meta } : null;
};
function createComposer(options2 = {}, VueI18nLegacy) {
  const { __root } = options2;
  const _isGlobal = __root === void 0;
  let _inheritLocale = isBoolean(options2.inheritLocale) ? options2.inheritLocale : true;
  const _locale = ref(
    // prettier-ignore
    __root && _inheritLocale ? __root.locale.value : isString$2(options2.locale) ? options2.locale : DEFAULT_LOCALE
  );
  const _fallbackLocale = ref(
    // prettier-ignore
    __root && _inheritLocale ? __root.fallbackLocale.value : isString$2(options2.fallbackLocale) || isArray(options2.fallbackLocale) || isPlainObject$1(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : _locale.value
  );
  const _messages = ref(getLocaleMessages(_locale.value, options2));
  const _datetimeFormats = ref(isPlainObject$1(options2.datetimeFormats) ? options2.datetimeFormats : { [_locale.value]: {} });
  const _numberFormats = ref(isPlainObject$1(options2.numberFormats) ? options2.numberFormats : { [_locale.value]: {} });
  let _missingWarn = __root ? __root.missingWarn : isBoolean(options2.missingWarn) || isRegExp$1(options2.missingWarn) ? options2.missingWarn : true;
  let _fallbackWarn = __root ? __root.fallbackWarn : isBoolean(options2.fallbackWarn) || isRegExp$1(options2.fallbackWarn) ? options2.fallbackWarn : true;
  let _fallbackRoot = __root ? __root.fallbackRoot : isBoolean(options2.fallbackRoot) ? options2.fallbackRoot : true;
  let _fallbackFormat = !!options2.fallbackFormat;
  let _missing = isFunction$1(options2.missing) ? options2.missing : null;
  let _runtimeMissing = isFunction$1(options2.missing) ? defineCoreMissingHandler(options2.missing) : null;
  let _postTranslation = isFunction$1(options2.postTranslation) ? options2.postTranslation : null;
  let _warnHtmlMessage = isBoolean(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true;
  let _escapeParameter = !!options2.escapeParameter;
  const _modifiers = __root ? __root.modifiers : isPlainObject$1(options2.modifiers) ? options2.modifiers : {};
  let _pluralRules = options2.pluralRules || __root && __root.pluralRules;
  let _context;
  function getCoreContext() {
    const ctxOptions = {
      version: VERSION,
      locale: _locale.value,
      fallbackLocale: _fallbackLocale.value,
      messages: _messages.value,
      modifiers: _modifiers,
      pluralRules: _pluralRules,
      missing: _runtimeMissing === null ? void 0 : _runtimeMissing,
      missingWarn: _missingWarn,
      fallbackWarn: _fallbackWarn,
      fallbackFormat: _fallbackFormat,
      unresolving: true,
      postTranslation: _postTranslation === null ? void 0 : _postTranslation,
      warnHtmlMessage: _warnHtmlMessage,
      escapeParameter: _escapeParameter,
      messageResolver: options2.messageResolver,
      __meta: { framework: "vue" }
    };
    {
      ctxOptions.datetimeFormats = _datetimeFormats.value;
      ctxOptions.numberFormats = _numberFormats.value;
      ctxOptions.__datetimeFormatters = isPlainObject$1(_context) ? _context.__datetimeFormatters : void 0;
      ctxOptions.__numberFormatters = isPlainObject$1(_context) ? _context.__numberFormatters : void 0;
    }
    return createCoreContext(ctxOptions);
  }
  _context = getCoreContext();
  updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
  function trackReactivityValues() {
    return [
      _locale.value,
      _fallbackLocale.value,
      _messages.value,
      _datetimeFormats.value,
      _numberFormats.value
    ];
  }
  const locale = computed({
    get: () => _locale.value,
    set: (val) => {
      _locale.value = val;
      _context.locale = _locale.value;
    }
  });
  const fallbackLocale = computed({
    get: () => _fallbackLocale.value,
    set: (val) => {
      _fallbackLocale.value = val;
      _context.fallbackLocale = _fallbackLocale.value;
      updateFallbackLocale(_context, _locale.value, val);
    }
  });
  const messages = computed(() => _messages.value);
  const datetimeFormats = /* @__PURE__ */ computed(() => _datetimeFormats.value);
  const numberFormats = /* @__PURE__ */ computed(() => _numberFormats.value);
  function getPostTranslationHandler() {
    return isFunction$1(_postTranslation) ? _postTranslation : null;
  }
  function setPostTranslationHandler(handler) {
    _postTranslation = handler;
    _context.postTranslation = handler;
  }
  function getMissingHandler() {
    return _missing;
  }
  function setMissingHandler(handler) {
    if (handler !== null) {
      _runtimeMissing = defineCoreMissingHandler(handler);
    }
    _missing = handler;
    _context.missing = _runtimeMissing;
  }
  function wrapWithDeps(fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) {
    trackReactivityValues();
    let ret;
    if (__INTLIFY_PROD_DEVTOOLS__) {
      try {
        setAdditionalMeta(getMetaInfo());
        ret = fn(_context);
      } finally {
        setAdditionalMeta(null);
      }
    } else {
      ret = fn(_context);
    }
    if (isNumber(ret) && ret === NOT_REOSLVED) {
      const [key, arg2] = argumentParser();
      return __root && _fallbackRoot ? fallbackSuccess(__root) : fallbackFail(key);
    } else if (successCondition(ret)) {
      return ret;
    } else {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);
    }
  }
  function t2(...args) {
    return wrapWithDeps((context) => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), "translate", (root2) => Reflect.apply(root2.t, root2, [...args]), (key) => key, (val) => isString$2(val));
  }
  function rt(...args) {
    const [arg1, arg2, arg3] = args;
    if (arg3 && !isObject$2(arg3)) {
      throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);
    }
    return t2(...[arg1, arg2, assign$3({ resolvedMessage: true }, arg3 || {})]);
  }
  function d2(...args) {
    return wrapWithDeps((context) => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root2) => Reflect.apply(root2.d, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$2(val));
  }
  function n(...args) {
    return wrapWithDeps((context) => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), "number format", (root2) => Reflect.apply(root2.n, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$2(val));
  }
  function normalize4(values) {
    return values.map((val) => isString$2(val) ? createVNode(Text, null, val, 0) : val);
  }
  const interpolate = (val) => val;
  const processor = {
    normalize: normalize4,
    interpolate,
    type: "vnode"
  };
  function transrateVNode(...args) {
    return wrapWithDeps(
      (context) => {
        let ret;
        const _context2 = context;
        try {
          _context2.processor = processor;
          ret = Reflect.apply(translate, null, [_context2, ...args]);
        } finally {
          _context2.processor = null;
        }
        return ret;
      },
      () => parseTranslateArgs(...args),
      "translate",
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      (root2) => root2[TransrateVNodeSymbol](...args),
      (key) => [createVNode(Text, null, key, 0)],
      (val) => isArray(val)
    );
  }
  function numberParts(...args) {
    return wrapWithDeps(
      (context) => Reflect.apply(number, null, [context, ...args]),
      () => parseNumberArgs(...args),
      "number format",
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      (root2) => root2[NumberPartsSymbol](...args),
      () => [],
      (val) => isString$2(val) || isArray(val)
    );
  }
  function datetimeParts(...args) {
    return wrapWithDeps(
      (context) => Reflect.apply(datetime, null, [context, ...args]),
      () => parseDateTimeArgs(...args),
      "datetime format",
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      (root2) => root2[DatetimePartsSymbol](...args),
      () => [],
      (val) => isString$2(val) || isArray(val)
    );
  }
  function setPluralRules(rules) {
    _pluralRules = rules;
    _context.pluralRules = _pluralRules;
  }
  function te(key, locale2) {
    const targetLocale = isString$2(locale2) ? locale2 : _locale.value;
    const message = getLocaleMessage(targetLocale);
    return _context.messageResolver(message, key) !== null;
  }
  function resolveMessages(key) {
    let messages2 = null;
    const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);
    for (let i2 = 0; i2 < locales.length; i2++) {
      const targetLocaleMessages = _messages.value[locales[i2]] || {};
      const messageValue = _context.messageResolver(targetLocaleMessages, key);
      if (messageValue != null) {
        messages2 = messageValue;
        break;
      }
    }
    return messages2;
  }
  function tm(key) {
    const messages2 = resolveMessages(key);
    return messages2 != null ? messages2 : __root ? __root.tm(key) || {} : {};
  }
  function getLocaleMessage(locale2) {
    return _messages.value[locale2] || {};
  }
  function setLocaleMessage(locale2, message) {
    _messages.value[locale2] = message;
    _context.messages = _messages.value;
  }
  function mergeLocaleMessage(locale2, message) {
    _messages.value[locale2] = _messages.value[locale2] || {};
    deepCopy(message, _messages.value[locale2]);
    _context.messages = _messages.value;
  }
  function getDateTimeFormat(locale2) {
    return _datetimeFormats.value[locale2] || {};
  }
  function setDateTimeFormat(locale2, format3) {
    _datetimeFormats.value[locale2] = format3;
    _context.datetimeFormats = _datetimeFormats.value;
    clearDateTimeFormat(_context, locale2, format3);
  }
  function mergeDateTimeFormat(locale2, format3) {
    _datetimeFormats.value[locale2] = assign$3(_datetimeFormats.value[locale2] || {}, format3);
    _context.datetimeFormats = _datetimeFormats.value;
    clearDateTimeFormat(_context, locale2, format3);
  }
  function getNumberFormat(locale2) {
    return _numberFormats.value[locale2] || {};
  }
  function setNumberFormat(locale2, format3) {
    _numberFormats.value[locale2] = format3;
    _context.numberFormats = _numberFormats.value;
    clearNumberFormat(_context, locale2, format3);
  }
  function mergeNumberFormat(locale2, format3) {
    _numberFormats.value[locale2] = assign$3(_numberFormats.value[locale2] || {}, format3);
    _context.numberFormats = _numberFormats.value;
    clearNumberFormat(_context, locale2, format3);
  }
  composerID++;
  if (__root) {
    watch(__root.locale, (val) => {
      if (_inheritLocale) {
        _locale.value = val;
        _context.locale = val;
        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
      }
    });
    watch(__root.fallbackLocale, (val) => {
      if (_inheritLocale) {
        _fallbackLocale.value = val;
        _context.fallbackLocale = val;
        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
      }
    });
  }
  const composer = {
    id: composerID,
    locale,
    fallbackLocale,
    get inheritLocale() {
      return _inheritLocale;
    },
    set inheritLocale(val) {
      _inheritLocale = val;
      if (val && __root) {
        _locale.value = __root.locale.value;
        _fallbackLocale.value = __root.fallbackLocale.value;
        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
      }
    },
    get availableLocales() {
      return Object.keys(_messages.value).sort();
    },
    messages,
    get modifiers() {
      return _modifiers;
    },
    get pluralRules() {
      return _pluralRules || {};
    },
    get isGlobal() {
      return _isGlobal;
    },
    get missingWarn() {
      return _missingWarn;
    },
    set missingWarn(val) {
      _missingWarn = val;
      _context.missingWarn = _missingWarn;
    },
    get fallbackWarn() {
      return _fallbackWarn;
    },
    set fallbackWarn(val) {
      _fallbackWarn = val;
      _context.fallbackWarn = _fallbackWarn;
    },
    get fallbackRoot() {
      return _fallbackRoot;
    },
    set fallbackRoot(val) {
      _fallbackRoot = val;
    },
    get fallbackFormat() {
      return _fallbackFormat;
    },
    set fallbackFormat(val) {
      _fallbackFormat = val;
      _context.fallbackFormat = _fallbackFormat;
    },
    get warnHtmlMessage() {
      return _warnHtmlMessage;
    },
    set warnHtmlMessage(val) {
      _warnHtmlMessage = val;
      _context.warnHtmlMessage = val;
    },
    get escapeParameter() {
      return _escapeParameter;
    },
    set escapeParameter(val) {
      _escapeParameter = val;
      _context.escapeParameter = val;
    },
    t: t2,
    getLocaleMessage,
    setLocaleMessage,
    mergeLocaleMessage,
    getPostTranslationHandler,
    setPostTranslationHandler,
    getMissingHandler,
    setMissingHandler,
    [SetPluralRulesSymbol]: setPluralRules
  };
  {
    composer.datetimeFormats = datetimeFormats;
    composer.numberFormats = numberFormats;
    composer.rt = rt;
    composer.te = te;
    composer.tm = tm;
    composer.d = d2;
    composer.n = n;
    composer.getDateTimeFormat = getDateTimeFormat;
    composer.setDateTimeFormat = setDateTimeFormat;
    composer.mergeDateTimeFormat = mergeDateTimeFormat;
    composer.getNumberFormat = getNumberFormat;
    composer.setNumberFormat = setNumberFormat;
    composer.mergeNumberFormat = mergeNumberFormat;
    {
      composer[TransrateVNodeSymbol] = transrateVNode;
      composer[NumberPartsSymbol] = numberParts;
      composer[DatetimePartsSymbol] = datetimeParts;
    }
  }
  return composer;
}
const baseFormatProps = {
  tag: {
    type: [String, Object]
  },
  locale: {
    type: String
  },
  scope: {
    type: String,
    // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050
    validator: (val) => val === "parent" || val === "global",
    default: "parent"
    /* ComponetI18nScope */
  },
  i18n: {
    type: Object
  }
};
const Translation = /* @__PURE__ */ defineComponent({
  /* eslint-disable */
  name: "i18n-t",
  props: assign$3({
    keypath: {
      type: String,
      required: true
    },
    plural: {
      type: [Number, String],
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      validator: (val) => isNumber(val) || !isNaN(val)
    }
  }, baseFormatProps),
  /* eslint-enable */
  setup(props, context) {
    const { slots, attrs } = context;
    const i18n = props.i18n || useI18n$1({ useScope: props.scope });
    const keys = Object.keys(slots).filter((key) => key !== "_");
    return () => {
      const options2 = {};
      if (props.locale) {
        options2.locale = props.locale;
      }
      if (props.plural !== void 0) {
        options2.plural = isString$2(props.plural) ? +props.plural : props.plural;
      }
      const arg = getInterpolateArg(context, keys);
      const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options2);
      const assignedAttrs = assign$3({}, attrs);
      const tag = isString$2(props.tag) || isObject$2(props.tag) ? props.tag : Fragment;
      return h$1(tag, assignedAttrs, children);
    };
  }
});
function getInterpolateArg({ slots }, keys) {
  if (keys.length === 1 && keys[0] === "default") {
    return slots.default ? slots.default() : [];
  } else {
    return keys.reduce((arg, key) => {
      const slot = slots[key];
      if (slot) {
        arg[key] = slot();
      }
      return arg;
    }, {});
  }
}
function renderFormatter(props, context, slotKeys, partFormatter) {
  const { slots, attrs } = context;
  return () => {
    const options2 = { part: true };
    let overrides = {};
    if (props.locale) {
      options2.locale = props.locale;
    }
    if (isString$2(props.format)) {
      options2.key = props.format;
    } else if (isObject$2(props.format)) {
      if (isString$2(props.format.key)) {
        options2.key = props.format.key;
      }
      overrides = Object.keys(props.format).reduce((options3, prop2) => {
        return slotKeys.includes(prop2) ? assign$3({}, options3, { [prop2]: props.format[prop2] }) : options3;
      }, {});
    }
    const parts2 = partFormatter(...[props.value, options2, overrides]);
    let children = [options2.key];
    if (isArray(parts2)) {
      children = parts2.map((part2, index2) => {
        const slot = slots[part2.type];
        return slot ? slot({ [part2.type]: part2.value, index: index2, parts: parts2 }) : [part2.value];
      });
    } else if (isString$2(parts2)) {
      children = [parts2];
    }
    const assignedAttrs = assign$3({}, attrs);
    const tag = isString$2(props.tag) || isObject$2(props.tag) ? props.tag : Fragment;
    return h$1(tag, assignedAttrs, children);
  };
}
const NUMBER_FORMAT_KEYS = [
  "localeMatcher",
  "style",
  "unit",
  "unitDisplay",
  "currency",
  "currencyDisplay",
  "useGrouping",
  "numberingSystem",
  "minimumIntegerDigits",
  "minimumFractionDigits",
  "maximumFractionDigits",
  "minimumSignificantDigits",
  "maximumSignificantDigits",
  "notation",
  "formatMatcher"
];
const NumberFormat = /* @__PURE__ */ defineComponent({
  /* eslint-disable */
  name: "i18n-n",
  props: assign$3({
    value: {
      type: Number,
      required: true
    },
    format: {
      type: [String, Object]
    }
  }, baseFormatProps),
  /* eslint-enable */
  setup(props, context) {
    const i18n = props.i18n || useI18n$1({ useScope: "parent" });
    return renderFormatter(props, context, NUMBER_FORMAT_KEYS, (...args) => (
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      i18n[NumberPartsSymbol](...args)
    ));
  }
});
const DATETIME_FORMAT_KEYS = [
  "dateStyle",
  "timeStyle",
  "fractionalSecondDigits",
  "calendar",
  "dayPeriod",
  "numberingSystem",
  "localeMatcher",
  "timeZone",
  "hour12",
  "hourCycle",
  "formatMatcher",
  "weekday",
  "era",
  "year",
  "month",
  "day",
  "hour",
  "minute",
  "second",
  "timeZoneName"
];
const DatetimeFormat = /* @__PURE__ */ defineComponent({
  /* eslint-disable */
  name: "i18n-d",
  props: assign$3({
    value: {
      type: [Number, Date],
      required: true
    },
    format: {
      type: [String, Object]
    }
  }, baseFormatProps),
  /* eslint-enable */
  setup(props, context) {
    const i18n = props.i18n || useI18n$1({ useScope: "parent" });
    return renderFormatter(props, context, DATETIME_FORMAT_KEYS, (...args) => (
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      i18n[DatetimePartsSymbol](...args)
    ));
  }
});
function getComposer$2(i18n, instance) {
  const i18nInternal = i18n;
  if (i18n.mode === "composition") {
    return i18nInternal.__getInstance(instance) || i18n.global;
  } else {
    const vueI18n = i18nInternal.__getInstance(instance);
    return vueI18n != null ? vueI18n.__composer : i18n.global.__composer;
  }
}
function vTDirective(i18n) {
  const bind = (el2, { instance, value, modifiers }) => {
    if (!instance || !instance.$) {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
    }
    const composer = getComposer$2(i18n, instance.$);
    const parsedValue = parseValue(value);
    el2.textContent = Reflect.apply(composer.t, composer, [
      ...makeParams(parsedValue)
    ]);
  };
  return {
    beforeMount: bind,
    beforeUpdate: bind
  };
}
function parseValue(value) {
  if (isString$2(value)) {
    return { path: value };
  } else if (isPlainObject$1(value)) {
    if (!("path" in value)) {
      throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, "path");
    }
    return value;
  } else {
    throw createI18nError(I18nErrorCodes.INVALID_VALUE);
  }
}
function makeParams(value) {
  const { path, locale, args, choice, plural } = value;
  const options2 = {};
  const named = args || {};
  if (isString$2(locale)) {
    options2.locale = locale;
  }
  if (isNumber(choice)) {
    options2.plural = choice;
  }
  if (isNumber(plural)) {
    options2.plural = plural;
  }
  return [path, named, options2];
}
function apply(app2, i18n, ...options2) {
  const pluginOptions = isPlainObject$1(options2[0]) ? options2[0] : {};
  const useI18nComponentName = !!pluginOptions.useI18nComponentName;
  const globalInstall = isBoolean(pluginOptions.globalInstall) ? pluginOptions.globalInstall : true;
  if (globalInstall) {
    app2.component(!useI18nComponentName ? Translation.name : "i18n", Translation);
    app2.component(NumberFormat.name, NumberFormat);
    app2.component(DatetimeFormat.name, DatetimeFormat);
  }
  {
    app2.directive("t", vTDirective(i18n));
  }
}
const I18nInjectionKey = /* @__PURE__ */ makeSymbol("global-vue-i18n");
function createI18n$1(options2 = {}, VueI18nLegacy) {
  const __globalInjection = !!options2.globalInjection;
  const __instances = /* @__PURE__ */ new Map();
  const __global = createGlobal(options2);
  const symbol = makeSymbol("");
  function __getInstance(component) {
    return __instances.get(component) || null;
  }
  function __setInstance(component, instance) {
    __instances.set(component, instance);
  }
  function __deleteInstance(component) {
    __instances.delete(component);
  }
  {
    const i18n = {
      // mode
      get mode() {
        return "composition";
      },
      // install plugin
      async install(app2, ...options3) {
        {
          app2.__VUE_I18N_SYMBOL__ = symbol;
          app2.provide(app2.__VUE_I18N_SYMBOL__, i18n);
        }
        if (__globalInjection) {
          injectGlobalFields(app2, i18n.global);
        }
        {
          apply(app2, i18n, ...options3);
        }
      },
      // global accessor
      get global() {
        return __global;
      },
      // @internal
      __instances,
      // @internal
      __getInstance,
      // @internal
      __setInstance,
      // @internal
      __deleteInstance
    };
    return i18n;
  }
}
function useI18n$1(options2 = {}) {
  const instance = getCurrentInstance();
  if (instance == null) {
    throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);
  }
  if (!instance.isCE && instance.appContext.app != null && !instance.appContext.app.__VUE_I18N_SYMBOL__) {
    throw createI18nError(I18nErrorCodes.NOT_INSLALLED);
  }
  const i18n = getI18nInstance(instance);
  const global2 = getGlobalComposer(i18n);
  const componentOptions = getComponentOptions(instance);
  const scope = getScope(options2, componentOptions);
  if (scope === "global") {
    adjustI18nResources(global2, options2, componentOptions);
    return global2;
  }
  if (scope === "parent") {
    let composer2 = getComposer(i18n, instance);
    if (composer2 == null) {
      composer2 = global2;
    }
    return composer2;
  }
  if (i18n.mode === "legacy") {
    throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);
  }
  const i18nInternal = i18n;
  let composer = i18nInternal.__getInstance(instance);
  if (composer == null) {
    const composerOptions = assign$3({}, options2);
    if ("__i18n" in componentOptions) {
      composerOptions.__i18n = componentOptions.__i18n;
    }
    if (global2) {
      composerOptions.__root = global2;
    }
    composer = createComposer(composerOptions);
    setupLifeCycle(i18nInternal, instance);
    i18nInternal.__setInstance(instance, composer);
  }
  return composer;
}
function createGlobal(options2, legacyMode, VueI18nLegacy) {
  {
    return createComposer(options2);
  }
}
function getI18nInstance(instance) {
  {
    const i18n = inject(!instance.isCE ? instance.appContext.app.__VUE_I18N_SYMBOL__ : I18nInjectionKey);
    if (!i18n) {
      throw createI18nError(!instance.isCE ? I18nErrorCodes.UNEXPECTED_ERROR : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);
    }
    return i18n;
  }
}
function getScope(options2, componentOptions) {
  return isEmptyObject(options2) ? "__i18n" in componentOptions ? "local" : "global" : !options2.useScope ? "local" : options2.useScope;
}
function getGlobalComposer(i18n) {
  return i18n.mode === "composition" ? i18n.global : i18n.global.__composer;
}
function adjustI18nResources(global2, options2, componentOptions) {
  let messages = isObject$2(options2.messages) ? options2.messages : {};
  if ("__i18nGlobal" in componentOptions) {
    messages = getLocaleMessages(global2.locale.value, {
      messages,
      __i18n: componentOptions.__i18nGlobal
    });
  }
  const locales = Object.keys(messages);
  if (locales.length) {
    locales.forEach((locale) => {
      global2.mergeLocaleMessage(locale, messages[locale]);
    });
  }
  {
    if (isObject$2(options2.datetimeFormats)) {
      const locales2 = Object.keys(options2.datetimeFormats);
      if (locales2.length) {
        locales2.forEach((locale) => {
          global2.mergeDateTimeFormat(locale, options2.datetimeFormats[locale]);
        });
      }
    }
    if (isObject$2(options2.numberFormats)) {
      const locales2 = Object.keys(options2.numberFormats);
      if (locales2.length) {
        locales2.forEach((locale) => {
          global2.mergeNumberFormat(locale, options2.numberFormats[locale]);
        });
      }
    }
  }
}
function getComposer(i18n, target2) {
  let composer = null;
  const root2 = target2.root;
  let current = target2.parent;
  while (current != null) {
    const i18nInternal = i18n;
    if (i18n.mode === "composition") {
      composer = i18nInternal.__getInstance(current);
    }
    if (composer != null) {
      break;
    }
    if (root2 === current) {
      break;
    }
    current = current.parent;
  }
  return composer;
}
function setupLifeCycle(i18n, target2, composer) {
  {
    onMounted(() => {
    }, target2);
    onUnmounted(() => {
      i18n.__deleteInstance(target2);
    }, target2);
  }
}
const globalExportProps = [
  "locale",
  "fallbackLocale",
  "availableLocales"
];
const globalExportMethods = ["t", "rt", "d", "n", "tm"];
function injectGlobalFields(app2, composer) {
  const i18n = /* @__PURE__ */ Object.create(null);
  globalExportProps.forEach((prop2) => {
    const desc = Object.getOwnPropertyDescriptor(composer, prop2);
    if (!desc) {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
    }
    const wrap2 = isRef(desc.value) ? {
      get() {
        return desc.value.value;
      },
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      set(val) {
        desc.value.value = val;
      }
    } : {
      get() {
        return desc.get && desc.get();
      }
    };
    Object.defineProperty(i18n, prop2, wrap2);
  });
  app2.config.globalProperties.$i18n = i18n;
  globalExportMethods.forEach((method) => {
    const desc = Object.getOwnPropertyDescriptor(composer, method);
    if (!desc || !desc.value) {
      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
    }
    Object.defineProperty(app2.config.globalProperties, `$${method}`, desc);
  });
}
registerMessageResolver(resolveValue);
registerLocaleFallbacker(fallbackWithLocaleChain);
{
  initFeatureFlags();
}
if (__INTLIFY_PROD_DEVTOOLS__) {
  const target2 = getGlobalThis();
  target2.__INTLIFY__ = true;
  setDevToolsHook(target2.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);
}
const compiledMessages = {
  "en-US": {
    "links": {
      "learnMore": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Learn more."]);
      },
      "learnMoreButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Learn more"]);
      },
      "needHelp": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Need help"]);
      }
    },
    "components": {
      "modal": {
        "dismiss": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Dismiss"]);
        }
      },
      "fileSearch": {
        "noMatchesForExtension": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No files found when searching for the file extension"]);
        },
        "noMatchesForFileName": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize([]);
        },
        "byFilenameInput": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Search by filename..."]);
        },
        "byExtensionInput": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Extensions to include e.g. *.tsx, *.vue"]);
        },
        "matchesIndicatorEmptyFileSearch": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize(["1 match"]), _normalize([_interpolate(_named("denominator")), " matches"])]);
        },
        "matchesIndicator": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize([_interpolate(_named("numerator")), " of ", _interpolate(_named("denominator")), " matches"]), _normalize([_interpolate(_named("numerator")), " of ", _interpolate(_named("denominator")), " matches"])]);
        }
      },
      "button": {
        "cancel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cancel"]);
        },
        "back": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Back"]);
        }
      },
      "loading": {
        "config": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Initializing config..."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Please wait while we load your project and find browsers installed on your system"]);
          }
        }
      },
      "select": {
        "placeholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose an option..."]);
        }
      },
      "alert": {
        "dismissAriaLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Dismiss"]);
        }
      },
      "specPattern": {
        "matches": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize([_interpolate(_named("n")), " match"]), _normalize([_interpolate(_named("n")), " matches"])]);
        }
      },
      "specPatternModal": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec pattern settings"]);
        }
      }
    },
    "clipboard": {
      "copy": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Copy"]);
      },
      "copied": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Copied!"]);
      }
    },
    "actions": {
      "close": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Close"]);
      }
    },
    "file": {
      "edit": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Edit"]);
      },
      "git": {
        "modified": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Modified"]);
        },
        "created": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Created"]);
        }
      }
    },
    "status": {
      "enabled": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Enabled"]);
      },
      "disabled": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Disabled"]);
      }
    },
    "createSpec": {
      "newSpec": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["New spec"]);
      },
      "createSpec": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Create spec"]);
      },
      "done": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Done!"]);
      },
      "noComponentsFound": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No components found"]);
      },
      "unableToParseFile": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Unable to parse file"]);
      },
      "updateSpecPattern": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Update spec pattern"]);
      },
      "newSpecModalTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Create new spec"]);
      },
      "successPage": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Great! The spec was successfully added"]);
        },
        "runSpecButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Okay, run the spec"]);
        },
        "createAnotherSpecButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Create another spec"]);
        }
      },
      "page": {
        "defaultPatternNoSpecs": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create your first spec"]);
          },
          "component": {
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Since this project looks new, we recommend that you get started by creating a spec for one of your components."]);
            }
          },
          "e2e": {
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Since this project looks new, we recommend that you use the specs and tests that we've written for you to get started."]);
            }
          }
        },
        "customPatternNoSpecs": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["No specs found"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["We couldn't find any files matching the following spec patterns. You may need to move your specs or update your ", _interpolate(_list(0)), " to find them."]);
          }
        }
      },
      "noSpecsMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["If you feel that you're seeing this screen in error, and there should be specs listed here, you likely need to update the spec pattern."]);
      },
      "viewSpecPatternButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["View spec pattern"]);
      },
      "e2e": {
        "importFromScaffold": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Scaffold example specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We'll generate several example specs to help guide you on how to write tests in Cypress."]);
          },
          "specsAddedHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Great! We added the following files to your project:"]);
          },
          "specsAddedButton": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Okay, I got it!"]);
          },
          "specsAddingHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Adding specs..."]);
          }
        },
        "importTemplateSpec": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create new spec"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We'll generate a template spec file which can be used to start testing your application."]);
          },
          "chooseFilenameHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enter the path for your new spec"]);
          },
          "inputPlaceholder": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enter a relative path..."]);
          },
          "invalidSpecWarning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["This path is invalid because it doesn't match the following "]);
          },
          "specExtensionWarning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We recommend naming your spec to match the following pattern: "]);
          }
        }
      },
      "component": {
        "importFromComponent": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create from component"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Generate a basic component test for any of the components in this project."]);
          },
          "chooseAComponentHeader": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Choose a component"]);
          }
        },
        "importTemplateSpec": {
          "header": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Create new spec"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We'll generate a template spec file which can be used to start testing your components."]);
          },
          "invalidComponentWarning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We couldn't generate a valid path matching your custom "]);
          }
        }
      }
    },
    "specPage": {
      "pageTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Specs"]);
      },
      "newSpecButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["New spec"]);
      },
      "searchPlaceholder": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Search specs"]);
      },
      "clearSearch": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Clear search field"]);
      },
      "componentSpecsHeader": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Component specs"]);
      },
      "e2eSpecsHeader": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["E2E specs"]);
      },
      "componentSpecsHeaderShort": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Component"]);
      },
      "e2eSpecsHeaderShort": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["E2E"]);
      },
      "lastUpdated": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Last updated"]);
        },
        "tooltip": {
          "gitStatus": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Git status"]);
          },
          "gitInfo": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["git info"]);
          },
          "gitInfoAvailable": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " of the spec files within this project"]);
          },
          "gitInfoUnavailable": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Cypress is unable to detect ", _interpolate(_list(0)), " for this project and has defaulted to showing file system data instead"]);
          }
        }
      },
      "latestRuns": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Latest runs"]);
        },
        "headerShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Runs"]);
        },
        "tooltip": {
          "connected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The ", _interpolate(_list(0)), " in Cypress Cloud"]);
          },
          "notConnected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Connect to Cypress Cloud to see the ", _interpolate(_list(0))]);
          },
          "noAccess": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Request access to this project in Cypress Cloud to view the ", _interpolate(_list(0))]);
          },
          "linkText": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["status of your latest runs"]);
          }
        }
      },
      "averageDuration": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Average duration"]);
        },
        "headerShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Duration"]);
        },
        "tooltip": {
          "connected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The ", _interpolate(_list(0)), " of your latest runs in Cypress Cloud"]);
          },
          "notConnected": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Connect to Cypress Cloud to see the ", _interpolate(_list(0)), " of your latest runs"]);
          },
          "noAccess": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Request access to this project in Cypress Cloud to view the ", _interpolate(_list(0)), " of your latest runs"]);
          },
          "linkText": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["average spec durations"]);
          }
        }
      },
      "flaky": {
        "badgeLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Flaky"]);
        },
        "severityLow": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Low"]);
        },
        "severityMedium": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Medium"]);
        },
        "severityHigh": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["High"]);
        },
        "flakyRate": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize([_interpolate(_list(0)), "% flaky rate"]);
        },
        "flakyRuns": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("flakyRuns")), " flaky runs / ", _interpolate(_named("totalRuns")), " total"]), _normalize([_interpolate(_named("flakyRuns")), " flaky run / ", _interpolate(_named("totalRuns")), " total"]), _normalize([_interpolate(_named("flakyRuns")), " flaky runs / ", _interpolate(_named("totalRuns")), " total"])]);
        },
        "lastFlaky": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Last run flaky"]), _normalize(["Last flaky ", _interpolate(_named("runsSinceLastFlake")), " run ago"]), _normalize(["Last flaky ", _interpolate(_named("runsSinceLastFlake")), " runs ago"])]);
        }
      },
      "hoverButton": {
        "connect": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect"]);
        },
        "connectProject": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect project"]);
        },
        "connectProjectShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect"]);
        },
        "requestAccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request access"]);
        },
        "requestAccessShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request"]);
        },
        "requestSent": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request sent"]);
        },
        "requestSentShort": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Sent"]);
        }
      },
      "connectProjectButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Connect your project"]);
      },
      "cloudLoginButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Log in to Cypress Cloud"]);
      },
      "reconnectProjectButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Reconnect your project"]);
      },
      "unauthorizedBannerTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Request access to project"]);
      },
      "requestAccessButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Request access"]);
      },
      "requestSentButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Request sent"]);
      },
      "rows": {
        "gitTooltipSubtext": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize([_interpolate(_named("shortHash")), " by ", _interpolate(_named("author"))]);
        }
      },
      "noResultsMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No specs matched your search:"]);
      },
      "noSpecError": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec not found"]);
        },
        "intro": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["There is no spec matching the following location:"]);
        },
        "explainer": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["It is possible that the file has been moved or deleted. Please choose from the list of specs below."]);
        }
      },
      "offlineWarning": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No internet connection"]);
        },
        "explainer": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch the run metrics from Cypress Cloud."]);
        }
      },
      "fetchFailedWarning": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Lost connection"]);
        },
        "explainer1": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["The request timed out or failed when trying to retrieve the recorded run metrics from Cypress Cloud. The information that you're seeing in the table below may be incomplete as a result."]);
        },
        "explainer2": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Please refresh the page to try again and visit our ", _interpolate(_list(0)), " if this behavior continues."]);
        },
        "refreshButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Try again"]);
        }
      },
      "banners": {
        "login": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Optimize and record your CI test runs with Cypress Cloud"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["When you configure Cypress to record tests to Cypress Cloud, you'll see data from your latest recorded runs in the Cypress app. This increased visibility into your test history allows you to debug your tests faster and more effectively, all within your local workflow."]);
          },
          "buttonLabel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Get started with Cypress Cloud"]);
          }
        },
        "createOrganization": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Finish setting up Cypress Cloud"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Join or create an organization in Cypress Cloud to access your projects and recorded test runs."]);
          },
          "buttonLabel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Set up your organization"]);
          }
        },
        "connectProject": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect your project to Cypress Cloud"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Bring your recorded test results into your local development workflow to monitor, run, and fix tests all in the Cypress app."]);
          },
          "buttonLabel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect your project"]);
          }
        },
        "record": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Record your first run"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Record a run to see your test results in Cypress Cloud. You can then optimize your test suite, debug failing and flaky tests, and integrate with your favorite tools."]);
          }
        },
        "ct": {
          "title": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " component testing is available for this project"]);
          },
          "content": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["You can now use Cypress to develop and test individual components without running your whole application. Generate the config in just a few clicks."]);
          },
          "primaryAction": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Quick setup"]);
          },
          "secondaryAction": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Read our guide"]);
          },
          "dismissAction": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Give feedback"]);
          }
        },
        "enableNotifications": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Start debugging as soon as your first tests fail"]);
          },
          "subtitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress can notify you about Cloud test runs for your branch."]);
          },
          "enableDesktopNotifications": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enable desktop notifications"]);
          },
          "remindMeLater": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Remind me later"]);
          },
          "notificationsEnabledTitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Notifications Enabled"]);
          },
          "notificationsEnabledBody": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Nice, notifications are enabled!"]);
          },
          "dismissBanner": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Dismiss banner"]);
          }
        }
      },
      "runSelectedSpecs": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
        return _plural([_normalize(["Run ", _interpolate(_named("n")), " spec"]), _normalize(["Run ", _interpolate(_named("n")), " specs"])]);
      },
      "testingTypePromo": {
        "e2e": {
          "header": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["End-to-end testing is not set up for this project"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Try it out now, or ", _interpolate(_list(0)), " to learn more"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["read our guides"]);
            },
            "control": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Quick setup"]);
            }
          },
          "body": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["What is end-to-end testing?"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["End-to-end tests are perfect for testing your entire application from a user's perspective. Visit any URL and test full user journeys across pages and domains."]);
            },
            "listItem1": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Test full user journeys across multiple pages using ", _interpolate(_list(0)), " to load up a web page for your test."]);
            },
            "listItem1Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.visit()"]);
            },
            "listItem2": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Work with live API calls or mock them with ", _interpolate(_list(0)), " to test all possible states of your app."]);
            },
            "listItem2Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.intercept()"]);
            },
            "listItem3": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Use ", _interpolate(_list(0)), " to maintain consistent browser sessions in your tests, and work with features like cookies and local storage, all while keeping your tests properly isolated."]);
            },
            "listItem3Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.session()"]);
            }
          }
        },
        "ct": {
          "header": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Component testing is not set up for this project"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Try it out now, or ", _interpolate(_list(0)), " to learn more"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["read our guides"]);
            },
            "control": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Quick setup"]);
            }
          },
          "body": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["What is Component Testing?"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress Component Testing is a technique for developers to write, test, and debug components in isolation without ever leaving the browser - and without having to run your entire application."]);
            },
            "listItem1": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Instead of visiting a page, use ", _interpolate(_list(0)), " to render your components directly in the browser."]);
            },
            "listItem1Command": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cy.mount()"]);
            },
            "listItem2": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Test from a user's perspective with all the same Cypress commands that are available in end-to-end testing."]);
            },
            "listItem3": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["To get started, you can generate the config for ", _interpolate(_list(0)), ", ", _interpolate(_list(1)), ", and ", _interpolate(_list(2)), " (and ", _interpolate(_list(3)), "!)."]);
            },
            "listItem3Link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["more"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Give feedback"]);
            }
          }
        }
      }
    },
    "noResults": {
      "defaultMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No results matched your search:"]);
      },
      "clearSearch": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Clear search"]);
      }
    },
    "sidebar": {
      "keyboardShortcuts": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Keyboard shortcuts"]);
        },
        "rerun": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Re-run tests"]);
        },
        "stop": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Stop tests"]);
        },
        "toggle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Toggle specs list"]);
        }
      },
      "toggleLabel": {
        "expanded": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Collapse sidebar"]);
        },
        "collapsed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Expand sidebar"]);
        }
      },
      "nav": {
        "ariaLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pages"]);
        }
      },
      "debug": {
        "debugFeature": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["New Debug feature"]);
        },
        "passed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Relevant run passed"]);
        },
        "failed": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Relevant run had ", _interpolate(_named("n")), " test failure"]), _normalize(["Relevant run had ", _interpolate(_named("n")), " test failures"])]);
        },
        "errored": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Relevant run had an error"]);
        },
        "erroredWithFailures": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Relevant run had an error with ", _interpolate(_named("n")), " test failure"]), _normalize(["Relevant run had an error with ", _interpolate(_named("n")), " test failures"])]);
        },
        "passing": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Relevant run is passing"]);
        },
        "failing": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["Relevant run is failing with ", _interpolate(_named("n")), " test failure"]), _normalize(["Relevant run is failing with ", _interpolate(_named("n")), " test failures"])]);
        }
      }
    },
    "topNav": {
      "released": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Released"]);
      },
      "version": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Version"]);
      },
      "versionUnsupported": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Unsupported"]);
      },
      "installed": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Installed"]);
      },
      "latest": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Latest"]);
      },
      "seeAllReleases": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["See all releases"]);
      },
      "runningOldVersion": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["You're currently running an old version of Cypress. Update to the latest version for the best experience."]);
      },
      "docsMenu": {
        "docsHeading": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Docs"]);
        },
        "gettingStartedTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Getting started"]);
        },
        "firstTest": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Write your first test"]);
        },
        "testingApp": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Testing your app"]);
        },
        "organizingTests": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Organizing tests"]);
        },
        "referencesTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["References"]);
        },
        "bestPractices": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Best practices"]);
        },
        "configuration": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configuration"]);
        },
        "api": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["API"]);
        },
        "ciTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Run in CI/CD"]);
        },
        "ciSetup": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Set up CI"]);
        },
        "fasterTests": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Run tests faster"]);
        },
        "prompts": {
          "ci1": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Configure CI"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Optimize your tests in CI by following these guides."]);
            },
            "seeOtherGuides": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["See other guides"]);
            },
            "intro": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Introduction to CI"]);
            },
            "learnTheBasics": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Learn the basics of running Cypress in CI."]);
            }
          },
          "orchestration1": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Run tests faster in CI"]);
            },
            "parallelTime": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["5 mins"]);
            },
            "noParallelTime": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["12 mins"]);
            },
            "withParallelization": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["with Parallelization"]);
            },
            "withoutParallelization": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["without Parallelization"]);
            },
            "intro": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["With Smart Orchestration, you'll be able to:"]);
            },
            "bullet1": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Run spec files in parallel"]);
            },
            "bullet2": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Prioritize failed specs to run first"]);
            },
            "bullet3": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cancel CI runs on test failure"]);
            },
            "learnMore": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Learn more"]);
            }
          }
        }
      },
      "login": {
        "bodyInitial": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Logging in gives you access to ", _interpolate(_list(0)), ". You can set up projects to be recorded and see test data from your project."]);
        },
        "bodySuccess": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["You are now logged in as ", _interpolate(_list(0)), "."]);
        },
        "bodyError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["An error occurred while attempting to log in:"]);
        },
        "bodyBrowserError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["The browser could not be opened."]);
        },
        "bodyBrowserErrorDetails": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress was unable to open your installed browser. To continue logging in, please paste this URL into your web browser:"]);
        },
        "cloud": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress Cloud"]);
        },
        "titleInitial": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log in to Cypress"]);
        },
        "titleSuccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Login successful"]);
        },
        "titleFailed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Login failed"]);
        },
        "titleBrowserError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Browser error"]);
        },
        "actionLogin": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log in"]);
        },
        "profileMenuLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Profile and logout"]);
        },
        "actionLogout": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log out"]);
        },
        "actionContinue": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Continue"]);
        },
        "actionOpening": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Opening browser"]);
        },
        "actionWaiting": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Waiting for you to log in"]);
        },
        "actionTryAgain": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Try again"]);
        },
        "actionCancel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cancel"]);
        }
      },
      "updateCypress": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Upgrade to Cypress"]);
        },
        "currentlyRunning": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["You are currently running Version ", _interpolate(_list(0)), " of Cypress. "]);
        },
        "pasteToUpgradeProject": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["To upgrade to the latest version for your project, first ", _interpolate(_list(0)), ", then paste the command below into your terminal:"]);
        },
        "pasteToUpgradeGlobal": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["To upgrade to the latest version, first ", _interpolate(_list(0)), ", then paste the command below into your terminal:"]);
        },
        "rememberToCloseInsert": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["close this app"]);
        }
      },
      "upgradeText": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Upgrade"]);
      },
      "global": {
        "projects": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Projects"]);
        }
      }
    },
    "launchpadErrors": {
      "generic": {
        "configErrorTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress configuration error"]);
        },
        "retryButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Try again"]);
        },
        "stackTraceLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Stack trace"]);
        },
        "docsButton": {
          "configGuide": {
            "text": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Configuration guide"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["https://docs.cypress.io/guides/references/configuration"]);
            }
          },
          "cloudGuide": {
            "text": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress Cloud guide"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["https://on.cypress.io/features-dashboard"]);
            }
          },
          "docsHomepage": {
            "text": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress docs"]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["https://docs.cypress.io"]);
            }
          }
        }
      },
      "noInternet": {
        "header": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You have no internet connection"]);
        },
        "message": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Check your internet connection to pull the latest data from Cypress Cloud."]);
        },
        "connectProject": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch your latest runs for this project."]);
        }
      }
    },
    "setupPage": {
      "projectSetup": {
        "frameworkLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Front-end framework"]);
        },
        "frameworkPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pick a framework"]);
        },
        "bundlerLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Bundler"]);
        },
        "bundlerPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pick a bundler"]);
        },
        "languageLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Language"]);
        },
        "configFileLanguageLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress config file"]);
        },
        "detected": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["(detected)"]);
        },
        "browseIntegrations": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Browse our list of third-party framework integrations"]);
        },
        "communityFrameworkDefinitionProblem": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Community framework definition problem"]);
        },
        "communityDependenciesCouldNotBeParsed": (ctx) => {
          const { normalize: _normalize, plural: _plural } = ctx;
          return _plural([_normalize(["This project has a community framework definition installed that could not be loaded. It is located at the following path:"]), _normalize(["This project has some community framework definitions installed that could not be loaded. They are located at the following paths:"])]);
        },
        "seeFrameworkDefinitionDocumentation": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["See the ", _interpolate(_list(0)), " for more information about creating, installing, and troubleshooting third party definitions."]);
        },
        "frameworkDefinitionDocumentation": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["framework definition documentation"]);
        }
      },
      "step": {
        "continue": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Continue"]);
        },
        "next": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Next step"]);
        },
        "back": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Back"]);
        },
        "skip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Skip"]);
        }
      },
      "configFile": {
        "createManually": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Create file manually"]);
        },
        "skippedLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Skipped"]);
        },
        "changesRequiredLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Changes required"]);
        },
        "changesRequiredBadge": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Changes required"]);
        },
        "changesRequiredDescription": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Please merge the code below with your existing ", _interpolate(_list(0))]);
        }
      },
      "testingCard": {
        "configured": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configured"]);
        },
        "notConfigured": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Not Configured"]);
        },
        "running": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Running"]);
        },
        "chooseABrowser": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose a browser"]);
        },
        "reconfigure": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Reconfigure"]);
        },
        "disabled": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Disabled"]);
        }
      }
    },
    "globalPage": {
      "empty": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Add project"]);
        },
        "helper": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Get started by adding your first project below."]);
        },
        "dropText": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Drag your project directory here or ", _interpolate(_list(0))]);
        },
        "browseManually": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["browse manually."]);
        }
      },
      "settings": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Settings"]);
      },
      "saveChanges": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Save changes"]);
      },
      "cancel": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Cancel"]);
      },
      "externalEditorPreferences": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["External editor preferences"]);
      },
      "externalEditorPreferencesDescription1": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Select your preference for opening files on your system."]);
      },
      "externalEditorPreferencesDescription2": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
        return _normalize(["You can change this later in the ", _interpolate(_list(0)), " page."]);
      },
      "recentProjectsHeader": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Recent projects"]);
      },
      "searchPlaceholder": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Search projects"]);
      },
      "addProjectButton": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Add project"]);
      },
      "projectActions": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Project actions"]);
      },
      "removeProject": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Remove project"]);
      },
      "openInIDE": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Open in IDE"]);
      },
      "openInFinder": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Open in Finder"]);
      },
      "noResultsMessage": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["No projects matched your search:"]);
      }
    },
    "welcomePage": {
      "review": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Review the differences between each testing type"]);
      },
      "codeExample": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Code example"]);
      },
      "compareTypes": {
        "content": {
          "e2eTitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["End-to-end tests"]);
          },
          "e2eBullet1": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Visit URLs via"]);
          },
          "e2eBullet2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Test flows and functionality across multiple pages"]);
          },
          "e2eBullet3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Ideal for testing integrated flows in CD workflows"]);
          },
          "componentTitle": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Component tests"]);
          },
          "ctBullet1": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Import components via"]);
          },
          "ctBullet2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Test individual components of a design system in isolation"]);
          },
          "ctBullet3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Ideal for testing isolated flows and components in CI"]);
          }
        },
        "modalTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Key differences"]);
        }
      },
      "title": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Welcome to Cypress!"]);
      }
    },
    "settingsPage": {
      "config": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Resolved configuration"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Since the options in the ", _interpolate(_list(0)), " can be set dynamically by your development environment, please refer to the legend below to understand how the configuration options are resolved."]);
        },
        "legend": {
          "env": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["env"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Set from environment variables"]);
            }
          },
          "default": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["default"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Default values"]);
            }
          },
          "dynamic": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["dynamic"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Set by the ", _interpolate(_list(0)), " function"]);
            }
          },
          "cli": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["cli"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Set from CLI arguments"]);
            }
          },
          "config": {
            "label": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["config"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["Set from ", _interpolate(_list(0))]);
            }
          }
        }
      },
      "proxy": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Proxy settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress auto-detected the following proxy settings from your operating system."]);
        },
        "bypassList": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Proxy bypass list"]);
        },
        "proxyServer": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Proxy server"]);
        }
      },
      "editor": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["External editor"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["External editor to use for editing code opened when using Cypress."]);
        },
        "noEditorSelectedPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose your editor..."]);
        },
        "customPathPlaceholder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["/path/to/editor"]);
        }
      },
      "notifications": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Desktop notifications"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress can notify you about Cloud test runs for your branch."]);
        },
        "notifyMeWhenRunStarts": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Notify me when a run starts"]);
        },
        "notifyMeWhenRunIsFailing": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Notify me when a run begins to fail"]);
        },
        "notifyMeWhenRunCompletes": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Notify me when a run completes"]);
        },
        "passed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Passed"]);
        },
        "failed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Failed"]);
        },
        "canceled": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Canceled"]);
        },
        "errored": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Errored"]);
        },
        "sendTestNotification": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Send a test notification"]);
        },
        "notReceivingNotifications": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Not receiving notifications? You might need to allow notifications from Cypress in your computer's system preferences. ", _interpolate(_list(0))]);
        },
        "testNotificationTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Hello From Cypress"]);
        },
        "testNotificationBody": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["This is a test notification"]);
        },
        "troubleshoot": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Troubleshoot"]);
        },
        "enableNotificationsLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["To modify notification settings, enable desktop notifications"]);
        }
      },
      "projectId": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project ID"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The Project ID configured for this project inside of Cypress Cloud. ", _interpolate(_list(0))]);
        }
      },
      "specPattern": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec patterns"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The globs pointing Cypress to your spec files configured for this project. ", _interpolate(_list(0))]);
        }
      },
      "recordKey": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Record key"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The Record Key configured for this project inside of Cypress Cloud. ", _interpolate(_list(0))]);
        },
        "manageKeys": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Manage keys"]);
        },
        "errorEmpty": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You do not have permission to record on this project"]);
        },
        "errorEmptyButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request record rights"]);
        },
        "errorAccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You do not have permission to view this project"]);
        },
        "errorAccessPending": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Your request for access to this project is pending approval"]);
        },
        "errorAccessButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Request access"]);
        },
        "errorNotFound": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project not found"]);
        },
        "errorNotFoundButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect it again"]);
        },
        "errorNotLoggedIn": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You are not connected to Cypress Cloud"]);
        },
        "errorNotLoggedInButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Log in to Cypress Cloud"]);
        }
      },
      "project": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the configuration settings currently in use for this project."]);
        }
      },
      "cloud": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress Cloud settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the configuration settings for recording to Cypress Cloud."]);
        }
      },
      "experiments": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Experiments"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["If you'd like to try out new features that we're working on, you can enable beta features for your project by turning on the experimental features you'd like to try. ", _interpolate(_list(0))]);
        },
        "experimentalCspAllowList": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["CSP Allow List"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables Cypress to selectively permit Content-Security-Policy and Content-Security-Policy-Report-Only header directives, including those that might otherwise block Cypress from running."]);
          }
        },
        "experimentalFetchPolyfill": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Fetch polyfill"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Automatically replaces `window.fetch` with a polyfill that Cypress can spy on and stub. Note: `experimentalFetchPolyfill` has been deprecated in Cypress 6.0.0 and will be removed in a future release. Consider using [`cy.intercept()`](https://on.cypress.io/intercept) to intercept `fetch` requests instead."]);
          }
        },
        "experimentalInteractiveRunEvents": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Interactive run events"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Allows listening to the [`before:run`](https://on.cypress.io/before-run), [`after:run`](https://on.cypress.io/after-run), [`before:spec`](https://on.cypress.io/before-spec), and [`after:spec`](https://on.cypress.io/after-spec) events in plugins during interactive mode."]);
          }
        },
        "experimentalModifyObstructiveThirdPartyCode": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Modify obstructive third party code"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Applies `modifyObstructiveCode` to third party `.html` and `.js`, removes subresource integrity, and modifies the user agent in Electron."]);
          }
        },
        "experimentalSingleTabRunMode": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Single tab run mode"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Runs all component specs in a single tab, trading spec isolation for faster run mode execution."]);
          }
        },
        "experimentalSourceRewriting": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Source rewriting"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables AST-based JS/HTML rewriting. This may fix issues caused by the existing regex-based JS/HTML replacement algorithm. See [#5273](https://github.com/cypress-io/cypress/issues/5273) for details."]);
          }
        },
        "experimentalStudio": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Studio"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Generate and save commands directly to your test suite by interacting with your app as an end user would."]);
          }
        },
        "experimentalWebKitSupport": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["WebKit Support"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Adds support for testing in the WebKit browser engine used by Safari. See https://on.cypress.io/webkit-experiment for more information."]);
          }
        },
        "experimentalRunAllSpecs": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Run All Specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(['Enables the "Run All Specs" UI feature, allowing the execution of multiple specs sequentially.']);
          }
        },
        "experimentalOriginDependencies": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Origin Dependencies"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables support for `Cypress.require()` for including dependencies within the `cy.origin()` callback."]);
          }
        },
        "experimentalMemoryManagement": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Memory Management"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Enables support for improved memory management within Chromium-based browsers."]);
          }
        },
        "experimentalSkipDomainInjection": {
          "name": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Skip Domain Injection"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Disables setting `document.domain` to the application's super domain on injection."]);
          }
        }
      },
      "device": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Device settings"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the configuration settings currently in use for this device."]);
        }
      },
      "testingPreferences": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Testing preferences"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configure your testing environment with these flags"]);
        },
        "autoScrollingEnabled": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Auto scrolling enabled"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Scroll behavior when running tests."]);
          }
        }
      },
      "footer": {
        "text": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["You can reconfigure the ", _interpolate(_named("testingType")), " testing settings for this project if you're experiencing issues with your Cypress configuration."]);
        },
        "button": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configuration guide"]);
        },
        "buttonLink": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["https://docs.cypress.io/guides/references/configuration"]);
        }
      }
    },
    "runs": {
      "slideshow": {
        "tour": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Record your first test run to Cypress Cloud"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["You're almost there! Start recording your test runs to Cypress Cloud by running the command above in your local or CI terminal."]);
          }
        },
        "step1": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Monitor test failures in real time"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Uncover high-risk failed and flaky tests in CI before they become a problem in production."]);
          }
        },
        "step2": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Check if failed CI test runs also fail locally"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Use the Test Runner to run only the tests that failed in your last recorded run."]);
          }
        },
        "step3": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Build, test, and ship with confidence 🚀"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["With Cypress Cloud, you can proactively identify, investigate, and resolve failures, and be a quality champion."]);
          }
        },
        "controls": {
          "step": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " of ", _interpolate(_list(1))]);
          },
          "next": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Next"]);
          },
          "reset": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reset"]);
          },
          "view": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["View Tour"]);
          }
        }
      },
      "connect": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect to view your recorded runs"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress Cloud is built for teams who need to do testing at scale."]);
        },
        "buttonUser": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect to Cypress Cloud"]);
        },
        "buttonProject": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect a Cypress Cloud project"]);
        },
        "modal": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect project"]);
          },
          "cancel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cancel"]);
          },
          "createOrg": {
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["You need to create an organization in Cypress Cloud to continue."]);
            },
            "button": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Create organization"]);
            },
            "waitingButton": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Waiting for you to create an organization..."]);
            },
            "refreshButton": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Refresh organizations list"]);
            }
          },
          "selectProject": {
            "organization": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Organization"]);
            },
            "noOrganizationSelectedError": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["required when creating a new project"]);
            },
            "manageOrgs": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Manage organizations"]);
            },
            "project": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Project"]);
            },
            "projectName": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Project name"]);
            },
            "projectNameDisclaimer": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["(You can change this later)"]);
            },
            "createNewProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Create new"]);
            },
            "chooseExistingProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Choose an existing project"]);
            },
            "newProjectAccess": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Project access"]);
            },
            "privateLabel": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Private"]);
            },
            "privateDescription": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Only invited users can view recorded test results."]);
            },
            "publicLabel": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Public"]);
            },
            "publicDescription": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Anyone can view recorded test results."]);
            },
            "connectProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Connect project"]);
            },
            "createProject": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Create project"]);
            },
            "placeholderOrganizations": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Pick an organization"]);
            },
            "placeholderProjects": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Pick a project"]);
            },
            "placeholderProjectsPending": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Pick an organization first"]);
            }
          },
          "connectManually": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Connect project manually"]);
            },
            "warning": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["We couldn't add the projectId to your cypress.config.js file automatically."]);
            },
            "mainMessage": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
              return _normalize(["Manually add the ", _interpolate(_named("projectId")), " to the root of the config object in your ", _interpolate(_named("configFile")), " file."]);
            },
            "waitingButton": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Waiting for you to add the projectId..."]);
            }
          }
        },
        "errors": {
          "baseError": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cypress Cloud error"]);
            }
          },
          "internalServerError": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Cannot connect to Cypress Cloud"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize(["The request times out when trying to retrieve the info from Cypress Cloud. Please refresh the page to try again and visit our ", _interpolate(_list(0)), " if this behavior continues."]);
            },
            "link": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Support Page"]);
            }
          }
        }
      },
      "connectSuccessAlert": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["This project is now connected to Cypress Cloud!"]);
        },
        "item1": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["We automatically added the ", _interpolate(_named("projectId")), " to your ", _interpolate(_named("configFile")), " file."]);
        },
        "item2": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Please ensure that your ", _interpolate(_list(0)), " file is checked into source control."]);
        }
      },
      "empty": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copy the command below to record your first run"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Review the ", _interpolate(_list(0)), " to Cypress Cloud"]);
        },
        "link": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["guide on recording runs"]);
        },
        "gitRepositoryNotDetected": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Git repository not detected"]);
        },
        "ensureGitSetupCorrectly": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to associate runs with your local state. As a fallback, all runs for your project are shown. Please ensure that version control is set up correctly."]);
        },
        "noRunsFoundForBranch": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No runs found for your branch"]);
        },
        "noRunsForBranchMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to show runs for your branch. As a fallback, all runs for your project are shown. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud."]);
        }
      },
      "results": {
        "skipped": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["skipped"]);
        },
        "pending": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["pending"]);
        },
        "passed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["passed"]);
        },
        "failed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["failed"]);
        }
      },
      "errors": {
        "notFound": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Couldn't find your project"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["We were unable to find an existing project matching the ", _interpolate(_list(0)), " set in your Cypress config file. You can reconnect with an existing project or create a new project."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reconnect your project"]);
          }
        },
        "unauthorized": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Request access to view the recorded runs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["This is a private project that you do not currently have access to. Please request access from the project owner in order to view the list of runs."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Request access"]);
          }
        },
        "unauthorizedRequested": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Your access request for this project has been sent."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["The owner of this project has been notified of your request. We'll notify you via email when your access request has been granted."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Request Sent"]);
          }
        },
        "connectionFailed": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cannot connect to Cypress Cloud"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The request times out when trying to retrieve the recorded runs from Cypress Cloud. Please refresh the page to try again and visit out ", _interpolate(_list(0)), " if this behavior continues."]);
          },
          "link": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Support page"]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Try again"]);
          }
        }
      }
    },
    "debugPage": {
      "openFile": {
        "openInIDE": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Open in IDE"]);
        },
        "notFoundLocally": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Opening in IDE is disabled because the spec is not found in this project"]);
        }
      },
      "limit": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress renders up to 100 failed test results"]);
        },
        "message": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["This run has ", _interpolate(_named("n")), " failed tests"]), _normalize(["This run has ", _interpolate(_named("n")), " failed test"]), _normalize(["This run has ", _interpolate(_named("n")), " failed tests"])]);
        },
        "link": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["See all test results in Cypress Cloud"]);
        }
      },
      "runFailures": {
        "btn": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Run Failures"]);
        },
        "notFoundLocally": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Spec was not found locally"]);
        },
        "switchTestingTypeInfo": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["There is ", _interpolate(_named("n")), " ", _interpolate(_named("testingType")), " test failing in this spec. To run it locally switch to ", _interpolate(_named("testingType")), " testing."]), _normalize(["There are ", _interpolate(_named("n")), " ", _interpolate(_named("testingType")), " tests failing in this spec. To run them locally switch to ", _interpolate(_named("testingType")), " testing."])]);
        },
        "switchTestingTypeAction": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Switch to ", _interpolate(_named("testingType")), " testing"]);
        }
      },
      "switchToRun": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Switch to run number ", _interpolate(_named("runNumber"))]);
      },
      "overLimit": {
        "usageExceededTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've reached your monthly test result limit"]);
        },
        "usageExceededUserMessage": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Your Free Cypress Cloud plan includes ", _interpolate(_named("numberTests")), " monthly recorded test results. Contact your Cypress Cloud admin to upgrade your plan and view more test results."]);
        },
        "usageExceededAdminMessage": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Your Free Cypress Cloud plan includes ", _interpolate(_named("numberTests")), " monthly recorded test results. Upgrade your plan now to view more test results."]);
        },
        "retentionExceededTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Beyond data retention"]);
        },
        "retentionExceededMessage": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Your data retention limit is ", _interpolate(_named("limitDays")), " days and these tests ran ", _interpolate(_named("runAgeDays")), " days ago. Upgrade your plan to increase your data retention limit."]);
        },
        "upgradePlan": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Upgrade plan"]);
        },
        "contactAdmin": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Contact admin"]);
        }
      },
      "wellDone": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Well Done!"]);
      },
      "allYourTestsPassed": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["All your tests passed."]);
      },
      "incomplete": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Incomplete"]);
      },
      "specsSkipped": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
        return _plural([_normalize([_interpolate(_named("totalSkippedSpecs")), " of ", _interpolate(_named("n")), " spec skipped"]), _normalize([_interpolate(_named("totalSkippedSpecs")), " of ", _interpolate(_named("n")), " specs skipped"])]);
      },
      "runHasNoTests": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Run has no tests"]);
      },
      "theRunStartedButNeverCompleted": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["The run started but never completed. This can happen when the run is cancelled from CI or when Cypress crashes while running tests."]);
      },
      "checkYourCiLogs": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
        return _normalize(["Check your ", _interpolate(_list(0)), " logs for more information."]);
      },
      "archiveThisRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Archive this run to remove it from the runs list and analytics."]);
      },
      "manuallyCancelled": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Manually cancelled"]);
      },
      "mostRecentRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["You are on the most recent run"]);
      },
      "switchToLatestRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Switch to latest run"]);
      },
      "switchRun": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Switch run"]);
      },
      "foundMoreThan100Runs": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["We found more than 100 runs."]);
      },
      "goToCypressCloud": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Go to Cypress Cloud to see all runs"]);
      },
      "emptyStates": {
        "debugDirectlyInCypress": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Debug failed CI runs directly in Cypress"]);
        },
        "reviewRerunAndDebug": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review, rerun, and debug failed CI test runs that are recorded to Cypress Cloud – all from within your local Cypress app."]);
        },
        "connectToCypressCloud": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect to Cypress Cloud"]);
        },
        "connect": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Connect to debug your tests"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress Cloud is built for teams who need to do testing at scale."]);
          }
        },
        "noProjectTestMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Connect a Cypress Cloud project to locally debug failed CI test runs"]);
        },
        "noRuns": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Copy the command below to record your first run"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["Review the ", _interpolate(_list(0)), " to Cypress Cloud"]);
          },
          "link": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["guide on recording runs"]);
          }
        },
        "gitRepositoryNotDetected": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Git repository not detected"]);
        },
        "ensureGitSetupCorrectly": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to associate runs with your local state. Please ensure that Git is properly configured for your project."]);
        },
        "learnAboutRecordingSrText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["about recording a run to Cypress Cloud"]);
        },
        "learnAboutDebuggingSrText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["about debugging CI failures in Cypress"]);
        },
        "learnAboutProjectSetupSrText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["about project setup in Cypress"]);
        },
        "noRunsFoundForBranch": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["No runs found for your branch"]);
        },
        "noRunsForBranchMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cypress uses Git to show runs for your branch. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud."]);
        },
        "slideshow": {
          "tour": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Record your first test run to Cypress Cloud"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["You're almost there! Start recording your test runs to Cypress Cloud by running the command below in your local or CI terminal."]);
            }
          },
          "step1": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Review how many tests failed during a CI test run"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["The Debug page shows the latest completed test run for your current checked out commit."]);
            }
          },
          "step2": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Check if failed CI test runs also fail locally"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Use the Test Runner to run only the tests that failed in your last recorded run."]);
            }
          },
          "step3": {
            "title": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Locally debug failed test runs with visual artifacts"]);
            },
            "description": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Easily review screenshots, videos and logs from your tests."]);
            }
          },
          "controls": {
            "step": (ctx) => {
              const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
              return _normalize([_interpolate(_list(0)), " of ", _interpolate(_list(1))]);
            },
            "next": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Next"]);
            },
            "reset": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["Reset"]);
            },
            "view": (ctx) => {
              const { normalize: _normalize } = ctx;
              return _normalize(["View Tour"]);
            }
          }
        }
      },
      "pending": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Testing in progress..."]);
        },
        "titleCompletionScheduled": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Scheduled to complete..."]);
        },
        "scheduledTime": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Scheduled to complete in ", _interpolate(_named("time"))]);
        },
        "scheduledCompletionExpired": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Scheduled to complete soon"]);
        },
        "failuresHere": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Failures will be displayed here"]);
        }
      },
      "specCounts": {
        "whenRunning": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("completed")), " of ", _interpolate(_named("total")), " specs completed"]), _normalize([_interpolate(_named("completed")), " of ", _interpolate(_named("total")), " spec completed"]), _normalize([_interpolate(_named("completed")), " of ", _interpolate(_named("total")), " specs completed"])]);
        },
        "whenCompleted": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " specs"]), _normalize([_interpolate(_named("n")), " spec"]), _normalize([_interpolate(_named("n")), " specs"])]);
        }
      },
      "header": {
        "runUrl": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View in Cypress Cloud"]);
        },
        "commitsAhead": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["You are ", _interpolate(_named("n")), " commit ahead"]), _normalize(["You are ", _interpolate(_named("n")), " commits ahead"])]);
        }
      },
      "stats": {
        "groups": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " group"]), _normalize([_interpolate(_named("n")), " groups"])]);
        },
        "operatingSystems": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " operating system"]), _normalize([_interpolate(_named("n")), " operating systems"])]);
        },
        "browsers": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize([_interpolate(_named("n")), " browser"]), _normalize([_interpolate(_named("n")), " browsers"])]);
        }
      },
      "artifacts": {
        "stdout": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View Log"]);
        },
        "screenshots": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View Screenshots"]);
        },
        "video": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["View Video"]);
        }
      }
    },
    "testingType": {
      "modalTitle": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Choose a testing type"]);
      },
      "e2e": {
        "name": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["E2E Testing"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Build and test the entire experience of your application from end-to-end to ensure each flow matches your expectations."]);
        }
      },
      "component": {
        "name": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Component Testing"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Build and test your components from your design system in isolation in order to ensure each state matches your expectations."]);
        }
      },
      "componentDisabled": {
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["To test your components you must ", _interpolate(_list(0)), " as an NPM dependency for this project."]);
        },
        "link": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["install Cypress"]);
        }
      }
    },
    "migration": {
      "before": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Before"]);
      },
      "after": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["After"]);
      },
      "heresWhy": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["here's why:"]);
      },
      "renameAuto": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We recommend automatically renaming your specs in this step"]);
        },
        "changeButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["change"]);
        },
        "changedSpecFolder": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've changed the default spec folder from:"]);
        },
        "changedSpecExt": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've changed the default spec file extension from:"]);
        },
        "changedSpecPatternExplain": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We've changed the default spec file extension to ", _interpolate(_list(0)), " in order to avoid conflicts with any existing testing frameworks."]);
        },
        "optedOutMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've opted not to rename your spec file extension. You may need to change your specPattern later so we can still find your spec files."]);
        },
        "folderRenameMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've opted not to rename your spec file extension, we'll only rename the folder"]);
        },
        "modal": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Change the existing spec file extension"]);
          },
          "warning": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We recommend using the default extension to avoid inconsistencies, framework conflicts, and confusion with your team."]);
          },
          "line1": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress now supports the ability to create new spec files from within the UI for both E2E and component specs."]);
          },
          "line2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["All new spec files created within Cypress will use the default pattern of: "]);
          },
          "line3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We want to rename your existing specs so that they have a consistent filename pattern for both E2E and component testing."]);
          },
          "line4": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["All documentation and example code will be using: "]);
          },
          "line5": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["We've changed the placement of component specs to be next to their source files (e.g. src/Button.jsx and src/Button.cy.jsx)"]);
          },
          "line6": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["The new default pattern of ", _interpolate(_list(0)), " prevents targeting conflicts with other testing frameworks. (e.g. Jest)"]);
          },
          "label": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Choose from the following filename patterns:"]);
          },
          "option1": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize([_interpolate(_list(0)), " (recommended)"]);
          },
          "option2": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Don't rename anything — keep what I have."]);
          },
          "option3": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename folder only."]);
          },
          "optOutAdditional": (ctx) => {
            const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
            return _normalize(["I may need to change my ", _interpolate(_list(0)), " later if I don't use the recommended filename extension."]);
          },
          "buttonSave": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Save changes"]);
          },
          "buttonCancel": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cancel"]);
          }
        }
      },
      "renameManual": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We need you to move your component specs manually"]);
        },
        "componentFolderRemoved": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We've removed the ", _interpolate(_list(0)), " options from the Cypress config."]);
        },
        "addedSpecPattern": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We've added a new ", _interpolate(_list(0)), " option in the Cypress config that tells us where to find your component specs."]);
        },
        "cannotAuto": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["We can't automatically migrate your existing component spec files. We recommend that you move the following component spec files next to your source component files (e.g. ", _interpolate(_list(0)), ")"]);
        },
        "ifSkipNote": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["If you skip this step, Cypress will still be able to find them, but any new specs that you create will automatically be created next to your component files."]);
        }
      },
      "renameSupport": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We'll automatically rename your existing E2E support file in this step"]);
        },
        "serveDifferentTypes": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We now serve different support files for E2E and Component Testing."]);
        },
        "changedSupportFile": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've renamed the E2E support file from:"]);
        }
      },
      "configFile": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We need to migrate to the new Cypress configuration file"]);
        },
        "changedDefault": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've changed the default Cypress config file from:"]);
        },
        "customOptions": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["We've set a custom ", _interpolate(_named("specPattern")), " option based on your ", _interpolate(_named("options")), "."]);
        },
        "willConvert": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["We'll automatically create a new ", _interpolate(_named("jsFile")), " file and seed it with your options from your existing ", _interpolate(_named("jsonFile")), "."]);
        }
      },
      "setupComponent": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You need to reconfigure Cypress for component testing"]);
        },
        "line1": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We've detected that you are currently using the experimental version of component testing."]);
        },
        "line2": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Your existing configuration is no longer compatible with new component testing configuration options."]);
        },
        "line3": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["In a previous step, we renamed your component specs, but can't automatically migrate your existing component testing configuration."]);
        },
        "line4": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["In the next screen, you'll be able to reconfigure component testing in a new guided configuration wizard."]);
        }
      },
      "wizard": {
        "title": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Migrating to Cypress ", _interpolate(_named("version"))]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Your project requires updates to work with this version."]);
        },
        "typicalMigrationLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Typical migration:"]);
        },
        "typicalMigrationTime": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["5-10 minutes"]);
        },
        "step1": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Migrate existing specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll automatically rename and/or move your existing spec files as needed."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename these specs for me"]);
          },
          "buttonSkip": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Skip renaming specs"]);
          },
          "buttonRenameFolder": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename the folder for me"]);
          }
        },
        "step2": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Move your existing component specs"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, you'll manually move your existing component specs to their new default location."]);
          },
          "buttonWait": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Waiting for you to move your component specs..."]);
          },
          "buttonDone": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Continue to next step"]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["I'll do this later"]);
          }
        },
        "step3": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename the Cypress support file"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll automatically rename your existing support file."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Rename the support file for me"]);
          }
        },
        "step4": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Migrate to the new Cypress configuration file"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll automatically migrate your existing Cypress configuration to the new Cypress configuration file."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Migrate the configuration for me"]);
          }
        },
        "step5": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reconfigure component testing"]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["In this step, we'll explain how you will reconfigure Cypress for component testing."]);
          },
          "button": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Finish migration and continue"]);
          }
        }
      }
    },
    "majorVersionWelcome": {
      "title": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["What's New in Cypress"]);
      },
      "actionContinue": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Continue"]);
      },
      "linkReleaseNotes": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["View full changelog"]);
      }
    },
    "setupWizard": {
      "selectFramework": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Project setup"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Confirm the front-end framework and bundler used in your project."]);
        }
      },
      "installDependencies": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Install dev dependencies"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Based on your previous selection, the following dependencies are required."]);
        },
        "pasteCommand": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Paste this command into your terminal to install the following packages:"]);
        },
        "waitForInstall": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Waiting for you to install the dependencies..."]);
        },
        "installed": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["installed"]);
        },
        "pendingInstall": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["pending installation"]);
        },
        "installationAlertSuccess": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["You've successfully installed all required dependencies."]);
        }
      },
      "configFiles": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Configuration files"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["We added the following files to your project:"]);
        }
      },
      "chooseBrowser": {
        "title": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Choose a browser"]);
        },
        "description": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Choose your preferred browser for ", _interpolate(_named("testingType")), " testing."]);
        }
      }
    },
    "e2eProjectSetup": {
      "title": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Project setup"]);
      },
      "description": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Confirm your project's preferred language."]);
      }
    },
    "openBrowser": {
      "startComponent": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Start Component Testing in ", _interpolate(_named("browser"))]);
      },
      "startE2E": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Start E2E Testing in ", _interpolate(_named("browser"))]);
      },
      "openingComponent": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Opening Component Testing in ", _interpolate(_named("browser"))]);
      },
      "openingE2E": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Opening E2E Testing in ", _interpolate(_named("browser"))]);
      },
      "running": (ctx) => {
        const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
        return _normalize(["Running ", _interpolate(_named("browser"))]);
      },
      "focus": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Focus"]);
      },
      "close": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Close"]);
      },
      "switchTestingType": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Switch testing type"]);
      }
    },
    "runner": {
      "header": {
        "reviewDocs": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the docs"]);
        },
        "troubleRendering": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["if you're having trouble rendering your components properly."]);
        }
      },
      "snapshot": {
        "highlightsLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Highlights"]);
        },
        "testsRunningError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cannot show snapshot while tests are running"]);
        },
        "snapshotMissingError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["The snapshot is missing. Displaying current state of the DOM."]);
        },
        "defaultTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["DOM snapshot"]);
        },
        "pinnedTitle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Pinned"]);
        },
        "studioActiveError": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cannot show snapshot while creating commands in Studio"]);
        }
      },
      "selectorPlayground": {
        "matches": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;
          return _plural([_normalize(["No matches"]), _normalize([_interpolate(_named("n")), " match"]), _normalize([_interpolate(_named("n")), " matches"])]);
        },
        "playgroundTooltip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Click an element to see a suggested selector"]);
        },
        "copyTooltip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copy to clipboard"]);
        },
        "copyTooltipAction": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copied!"]);
        },
        "printTooltip": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Print to console"]);
        },
        "printTooltipAction": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Printed!"]);
        },
        "invalidSelector": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Invalid"]);
        },
        "selectorMethodsLabel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Selector methods"]);
        },
        "toggle": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Toggle playground"]);
        }
      },
      "automation": {
        "disconnected": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["The Cypress extension has disconnected."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress cannot run tests without this extension."]);
          },
          "reload": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Reload the browser"]);
          }
        },
        "missing": {
          "title": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["The Cypress extension is missing."]);
          },
          "description": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Cypress cannot run tests without this extension. Please choose another browser."]);
          }
        },
        "shared": {
          "link": (ctx) => {
            const { normalize: _normalize } = ctx;
            return _normalize(["Read more about browser management"]);
          }
        }
      },
      "viewportTooltip": {
        "buttonText": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Review the guide on viewports"]);
        },
        "buttonHref": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["https://on.cypress.io/viewport"]);
        },
        "infoText": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["The viewport determines the width and height of your application under test. By default the viewport will be ", _interpolate(_list(0)), " by ", _interpolate(_list(1)), " for ", _interpolate(_list(2)), " testing."]);
        },
        "configText": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;
          return _normalize(["Additionally, you can override this value in your ", _interpolate(_named("configFile")), " or via the ", _interpolate(_named("viewportCommand")), " command."]);
        }
      },
      "studio": {
        "studio": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Studio"]);
        },
        "studioDescription": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Generate Cypress commands by interacting with your site as an end user would. Then, save these commands directly to your test file."]);
        },
        "studioDetailedDescription": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Generate and save commands directly to your test suite by interacting with your app as an end user would. Right click on an element to add an assertion. Studio will track events that generate the following commands:"]);
        },
        "getStartedButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Get started"]);
        },
        "feedbackPrompt": (ctx) => {
          const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;
          return _normalize(["Your ", _interpolate(_list(0)), " will be highly influential to our team."]);
        },
        "experimentalMessage": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["This feature is currently experimental and we will be adding more commands and abilities in the future."]);
        },
        "feedbackLink": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["feedback"]);
        },
        "saveTest": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Save test"]);
        },
        "testName": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Test name"]);
        },
        "saveTestButton": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Save"]);
        },
        "closeStudio": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Close Studio"]);
        },
        "restartStudio": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Restart Studio"]);
        },
        "copyCommands": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Copy commands to clipboard"]);
        },
        "commandsCopied": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Commands copied!"]);
        },
        "availableCommands": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Available commands"]);
        },
        "giveFeedback": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Give feedback"]);
        },
        "enterValidUrl": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Enter a valid URL to visit"]);
        },
        "continue": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Continue"]);
        },
        "actionCancel": (ctx) => {
          const { normalize: _normalize } = ctx;
          return _normalize(["Cancel"]);
        }
      }
    },
    "warnings": {
      "retry": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Try again"]);
      }
    },
    "versions": {
      "alpha": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Alpha"]);
      },
      "community": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Community"]);
      },
      "beta": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["Beta"]);
      },
      "new": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["New"]);
      },
      "communityNote": (ctx) => {
        const { normalize: _normalize } = ctx;
        return _normalize(["This is a community provided definition."]);
      }
    }
  }
};
const rawJsonMessages = `{
  "links": {
    "learnMore": "Learn more.",
    "learnMoreButton": "Learn more",
    "needHelp": "Need help"
  },
  "components": {
    "modal": {
      "dismiss": "Dismiss"
    },
    "fileSearch": {
      "noMatchesForExtension": "No files found when searching for the file extension",
      "noMatchesForFileName": "",
      "byFilenameInput": "Search by filename...",
      "byExtensionInput": "Extensions to include e.g. *.tsx, *.vue",
      "matchesIndicatorEmptyFileSearch": "No matches | 1 match | { denominator } matches",
      "matchesIndicator": "No matches | {numerator} of {denominator} matches | {numerator} of {denominator} matches"
    },
    "button": {
      "cancel": "Cancel",
      "back": "Back"
    },
    "loading": {
      "config": {
        "title": "Initializing config...",
        "description": "Please wait while we load your project and find browsers installed on your system"
      }
    },
    "select": {
      "placeholder": "Choose an option..."
    },
    "alert": {
      "dismissAriaLabel": "Dismiss"
    },
    "specPattern": {
      "matches": "No matches | {n} match | {n} matches"
    },
    "specPatternModal": {
      "title": "Spec pattern settings"
    }
  },
  "clipboard": {
    "copy": "Copy",
    "copied": "Copied!"
  },
  "actions": {
    "close": "Close"
  },
  "file": {
    "edit": "Edit",
    "git": {
      "modified": "Modified",
      "created": "Created"
    }
  },
  "status": {
    "enabled": "Enabled",
    "disabled": "Disabled"
  },
  "createSpec": {
    "newSpec": "New spec",
    "createSpec": "Create spec",
    "done": "Done!",
    "noComponentsFound": "No components found",
    "unableToParseFile": "Unable to parse file",
    "updateSpecPattern": "Update spec pattern",
    "newSpecModalTitle": "Create new spec",
    "successPage": {
      "header": "Great! The spec was successfully added",
      "runSpecButton": "Okay, run the spec",
      "createAnotherSpecButton": "Create another spec"
    },
    "page": {
      "defaultPatternNoSpecs": {
        "title": "Create your first spec",
        "component": {
          "description": "Since this project looks new, we recommend that you get started by creating a spec for one of your components."
        },
        "e2e": {
          "description": "Since this project looks new, we recommend that you use the specs and tests that we've written for you to get started."
        }
      },
      "customPatternNoSpecs": {
        "title": "No specs found",
        "description": "We couldn't find any files matching the following spec patterns. You may need to move your specs or update your {0} to find them."
      }
    },
    "noSpecsMessage": "If you feel that you're seeing this screen in error, and there should be specs listed here, you likely need to update the spec pattern.",
    "viewSpecPatternButton": "View spec pattern",
    "e2e": {
      "importFromScaffold": {
        "header": "Scaffold example specs",
        "description": "We'll generate several example specs to help guide you on how to write tests in Cypress.",
        "specsAddedHeader": "Great! We added the following files to your project:",
        "specsAddedButton": "Okay, I got it!",
        "specsAddingHeader": "Adding specs..."
      },
      "importTemplateSpec": {
        "header": "Create new spec",
        "description": "We'll generate a template spec file which can be used to start testing your application.",
        "chooseFilenameHeader": "Enter the path for your new spec",
        "inputPlaceholder": "Enter a relative path...",
        "invalidSpecWarning": "This path is invalid because it doesn't match the following ",
        "specExtensionWarning": "We recommend naming your spec to match the following pattern: "
      }
    },
    "component": {
      "importFromComponent": {
        "header": "Create from component",
        "description": "Generate a basic component test for any of the components in this project.",
        "chooseAComponentHeader": "Choose a component"
      },
      "importTemplateSpec": {
        "header": "Create new spec",
        "description": "We'll generate a template spec file which can be used to start testing your components.",
        "invalidComponentWarning": "We couldn't generate a valid path matching your custom "
      }
    }
  },
  "specPage": {
    "pageTitle": "Specs",
    "newSpecButton": "New spec",
    "searchPlaceholder": "Search specs",
    "clearSearch": "Clear search field",
    "componentSpecsHeader": "Component specs",
    "e2eSpecsHeader": "E2E specs",
    "componentSpecsHeaderShort": "Component",
    "e2eSpecsHeaderShort": "E2E",
    "lastUpdated": {
      "header": "Last updated",
      "tooltip": {
        "gitStatus": "Git status",
        "gitInfo": "git info",
        "gitInfoAvailable": "{0} of the spec files within this project",
        "gitInfoUnavailable": "Cypress is unable to detect {0} for this project and has defaulted to showing file system data instead"
      }
    },
    "latestRuns": {
      "header": "Latest runs",
      "headerShort": "Runs",
      "tooltip": {
        "connected": "The {0} in Cypress Cloud",
        "notConnected": "Connect to Cypress Cloud to see the {0}",
        "noAccess": "Request access to this project in Cypress Cloud to view the {0}",
        "linkText": "status of your latest runs"
      }
    },
    "averageDuration": {
      "header": "Average duration",
      "headerShort": "Duration",
      "tooltip": {
        "connected": "The {0} of your latest runs in Cypress Cloud",
        "notConnected": "Connect to Cypress Cloud to see the {0} of your latest runs",
        "noAccess": "Request access to this project in Cypress Cloud to view the {0} of your latest runs",
        "linkText": "average spec durations"
      }
    },
    "flaky": {
      "badgeLabel": "Flaky",
      "severityLow": "Low",
      "severityMedium": "Medium",
      "severityHigh": "High",
      "flakyRate": "{0}% flaky rate",
      "flakyRuns": "{flakyRuns} flaky runs / {totalRuns} total | {flakyRuns} flaky run / {totalRuns} total | {flakyRuns} flaky runs / {totalRuns} total",
      "lastFlaky": "Last run flaky | Last flaky {runsSinceLastFlake} run ago | Last flaky {runsSinceLastFlake} runs ago"
    },
    "hoverButton": {
      "connect": "Connect",
      "connectProject": "Connect project",
      "connectProjectShort": "Connect",
      "requestAccess": "Request access",
      "requestAccessShort": "Request",
      "requestSent": "Request sent",
      "requestSentShort": "Sent"
    },
    "connectProjectButton": "Connect your project",
    "cloudLoginButton": "Log in to Cypress Cloud",
    "reconnectProjectButton": "Reconnect your project",
    "unauthorizedBannerTitle": "Request access to project",
    "requestAccessButton": "Request access",
    "requestSentButton": "Request sent",
    "rows": {
      "gitTooltipSubtext": "{shortHash} by {author}"
    },
    "noResultsMessage": "No specs matched your search:",
    "noSpecError": {
      "title": "Spec not found",
      "intro": "There is no spec matching the following location:",
      "explainer": "It is possible that the file has been moved or deleted. Please choose from the list of specs below."
    },
    "offlineWarning": {
      "title": "No internet connection",
      "explainer": "Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch the run metrics from Cypress Cloud."
    },
    "fetchFailedWarning": {
      "title": "Lost connection",
      "explainer1": "The request timed out or failed when trying to retrieve the recorded run metrics from Cypress Cloud. The information that you're seeing in the table below may be incomplete as a result.",
      "explainer2": "Please refresh the page to try again and visit our {0} if this behavior continues.",
      "refreshButton": "Try again"
    },
    "banners": {
      "login": {
        "title": "Optimize and record your CI test runs with Cypress Cloud",
        "content": "When you configure Cypress to record tests to Cypress Cloud, you'll see data from your latest recorded runs in the Cypress app. This increased visibility into your test history allows you to debug your tests faster and more effectively, all within your local workflow.",
        "buttonLabel": "Get started with Cypress Cloud"
      },
      "createOrganization": {
        "title": "Finish setting up Cypress Cloud",
        "content": "Join or create an organization in Cypress Cloud to access your projects and recorded test runs.",
        "buttonLabel": "Set up your organization"
      },
      "connectProject": {
        "title": "Connect your project to Cypress Cloud",
        "content": "Bring your recorded test results into your local development workflow to monitor, run, and fix tests all in the Cypress app.",
        "buttonLabel": "Connect your project"
      },
      "record": {
        "title": "Record your first run",
        "content": "Record a run to see your test results in Cypress Cloud. You can then optimize your test suite, debug failing and flaky tests, and integrate with your favorite tools."
      },
      "ct": {
        "title": "{0} component testing is available for this project",
        "content": "You can now use Cypress to develop and test individual components without running your whole application. Generate the config in just a few clicks.",
        "primaryAction": "Quick setup",
        "secondaryAction": "Read our guide",
        "dismissAction": "Give feedback"
      },
      "enableNotifications": {
        "title": "Start debugging as soon as your first tests fail",
        "subtitle": "Cypress can notify you about Cloud test runs for your branch.",
        "enableDesktopNotifications": "Enable desktop notifications",
        "remindMeLater": "Remind me later",
        "notificationsEnabledTitle": "Notifications Enabled",
        "notificationsEnabledBody": "Nice, notifications are enabled!",
        "dismissBanner": "Dismiss banner"
      }
    },
    "runSelectedSpecs": "Run {n} spec | Run {n} specs",
    "testingTypePromo": {
      "e2e": {
        "header": {
          "title": "End-to-end testing is not set up for this project",
          "description": "Try it out now, or {0} to learn more",
          "link": "read our guides",
          "control": "Quick setup"
        },
        "body": {
          "title": "What is end-to-end testing?",
          "description": "End-to-end tests are perfect for testing your entire application from a user's perspective. Visit any URL and test full user journeys across pages and domains.",
          "listItem1": "Test full user journeys across multiple pages using {0} to load up a web page for your test.",
          "listItem1Command": "cy.visit()",
          "listItem2": "Work with live API calls or mock them with {0} to test all possible states of your app.",
          "listItem2Command": "cy.intercept()",
          "listItem3": "Use {0} to maintain consistent browser sessions in your tests, and work with features like cookies and local storage, all while keeping your tests properly isolated.",
          "listItem3Command": "cy.session()"
        }
      },
      "ct": {
        "header": {
          "title": "Component testing is not set up for this project",
          "description": "Try it out now, or {0} to learn more",
          "link": "read our guides",
          "control": "Quick setup"
        },
        "body": {
          "title": "What is Component Testing?",
          "description": "Cypress Component Testing is a technique for developers to write, test, and debug components in isolation without ever leaving the browser - and without having to run your entire application.",
          "listItem1": "Instead of visiting a page, use {0} to render your components directly in the browser.",
          "listItem1Command": "cy.mount()",
          "listItem2": "Test from a user's perspective with all the same Cypress commands that are available in end-to-end testing.",
          "listItem3": "To get started, you can generate the config for {0}, {1}, and {2} (and {3}!).",
          "listItem3Link": "more",
          "link": "Give feedback"
        }
      }
    }
  },
  "noResults": {
    "defaultMessage": "No results matched your search:",
    "clearSearch": "Clear search"
  },
  "sidebar": {
    "keyboardShortcuts": {
      "title": "Keyboard shortcuts",
      "rerun": "Re-run tests",
      "stop": "Stop tests",
      "toggle": "Toggle specs list"
    },
    "toggleLabel": {
      "expanded": "Collapse sidebar",
      "collapsed": "Expand sidebar"
    },
    "nav": {
      "ariaLabel": "Pages"
    },
    "debug": {
      "debugFeature": "New Debug feature",
      "passed": "Relevant run passed",
      "failed": "Relevant run had {n} test failure | Relevant run had {n} test failures",
      "errored": "Relevant run had an error",
      "erroredWithFailures": "Relevant run had an error with {n} test failure | Relevant run had an error with {n} test failures",
      "passing": "Relevant run is passing",
      "failing": "Relevant run is failing with {n} test failure | Relevant run is failing with {n} test failures"
    }
  },
  "topNav": {
    "released": "Released",
    "version": "Version",
    "versionUnsupported": "Unsupported",
    "installed": "Installed",
    "latest": "Latest",
    "seeAllReleases": "See all releases",
    "runningOldVersion": "You're currently running an old version of Cypress. Update to the latest version for the best experience.",
    "docsMenu": {
      "docsHeading": "Docs",
      "gettingStartedTitle": "Getting started",
      "firstTest": "Write your first test",
      "testingApp": "Testing your app",
      "organizingTests": "Organizing tests",
      "referencesTitle": "References",
      "bestPractices": "Best practices",
      "configuration": "Configuration",
      "api": "API",
      "ciTitle": "Run in CI/CD",
      "ciSetup": "Set up CI",
      "fasterTests": "Run tests faster",
      "prompts": {
        "ci1": {
          "title": "Configure CI",
          "description": "Optimize your tests in CI by following these guides.",
          "seeOtherGuides": "See other guides",
          "intro": "Introduction to CI",
          "learnTheBasics": "Learn the basics of running Cypress in CI."
        },
        "orchestration1": {
          "title": "Run tests faster in CI",
          "parallelTime": "5 mins",
          "noParallelTime": "12 mins",
          "withParallelization": "with Parallelization",
          "withoutParallelization": "without Parallelization",
          "intro": "With Smart Orchestration, you'll be able to:",
          "bullet1": "Run spec files in parallel",
          "bullet2": "Prioritize failed specs to run first",
          "bullet3": "Cancel CI runs on test failure",
          "learnMore": "Learn more"
        }
      }
    },
    "login": {
      "bodyInitial": "Logging in gives you access to {0}. You can set up projects to be recorded and see test data from your project.",
      "bodySuccess": "You are now logged in as {0}.",
      "bodyError": "An error occurred while attempting to log in:",
      "bodyBrowserError": "The browser could not be opened.",
      "bodyBrowserErrorDetails": "Cypress was unable to open your installed browser. To continue logging in, please paste this URL into your web browser:",
      "cloud": "Cypress Cloud",
      "titleInitial": "Log in to Cypress",
      "titleSuccess": "Login successful",
      "titleFailed": "Login failed",
      "titleBrowserError": "Browser error",
      "actionLogin": "Log in",
      "profileMenuLabel": "Profile and logout",
      "actionLogout": "Log out",
      "actionContinue": "Continue",
      "actionOpening": "Opening browser",
      "actionWaiting": "Waiting for you to log in",
      "actionTryAgain": "Try again",
      "actionCancel": "Cancel"
    },
    "updateCypress": {
      "title": "Upgrade to Cypress",
      "currentlyRunning": "You are currently running Version {0} of Cypress. ",
      "pasteToUpgradeProject": "To upgrade to the latest version for your project, first {0}, then paste the command below into your terminal:",
      "pasteToUpgradeGlobal": "To upgrade to the latest version, first {0}, then paste the command below into your terminal:",
      "rememberToCloseInsert": "close this app"
    },
    "upgradeText": "Upgrade",
    "global": {
      "projects": "Projects"
    }
  },
  "launchpadErrors": {
    "generic": {
      "configErrorTitle": "Cypress configuration error",
      "retryButton": "Try again",
      "stackTraceLabel": "Stack trace",
      "docsButton": {
        "configGuide": {
          "text": "Configuration guide",
          "link": "https://docs.cypress.io/guides/references/configuration"
        },
        "cloudGuide": {
          "text": "Cypress Cloud guide",
          "link": "https://on.cypress.io/features-dashboard"
        },
        "docsHomepage": {
          "text": "Cypress docs",
          "link": "https://docs.cypress.io"
        }
      }
    },
    "noInternet": {
      "header": "You have no internet connection",
      "message": "Check your internet connection to pull the latest data from Cypress Cloud.",
      "connectProject": "Please check your internet connection to resolve this issue. When your internet connection is fixed, we will automatically attempt to fetch your latest runs for this project."
    }
  },
  "setupPage": {
    "projectSetup": {
      "frameworkLabel": "Front-end framework",
      "frameworkPlaceholder": "Pick a framework",
      "bundlerLabel": "Bundler",
      "bundlerPlaceholder": "Pick a bundler",
      "languageLabel": "Language",
      "configFileLanguageLabel": "Cypress config file",
      "detected": "(detected)",
      "browseIntegrations": "Browse our list of third-party framework integrations",
      "communityFrameworkDefinitionProblem": "Community framework definition problem",
      "communityDependenciesCouldNotBeParsed": "This project has a community framework definition installed that could not be loaded. It is located at the following path: | This project has some community framework definitions installed that could not be loaded. They are located at the following paths:",
      "seeFrameworkDefinitionDocumentation": "See the {0} for more information about creating, installing, and troubleshooting third party definitions.",
      "frameworkDefinitionDocumentation": "framework definition documentation"
    },
    "step": {
      "continue": "Continue",
      "next": "Next step",
      "back": "Back",
      "skip": "Skip"
    },
    "configFile": {
      "createManually": "Create file manually",
      "skippedLabel": "Skipped",
      "changesRequiredLabel": "Changes required",
      "changesRequiredBadge": "Changes required",
      "changesRequiredDescription": "Please merge the code below with your existing {0}"
    },
    "testingCard": {
      "configured": "Configured",
      "notConfigured": "Not Configured",
      "running": "Running",
      "chooseABrowser": "Choose a browser",
      "reconfigure": "Reconfigure",
      "disabled": "Disabled"
    }
  },
  "globalPage": {
    "empty": {
      "title": "Add project",
      "helper": "Get started by adding your first project below.",
      "dropText": "Drag your project directory here or {0}",
      "browseManually": "browse manually."
    },
    "settings": "Settings",
    "saveChanges": "Save changes",
    "cancel": "Cancel",
    "externalEditorPreferences": "External editor preferences",
    "externalEditorPreferencesDescription1": "Select your preference for opening files on your system.",
    "externalEditorPreferencesDescription2": "You can change this later in the {0} page.",
    "recentProjectsHeader": "Recent projects",
    "searchPlaceholder": "Search projects",
    "addProjectButton": "Add project",
    "projectActions": "Project actions",
    "removeProject": "Remove project",
    "openInIDE": "Open in IDE",
    "openInFinder": "Open in Finder",
    "noResultsMessage": "No projects matched your search:"
  },
  "welcomePage": {
    "review": "Review the differences between each testing type",
    "codeExample": "Code example",
    "compareTypes": {
      "content": {
        "e2eTitle": "End-to-end tests",
        "e2eBullet1": "Visit URLs via",
        "e2eBullet2": "Test flows and functionality across multiple pages",
        "e2eBullet3": "Ideal for testing integrated flows in CD workflows",
        "componentTitle": "Component tests",
        "ctBullet1": "Import components via",
        "ctBullet2": "Test individual components of a design system in isolation",
        "ctBullet3": "Ideal for testing isolated flows and components in CI"
      },
      "modalTitle": "Key differences"
    },
    "title": "Welcome to Cypress!"
  },
  "settingsPage": {
    "config": {
      "title": "Resolved configuration",
      "description": "Since the options in the {0} can be set dynamically by your development environment, please refer to the legend below to understand how the configuration options are resolved.",
      "legend": {
        "env": {
          "label": "env",
          "description": "Set from environment variables"
        },
        "default": {
          "label": "default",
          "description": "Default values"
        },
        "dynamic": {
          "label": "dynamic",
          "description": "Set by the {0} function"
        },
        "cli": {
          "label": "cli",
          "description": "Set from CLI arguments"
        },
        "config": {
          "label": "config",
          "description": "Set from {0}"
        }
      }
    },
    "proxy": {
      "title": "Proxy settings",
      "description": "Cypress auto-detected the following proxy settings from your operating system.",
      "bypassList": "Proxy bypass list",
      "proxyServer": "Proxy server"
    },
    "editor": {
      "title": "External editor",
      "description": "External editor to use for editing code opened when using Cypress.",
      "noEditorSelectedPlaceholder": "Choose your editor...",
      "customPathPlaceholder": "/path/to/editor"
    },
    "notifications": {
      "title": "Desktop notifications",
      "description": "Cypress can notify you about Cloud test runs for your branch.",
      "notifyMeWhenRunStarts": "Notify me when a run starts",
      "notifyMeWhenRunIsFailing": "Notify me when a run begins to fail",
      "notifyMeWhenRunCompletes": "Notify me when a run completes",
      "passed": "Passed",
      "failed": "Failed",
      "canceled": "Canceled",
      "errored": "Errored",
      "sendTestNotification": "Send a test notification",
      "notReceivingNotifications": "Not receiving notifications? You might need to allow notifications from Cypress in your computer's system preferences. {0}",
      "testNotificationTitle": "Hello From Cypress",
      "testNotificationBody": "This is a test notification",
      "troubleshoot": "Troubleshoot",
      "enableNotificationsLabel": "To modify notification settings, enable desktop notifications"
    },
    "projectId": {
      "title": "Project ID",
      "description": "The Project ID configured for this project inside of Cypress Cloud. {0}"
    },
    "specPattern": {
      "title": "Spec patterns",
      "description": "The globs pointing Cypress to your spec files configured for this project. {0}"
    },
    "recordKey": {
      "title": "Record key",
      "description": "The Record Key configured for this project inside of Cypress Cloud. {0}",
      "manageKeys": "Manage keys",
      "errorEmpty": "You do not have permission to record on this project",
      "errorEmptyButton": "Request record rights",
      "errorAccess": "You do not have permission to view this project",
      "errorAccessPending": "Your request for access to this project is pending approval",
      "errorAccessButton": "Request access",
      "errorNotFound": "Project not found",
      "errorNotFoundButton": "Connect it again",
      "errorNotLoggedIn": "You are not connected to Cypress Cloud",
      "errorNotLoggedInButton": "Log in to Cypress Cloud"
    },
    "project": {
      "title": "Project settings",
      "description": "Review the configuration settings currently in use for this project."
    },
    "cloud": {
      "title": "Cypress Cloud settings",
      "description": "Review the configuration settings for recording to Cypress Cloud."
    },
    "experiments": {
      "title": "Experiments",
      "description": "If you'd like to try out new features that we're working on, you can enable beta features for your project by turning on the experimental features you'd like to try. {0}",
      "experimentalCspAllowList": {
        "name": "CSP Allow List",
        "description": "Enables Cypress to selectively permit Content-Security-Policy and Content-Security-Policy-Report-Only header directives, including those that might otherwise block Cypress from running."
      },
      "experimentalFetchPolyfill": {
        "name": "Fetch polyfill",
        "description": "Automatically replaces \`window.fetch\` with a polyfill that Cypress can spy on and stub. Note: \`experimentalFetchPolyfill\` has been deprecated in Cypress 6.0.0 and will be removed in a future release. Consider using [\`cy.intercept()\`](https://on.cypress.io/intercept) to intercept \`fetch\` requests instead."
      },
      "experimentalInteractiveRunEvents": {
        "name": "Interactive run events",
        "description": "Allows listening to the [\`before:run\`](https://on.cypress.io/before-run), [\`after:run\`](https://on.cypress.io/after-run), [\`before:spec\`](https://on.cypress.io/before-spec), and [\`after:spec\`](https://on.cypress.io/after-spec) events in plugins during interactive mode."
      },
      "experimentalModifyObstructiveThirdPartyCode": {
        "name": "Modify obstructive third party code",
        "description": "Applies \`modifyObstructiveCode\` to third party \`.html\` and \`.js\`, removes subresource integrity, and modifies the user agent in Electron."
      },
      "experimentalSingleTabRunMode": {
        "name": "Single tab run mode",
        "description": "Runs all component specs in a single tab, trading spec isolation for faster run mode execution."
      },
      "experimentalSourceRewriting": {
        "name": "Source rewriting",
        "description": "Enables AST-based JS/HTML rewriting. This may fix issues caused by the existing regex-based JS/HTML replacement algorithm. See [#5273](https://github.com/cypress-io/cypress/issues/5273) for details."
      },
      "experimentalStudio": {
        "name": "Studio",
        "description": "Generate and save commands directly to your test suite by interacting with your app as an end user would."
      },
      "experimentalWebKitSupport": {
        "name": "WebKit Support",
        "description": "Adds support for testing in the WebKit browser engine used by Safari. See https://on.cypress.io/webkit-experiment for more information."
      },
      "experimentalRunAllSpecs": {
        "name": "Run All Specs",
        "description": "Enables the \\"Run All Specs\\" UI feature, allowing the execution of multiple specs sequentially."
      },
      "experimentalOriginDependencies": {
        "name": "Origin Dependencies",
        "description": "Enables support for \`Cypress.require()\` for including dependencies within the \`cy.origin()\` callback."
      },
      "experimentalMemoryManagement": {
        "name": "Memory Management",
        "description": "Enables support for improved memory management within Chromium-based browsers."
      },
      "experimentalSkipDomainInjection": {
        "name": "Skip Domain Injection",
        "description": "Disables setting \`document.domain\` to the application's super domain on injection."
      }
    },
    "device": {
      "title": "Device settings",
      "description": "Review the configuration settings currently in use for this device."
    },
    "testingPreferences": {
      "title": "Testing preferences",
      "description": "Configure your testing environment with these flags",
      "autoScrollingEnabled": {
        "title": "Auto scrolling enabled",
        "description": "Scroll behavior when running tests."
      }
    },
    "footer": {
      "text": "You can reconfigure the {testingType} testing settings for this project if you're experiencing issues with your Cypress configuration.",
      "button": "Configuration guide",
      "buttonLink": "https://docs.cypress.io/guides/references/configuration"
    }
  },
  "runs": {
    "slideshow": {
      "tour": {
        "title": "Record your first test run to Cypress Cloud",
        "description": "You're almost there! Start recording your test runs to Cypress Cloud by running the command above in your local or CI terminal."
      },
      "step1": {
        "title": "Monitor test failures in real time",
        "description": "Uncover high-risk failed and flaky tests in CI before they become a problem in production."
      },
      "step2": {
        "title": "Check if failed CI test runs also fail locally",
        "description": "Use the Test Runner to run only the tests that failed in your last recorded run."
      },
      "step3": {
        "title": "Build, test, and ship with confidence 🚀",
        "description": "With Cypress Cloud, you can proactively identify, investigate, and resolve failures, and be a quality champion."
      },
      "controls": {
        "step": "{0} of {1}",
        "next": "Next",
        "reset": "Reset",
        "view": "View Tour"
      }
    },
    "connect": {
      "title": "Connect to view your recorded runs",
      "description": "Cypress Cloud is built for teams who need to do testing at scale.",
      "buttonUser": "Connect to Cypress Cloud",
      "buttonProject": "Connect a Cypress Cloud project",
      "modal": {
        "title": "Connect project",
        "cancel": "Cancel",
        "createOrg": {
          "description": "You need to create an organization in Cypress Cloud to continue.",
          "button": "Create organization",
          "waitingButton": "Waiting for you to create an organization...",
          "refreshButton": "Refresh organizations list"
        },
        "selectProject": {
          "organization": "Organization",
          "noOrganizationSelectedError": "required when creating a new project",
          "manageOrgs": "Manage organizations",
          "project": "Project",
          "projectName": "Project name",
          "projectNameDisclaimer": "(You can change this later)",
          "createNewProject": "Create new",
          "chooseExistingProject": "Choose an existing project",
          "newProjectAccess": "Project access",
          "privateLabel": "Private",
          "privateDescription": "Only invited users can view recorded test results.",
          "publicLabel": "Public",
          "publicDescription": "Anyone can view recorded test results.",
          "connectProject": "Connect project",
          "createProject": "Create project",
          "placeholderOrganizations": "Pick an organization",
          "placeholderProjects": "Pick a project",
          "placeholderProjectsPending": "Pick an organization first"
        },
        "connectManually": {
          "title": "Connect project manually",
          "warning": "We couldn't add the projectId to your cypress.config.js file automatically.",
          "mainMessage": "Manually add the {projectId} to the root of the config object in your {configFile} file.",
          "waitingButton": "Waiting for you to add the projectId..."
        }
      },
      "errors": {
        "baseError": {
          "title": "Cypress Cloud error"
        },
        "internalServerError": {
          "title": "Cannot connect to Cypress Cloud",
          "description": "The request times out when trying to retrieve the info from Cypress Cloud. Please refresh the page to try again and visit our {0} if this behavior continues.",
          "link": "Support Page"
        }
      }
    },
    "connectSuccessAlert": {
      "title": "This project is now connected to Cypress Cloud!",
      "item1": "We automatically added the {projectId} to your {configFile} file.",
      "item2": "Please ensure that your {0} file is checked into source control."
    },
    "empty": {
      "title": "Copy the command below to record your first run",
      "description": "Review the {0} to Cypress Cloud",
      "link": "guide on recording runs",
      "gitRepositoryNotDetected": "Git repository not detected",
      "ensureGitSetupCorrectly": "Cypress uses Git to associate runs with your local state. As a fallback, all runs for your project are shown. Please ensure that version control is set up correctly.",
      "noRunsFoundForBranch": "No runs found for your branch",
      "noRunsForBranchMessage": "Cypress uses Git to show runs for your branch. As a fallback, all runs for your project are shown. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud."
    },
    "results": {
      "skipped": "skipped",
      "pending": "pending",
      "passed": "passed",
      "failed": "failed"
    },
    "errors": {
      "notFound": {
        "title": "Couldn't find your project",
        "description": "We were unable to find an existing project matching the {0} set in your Cypress config file. You can reconnect with an existing project or create a new project.",
        "button": "Reconnect your project"
      },
      "unauthorized": {
        "title": "Request access to view the recorded runs",
        "description": "This is a private project that you do not currently have access to. Please request access from the project owner in order to view the list of runs.",
        "button": "Request access"
      },
      "unauthorizedRequested": {
        "title": "Your access request for this project has been sent.",
        "description": "The owner of this project has been notified of your request. We'll notify you via email when your access request has been granted.",
        "button": "Request Sent"
      },
      "connectionFailed": {
        "title": "Cannot connect to Cypress Cloud",
        "description": "The request times out when trying to retrieve the recorded runs from Cypress Cloud. Please refresh the page to try again and visit out {0} if this behavior continues.",
        "link": "Support page",
        "button": "Try again"
      }
    }
  },
  "debugPage": {
    "openFile": {
      "openInIDE": "Open in IDE",
      "notFoundLocally": "Opening in IDE is disabled because the spec is not found in this project"
    },
    "limit": {
      "title": "Cypress renders up to 100 failed test results",
      "message": "This run has {n} failed tests | This run has {n} failed test | This run has {n} failed tests",
      "link": "See all test results in Cypress Cloud"
    },
    "runFailures": {
      "btn": "Run Failures",
      "notFoundLocally": "Spec was not found locally",
      "switchTestingTypeInfo": "There is {n} {testingType} test failing in this spec. To run it locally switch to {testingType} testing. | There are {n} {testingType} tests failing in this spec. To run them locally switch to {testingType} testing.",
      "switchTestingTypeAction": "Switch to {testingType} testing"
    },
    "switchToRun": "Switch to run number {runNumber}",
    "overLimit": {
      "usageExceededTitle": "You've reached your monthly test result limit",
      "usageExceededUserMessage": "Your Free Cypress Cloud plan includes {numberTests} monthly recorded test results. Contact your Cypress Cloud admin to upgrade your plan and view more test results.",
      "usageExceededAdminMessage": "Your Free Cypress Cloud plan includes {numberTests} monthly recorded test results. Upgrade your plan now to view more test results.",
      "retentionExceededTitle": "Beyond data retention",
      "retentionExceededMessage": "Your data retention limit is {limitDays} days and these tests ran {runAgeDays} days ago. Upgrade your plan to increase your data retention limit.",
      "upgradePlan": "Upgrade plan",
      "contactAdmin": "Contact admin"
    },
    "wellDone": "Well Done!",
    "allYourTestsPassed": "All your tests passed.",
    "incomplete": "Incomplete",
    "specsSkipped": "{totalSkippedSpecs} of {n} spec skipped | {totalSkippedSpecs} of {n} specs skipped",
    "runHasNoTests": "Run has no tests",
    "theRunStartedButNeverCompleted": "The run started but never completed. This can happen when the run is cancelled from CI or when Cypress crashes while running tests.",
    "checkYourCiLogs": "Check your {0} logs for more information.",
    "archiveThisRun": "Archive this run to remove it from the runs list and analytics.",
    "manuallyCancelled": "Manually cancelled",
    "mostRecentRun": "You are on the most recent run",
    "switchToLatestRun": "Switch to latest run",
    "switchRun": "Switch run",
    "foundMoreThan100Runs": "We found more than 100 runs.",
    "goToCypressCloud": "Go to Cypress Cloud to see all runs",
    "emptyStates": {
      "debugDirectlyInCypress": "Debug failed CI runs directly in Cypress",
      "reviewRerunAndDebug": "Review, rerun, and debug failed CI test runs that are recorded to Cypress Cloud – all from within your local Cypress app.",
      "connectToCypressCloud": "Connect to Cypress Cloud",
      "connect": {
        "title": "Connect to debug your tests",
        "description": "Cypress Cloud is built for teams who need to do testing at scale."
      },
      "noProjectTestMessage": "Connect a Cypress Cloud project to locally debug failed CI test runs",
      "noRuns": {
        "title": "Copy the command below to record your first run",
        "description": "Review the {0} to Cypress Cloud",
        "link": "guide on recording runs"
      },
      "gitRepositoryNotDetected": "Git repository not detected",
      "ensureGitSetupCorrectly": "Cypress uses Git to associate runs with your local state. Please ensure that Git is properly configured for your project.",
      "learnAboutRecordingSrText": "about recording a run to Cypress Cloud",
      "learnAboutDebuggingSrText": "about debugging CI failures in Cypress",
      "learnAboutProjectSetupSrText": "about project setup in Cypress",
      "noRunsFoundForBranch": "No runs found for your branch",
      "noRunsForBranchMessage": "Cypress uses Git to show runs for your branch. Ensure that version control is properly configured and that you are sending Git information to Cypress Cloud.",
      "slideshow": {
        "tour": {
          "title": "Record your first test run to Cypress Cloud",
          "description": "You're almost there! Start recording your test runs to Cypress Cloud by running the command below in your local or CI terminal."
        },
        "step1": {
          "title": "Review how many tests failed during a CI test run",
          "description": "The Debug page shows the latest completed test run for your current checked out commit."
        },
        "step2": {
          "title": "Check if failed CI test runs also fail locally",
          "description": "Use the Test Runner to run only the tests that failed in your last recorded run."
        },
        "step3": {
          "title": "Locally debug failed test runs with visual artifacts",
          "description": "Easily review screenshots, videos and logs from your tests."
        },
        "controls": {
          "step": "{0} of {1}",
          "next": "Next",
          "reset": "Reset",
          "view": "View Tour"
        }
      }
    },
    "pending": {
      "title": "Testing in progress...",
      "titleCompletionScheduled": "Scheduled to complete...",
      "scheduledTime": "Scheduled to complete in {time}",
      "scheduledCompletionExpired": "Scheduled to complete soon",
      "failuresHere": "Failures will be displayed here"
    },
    "specCounts": {
      "whenRunning": "{completed} of {total} specs completed | {completed} of {total} spec completed | {completed} of {total} specs completed",
      "whenCompleted": "{n} specs | {n} spec | {n} specs"
    },
    "header": {
      "runUrl": "View in Cypress Cloud",
      "commitsAhead": "You are {n} commit ahead | You are {n} commits ahead"
    },
    "stats": {
      "groups": "{n} group | {n} groups",
      "operatingSystems": "{n} operating system | {n} operating systems",
      "browsers": "{n} browser | {n} browsers"
    },
    "artifacts": {
      "stdout": "View Log",
      "screenshots": "View Screenshots",
      "video": "View Video"
    }
  },
  "testingType": {
    "modalTitle": "Choose a testing type",
    "e2e": {
      "name": "E2E Testing",
      "description": "Build and test the entire experience of your application from end-to-end to ensure each flow matches your expectations."
    },
    "component": {
      "name": "Component Testing",
      "description": "Build and test your components from your design system in isolation in order to ensure each state matches your expectations."
    },
    "componentDisabled": {
      "description": "To test your components you must {0} as an NPM dependency for this project.",
      "link": "install Cypress"
    }
  },
  "migration": {
    "before": "Before",
    "after": "After",
    "heresWhy": "here's why:",
    "renameAuto": {
      "title": "We recommend automatically renaming your specs in this step",
      "changeButton": "change",
      "changedSpecFolder": "We've changed the default spec folder from:",
      "changedSpecExt": "We've changed the default spec file extension from:",
      "changedSpecPatternExplain": "We've changed the default spec file extension to {0} in order to avoid conflicts with any existing testing frameworks.",
      "optedOutMessage": "You've opted not to rename your spec file extension. You may need to change your specPattern later so we can still find your spec files.",
      "folderRenameMessage": "You've opted not to rename your spec file extension, we'll only rename the folder",
      "modal": {
        "title": "Change the existing spec file extension",
        "warning": "We recommend using the default extension to avoid inconsistencies, framework conflicts, and confusion with your team.",
        "line1": "Cypress now supports the ability to create new spec files from within the UI for both E2E and component specs.",
        "line2": "All new spec files created within Cypress will use the default pattern of: ",
        "line3": "We want to rename your existing specs so that they have a consistent filename pattern for both E2E and component testing.",
        "line4": "All documentation and example code will be using: ",
        "line5": "We've changed the placement of component specs to be next to their source files (e.g. src/Button.jsx and src/Button.cy.jsx)",
        "line6": "The new default pattern of {0} prevents targeting conflicts with other testing frameworks. (e.g. Jest)",
        "label": "Choose from the following filename patterns:",
        "option1": "{0} (recommended)",
        "option2": "Don't rename anything — keep what I have.",
        "option3": "Rename folder only.",
        "optOutAdditional": "I may need to change my {0} later if I don't use the recommended filename extension.",
        "buttonSave": "Save changes",
        "buttonCancel": "Cancel"
      }
    },
    "renameManual": {
      "title": "We need you to move your component specs manually",
      "componentFolderRemoved": "We've removed the {0} options from the Cypress config.",
      "addedSpecPattern": "We've added a new {0} option in the Cypress config that tells us where to find your component specs.",
      "cannotAuto": "We can't automatically migrate your existing component spec files. We recommend that you move the following component spec files next to your source component files (e.g. {0})",
      "ifSkipNote": "If you skip this step, Cypress will still be able to find them, but any new specs that you create will automatically be created next to your component files."
    },
    "renameSupport": {
      "title": "We'll automatically rename your existing E2E support file in this step",
      "serveDifferentTypes": "We now serve different support files for E2E and Component Testing.",
      "changedSupportFile": "We've renamed the E2E support file from:"
    },
    "configFile": {
      "title": "We need to migrate to the new Cypress configuration file",
      "changedDefault": "We've changed the default Cypress config file from:",
      "customOptions": "We've set a custom {specPattern} option based on your {options}.",
      "willConvert": "We'll automatically create a new {jsFile} file and seed it with your options from your existing {jsonFile}."
    },
    "setupComponent": {
      "title": "You need to reconfigure Cypress for component testing",
      "line1": "We've detected that you are currently using the experimental version of component testing.",
      "line2": "Your existing configuration is no longer compatible with new component testing configuration options.",
      "line3": "In a previous step, we renamed your component specs, but can't automatically migrate your existing component testing configuration.",
      "line4": "In the next screen, you'll be able to reconfigure component testing in a new guided configuration wizard."
    },
    "wizard": {
      "title": "Migrating to Cypress {version}",
      "description": "Your project requires updates to work with this version.",
      "typicalMigrationLabel": "Typical migration:",
      "typicalMigrationTime": "5-10 minutes",
      "step1": {
        "title": "Migrate existing specs",
        "description": "In this step, we'll automatically rename and/or move your existing spec files as needed.",
        "button": "Rename these specs for me",
        "buttonSkip": "Skip renaming specs",
        "buttonRenameFolder": "Rename the folder for me"
      },
      "step2": {
        "title": "Move your existing component specs",
        "description": "In this step, you'll manually move your existing component specs to their new default location.",
        "buttonWait": "Waiting for you to move your component specs...",
        "buttonDone": "Continue to next step",
        "button": "I'll do this later"
      },
      "step3": {
        "title": "Rename the Cypress support file",
        "description": "In this step, we'll automatically rename your existing support file.",
        "button": "Rename the support file for me"
      },
      "step4": {
        "title": "Migrate to the new Cypress configuration file",
        "description": "In this step, we'll automatically migrate your existing Cypress configuration to the new Cypress configuration file.",
        "button": "Migrate the configuration for me"
      },
      "step5": {
        "title": "Reconfigure component testing",
        "description": "In this step, we'll explain how you will reconfigure Cypress for component testing.",
        "button": "Finish migration and continue"
      }
    }
  },
  "majorVersionWelcome": {
    "title": "What's New in Cypress",
    "actionContinue": "Continue",
    "linkReleaseNotes": "View full changelog"
  },
  "setupWizard": {
    "selectFramework": {
      "title": "Project setup",
      "description": "Confirm the front-end framework and bundler used in your project."
    },
    "installDependencies": {
      "title": "Install dev dependencies",
      "description": "Based on your previous selection, the following dependencies are required.",
      "pasteCommand": "Paste this command into your terminal to install the following packages:",
      "waitForInstall": "Waiting for you to install the dependencies...",
      "installed": "installed",
      "pendingInstall": "pending installation",
      "installationAlertSuccess": "You've successfully installed all required dependencies."
    },
    "configFiles": {
      "title": "Configuration files",
      "description": "We added the following files to your project:"
    },
    "chooseBrowser": {
      "title": "Choose a browser",
      "description": "Choose your preferred browser for {testingType} testing."
    }
  },
  "e2eProjectSetup": {
    "title": "Project setup",
    "description": "Confirm your project's preferred language."
  },
  "openBrowser": {
    "startComponent": "Start Component Testing in {browser}",
    "startE2E": "Start E2E Testing in {browser}",
    "openingComponent": "Opening Component Testing in {browser}",
    "openingE2E": "Opening E2E Testing in {browser}",
    "running": "Running {browser}",
    "focus": "Focus",
    "close": "Close",
    "switchTestingType": "Switch testing type"
  },
  "runner": {
    "header": {
      "reviewDocs": "Review the docs",
      "troubleRendering": "if you're having trouble rendering your components properly."
    },
    "snapshot": {
      "highlightsLabel": "Highlights",
      "testsRunningError": "Cannot show snapshot while tests are running",
      "snapshotMissingError": "The snapshot is missing. Displaying current state of the DOM.",
      "defaultTitle": "DOM snapshot",
      "pinnedTitle": "Pinned",
      "studioActiveError": "Cannot show snapshot while creating commands in Studio"
    },
    "selectorPlayground": {
      "matches": "No matches | {n} match | {n} matches",
      "playgroundTooltip": "Click an element to see a suggested selector",
      "copyTooltip": "Copy to clipboard",
      "copyTooltipAction": "Copied!",
      "printTooltip": "Print to console",
      "printTooltipAction": "Printed!",
      "invalidSelector": "Invalid",
      "selectorMethodsLabel": "Selector methods",
      "toggle": "Toggle playground"
    },
    "automation": {
      "disconnected": {
        "title": "The Cypress extension has disconnected.",
        "description": "Cypress cannot run tests without this extension.",
        "reload": "Reload the browser"
      },
      "missing": {
        "title": "The Cypress extension is missing.",
        "description": "Cypress cannot run tests without this extension. Please choose another browser."
      },
      "shared": {
        "link": "Read more about browser management"
      }
    },
    "viewportTooltip": {
      "buttonText": "Review the guide on viewports",
      "buttonHref": "https://on.cypress.io/viewport",
      "infoText": "The viewport determines the width and height of your application under test. By default the viewport will be {0} by {1} for {2} testing.",
      "configText": "Additionally, you can override this value in your {configFile} or via the {viewportCommand} command."
    },
    "studio": {
      "studio": "Studio",
      "studioDescription": "Generate Cypress commands by interacting with your site as an end user would. Then, save these commands directly to your test file.",
      "studioDetailedDescription": "Generate and save commands directly to your test suite by interacting with your app as an end user would. Right click on an element to add an assertion. Studio will track events that generate the following commands:",
      "getStartedButton": "Get started",
      "feedbackPrompt": "Your {0} will be highly influential to our team.",
      "experimentalMessage": "This feature is currently experimental and we will be adding more commands and abilities in the future.",
      "feedbackLink": "feedback",
      "saveTest": "Save test",
      "testName": "Test name",
      "saveTestButton": "Save",
      "closeStudio": "Close Studio",
      "restartStudio": "Restart Studio",
      "copyCommands": "Copy commands to clipboard",
      "commandsCopied": "Commands copied!",
      "availableCommands": "Available commands",
      "giveFeedback": "Give feedback",
      "enterValidUrl": "Enter a valid URL to visit",
      "continue": "Continue",
      "actionCancel": "Cancel"
    }
  },
  "warnings": {
    "retry": "Try again"
  },
  "versions": {
    "alpha": "Alpha",
    "community": "Community",
    "beta": "Beta",
    "new": "New",
    "communityNote": "This is a community provided definition."
  }
}
`;
const defaultMessages = JSON.parse(rawJsonMessages);
createI18n();
function createI18n(opts = {}) {
  return createI18n$1({
    locale: "en-US",
    messages: compiledMessages,
    ...opts
  });
}
function useI18n() {
  return useI18n$1({ useScope: "global" });
}
const _hoisted_1$2h = ["href"];
const _sfc_main$1y = /* @__PURE__ */ defineComponent({
  __name: "BaseLink",
  props: {
    href: { default: "" },
    useDefaultHocus: { type: Boolean, default: true }
  },
  setup(__props) {
    const props = __props;
    const attrs = useAttrs();
    const classes = computed(() => {
      const hocus = props.useDefaultHocus ? "hocus-link-default" : "";
      return `${attrs.class ?? "text-indigo-500"} ${hocus}`;
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("a", {
        href: props.href,
        class: normalizeClass(unref(classes))
      }, [
        renderSlot(_ctx.$slots, "default")
      ], 10, _hoisted_1$2h);
    };
  }
});
const Auth_LogoutDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Auth_Logout" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "logout" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const Auth_LoginDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Auth_Login" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "utmSource" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "utmMedium" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "utmContent" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "login" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "utmSource" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "utmSource" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "utmContent" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "utmContent" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "utmMedium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "utmMedium" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const Auth_ResetAuthStateDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Auth_ResetAuthState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "resetAuthState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] } }] };
const ChooseExternalEditorModal_SetPreferredEditorBinaryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ChooseExternalEditorModal_SetPreferredEditorBinary" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }] } }] } }] } }] };
const CloudViewerAndProject_RequiredDataDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "CloudViewerAndProject_RequiredData" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFullConfigReady" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasNonExampleSpec" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }] } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }] } }] } }] };
const CloudViewerAndProject_CheckCloudOrgMembershipDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "CloudViewerAndProject_CheckCloudOrgMembership" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewerChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isFullConfigReady" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isCTConfigured" } }, { "kind": "Field", "name": { "kind": "Name", "value": "hasNonExampleSpec" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }] } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "wizard" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "framework" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "icon" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isDetected" } }] } }] } }] } }] } }] };
const CloudViewerAndProject_DetectCtFrameworksDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "CloudViewerAndProject_DetectCtFrameworks" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "initializeCtFrameworks" } }] } }] };
const HeaderBar_HeaderBarQueryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "HeaderBar_HeaderBarQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "config" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }, { "kind": "Field", "name": { "kind": "Name", "value": "packageManager" } }, { "kind": "Field", "name": { "kind": "Name", "value": "activeBrowser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSelected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "isGlobalMode" } }, { "kind": "Field", "name": { "kind": "Name", "value": "versions" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "current" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "released" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "latest" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "released" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }] } }] };
const HeaderBarContent_AuthChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "HeaderBarContent_authChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "cachedUser" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }] } }] } }] } }] };
const GlobalPageHeader_ClearCurrentProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "GlobalPageHeader_clearCurrentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "clearCurrentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "migration" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "configFileNameBefore" } }] } }] } }] } }] };
const LoginConnectModals_LoginConnectModalsQueryDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "LoginConnectModals_LoginConnectModalsQuery" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "email" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fullName" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createCloudOrganizationUrl" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "authState" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "browserOpened" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "message" } }] } }] } }] };
const OpenFileInIdeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "OpenFileInIDE" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferredEditorBinary" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "availableEditors" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "binary" } }] } }] } }] } }] };
const OpenFileInIde_MutationDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "OpenFileInIDE_Mutation" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "FileDetailsInput" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "openFileInIDE" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "input" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "input" } } }] }] } }] };
const RecordPromptAdapterDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "query", "name": { "kind": "Name", "value": "RecordPromptAdapter" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentTestingType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "recordKeys" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "key" } }] } }] } }] } }] } }] } }] };
const UsePromptManager_SetProjectPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "UsePromptManager_SetProjectPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "project" } }, { "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "savedState" } }] } }] } }] } }] };
const UsePromptManager_SetGlobalPreferencesDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "UsePromptManager_SetGlobalPreferences" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPreferences" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "type" }, "value": { "kind": "EnumValue", "value": "global" } }, { "kind": "Argument", "name": { "kind": "Name", "value": "value" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "value" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "localSettings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "preferences" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "majorVersionWelcomeDismissed" } }] } }] } }] } }] } }] };
const CloudConnectModals_MonitorCloudViewerDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "CloudConnectModals_MonitorCloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewerChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createCloudOrganizationUrl" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }] } }] } }] } }] };
const CreateCloudOrgModal_CloudOrganizationsCheckDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "CreateCloudOrgModal_CloudOrganizationsCheck" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "refreshCloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudViewer" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudOrganizationsUrl" } }, { "kind": "Field", "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projects" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "100" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "createCloudOrganizationUrl" } }, { "kind": "Field", "alias": { "kind": "Name", "value": "firstOrganization" }, "name": { "kind": "Name", "value": "organizations" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "1" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }] } }] } }] } }] };
const SelectCloudProjectModal_SetProjectIdDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SelectCloudProjectModal_SetProjectId" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setProjectIdInConfigFile" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "projectId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "projectId" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "currentProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "projectId" } }, { "kind": "Field", "name": { "kind": "Name", "value": "cloudProject" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "__typename" } }, { "kind": "InlineFragment", "typeCondition": { "kind": "NamedType", "name": { "kind": "Name", "value": "CloudProject" } }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "runs" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "first" }, "value": { "kind": "IntValue", "value": "10" } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "nodes" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "createdAt" } }, { "kind": "Field", "name": { "kind": "Name", "value": "status" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalDuration" } }, { "kind": "Field", "name": { "kind": "Name", "value": "url" } }, { "kind": "Field", "name": { "kind": "Name", "value": "tags" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "name" } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPassed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFailed" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalPending" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalSkipped" } }, { "kind": "Field", "name": { "kind": "Name", "value": "totalFlakyTests" } }, { "kind": "Field", "name": { "kind": "Name", "value": "commitInfo" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "authorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "authorEmail" } }, { "kind": "Field", "name": { "kind": "Name", "value": "summary" } }, { "kind": "Field", "name": { "kind": "Name", "value": "branch" } }] } }] } }] } }] } }] } }] } }] } }] } }] };
const SelectCloudProjectModal_CreateCloudProjectDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "SelectCloudProjectModal_CreateCloudProject" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "name" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "orgId" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "public" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "source" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "cloudProjectCreate" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "name" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "name" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "orgId" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "orgId" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "public" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "public" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "campaign" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "campaign" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "cohort" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "cohort" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "medium" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "medium" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "source" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "source" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "slug" } }] } }] } }] };
const TopNav_SetPromptShownDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "TopNav_SetPromptShown" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "slug" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "setPromptShown" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "slug" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "slug" } } }] }] } }] };
const VerticalBrowserListItems_SetBrowserDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "VerticalBrowserListItems_SetBrowser" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "ID" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "specPath" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "launchpadSetBrowser" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "id" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "id" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "browsers" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isSelected" } }, { "kind": "Field", "name": { "kind": "Name", "value": "displayName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "version" } }, { "kind": "Field", "name": { "kind": "Name", "value": "majorVersion" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isVersionSupported" } }, { "kind": "Field", "name": { "kind": "Name", "value": "warning" } }, { "kind": "Field", "name": { "kind": "Name", "value": "disabled" } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "launchOpenProject" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "specPath" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "specPath" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }] } }] } }] };
const Clipboard_CopyToClipboardDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "Clipboard_CopyToClipboard" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "text" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "copyTextToClipboard" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "text" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "text" } } }] }] } }] };
const ExternalLink_OpenExternalDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "mutation", "name": { "kind": "Name", "value": "ExternalLink_OpenExternal" }, "variableDefinitions": [{ "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "url" } }, "type": { "kind": "NonNullType", "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "String" } } } }, { "kind": "VariableDefinition", "variable": { "kind": "Variable", "name": { "kind": "Name", "value": "includeGraphqlPort" } }, "type": { "kind": "NamedType", "name": { "kind": "Name", "value": "Boolean" } } }], "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "openExternal" }, "arguments": [{ "kind": "Argument", "name": { "kind": "Name", "value": "url" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "url" } } }, { "kind": "Argument", "name": { "kind": "Name", "value": "includeGraphqlPort" }, "value": { "kind": "Variable", "name": { "kind": "Name", "value": "includeGraphqlPort" } } }] }] } }] };
const GlobalSubscriptions_PushFragmentDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "GlobalSubscriptions_PushFragment" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "pushFragment" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "target" } }, { "kind": "Field", "name": { "kind": "Name", "value": "fragment" } }, { "kind": "Field", "name": { "kind": "Name", "value": "data" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errors" } }, { "kind": "Field", "name": { "kind": "Name", "value": "variables" } }, { "kind": "Field", "name": { "kind": "Name", "value": "invalidateCache" } }] } }] } }] };
const GlobalSubscriptions_ErrorWarningChangeDocument = { "kind": "Document", "definitions": [{ "kind": "OperationDefinition", "operation": "subscription", "name": { "kind": "Name", "value": "GlobalSubscriptions_ErrorWarningChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "errorWarningChange" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "baseError" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorName" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorStack" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }, { "kind": "Field", "name": { "kind": "Name", "value": "isUserCodeError" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeFrame" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "line" } }, { "kind": "Field", "name": { "kind": "Name", "value": "column" } }, { "kind": "Field", "name": { "kind": "Name", "value": "codeBlock" } }, { "kind": "Field", "name": { "kind": "Name", "value": "file" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "absolute" } }, { "kind": "Field", "name": { "kind": "Name", "value": "relative" } }] } }] } }] } }, { "kind": "Field", "name": { "kind": "Name", "value": "warnings" }, "selectionSet": { "kind": "SelectionSet", "selections": [{ "kind": "Field", "name": { "kind": "Name", "value": "id" } }, { "kind": "Field", "name": { "kind": "Name", "value": "title" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorType" } }, { "kind": "Field", "name": { "kind": "Name", "value": "errorMessage" } }] } }] } }] } }] };
gql`
mutation ExternalLink_OpenExternal ($url: String!, $includeGraphqlPort: Boolean) {
  openExternal(url: $url, includeGraphqlPort: $includeGraphqlPort)
}
`;
const useExternalLink = ($href, includeGraphqlPort = false) => {
  const openExternalMutation = useMutation(ExternalLink_OpenExternalDocument);
  return (href) => {
    const resolvedHref = unref(typeof href === "string" ? href : $href);
    if (!resolvedHref) {
      return new Error(`Cannot open external link. Possible urls passed in were ${{ localHref: href, initialHref: unref($href) }}`);
    }
    return openExternalMutation.executeMutation({ url: resolvedHref, includeGraphqlPort });
  };
};
const __default__$4 = defineComponent({
  inheritAttrs: true
});
const _sfc_main$1x = /* @__PURE__ */ defineComponent({
  ...__default__$4,
  __name: "ExternalLink",
  props: {
    href: { default: "" },
    useDefaultHocus: { type: Boolean, default: true },
    includeGraphqlPort: { type: Boolean, default: false }
  },
  setup(__props) {
    const props = __props;
    const open = useExternalLink(props.href, props.includeGraphqlPort);
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$1y, {
        "data-cy": "external",
        href: props.href,
        "use-default-hocus": props.useDefaultHocus,
        onClick: withModifiers(unref(open), ["prevent"]),
        onKeypress: withKeys(withModifiers(unref(open), ["prevent"]), ["enter"])
      }, {
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "default")
        ]),
        _: 3
      }, 8, ["href", "use-default-hocus", "onClick", "onKeypress"]);
    };
  }
});
const _hoisted_1$2g = {
  key: 0,
  class: "flex m-[24px] justify-center"
};
const _sfc_main$1w = /* @__PURE__ */ defineComponent({
  __name: "TestingTypePicker",
  props: {
    gql: null
  },
  emits: ["pick"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment TestingTypePicker on Query {
  currentProject {
    id
    isCTConfigured
    isE2EConfigured
    currentTestingType
  }
  invokedFromCli
}
`;
    const e2eStatus = computed(() => {
      var _a2;
      if (!((_a2 = props.gql.currentProject) == null ? void 0 : _a2.isE2EConfigured))
        return "notConfigured";
      return props.gql.currentProject.currentTestingType === "e2e" ? "running" : "configured";
    });
    const componentStatus = computed(() => {
      var _a2;
      if (!props.gql.invokedFromCli)
        return "disabled";
      if (!((_a2 = props.gql.currentProject) == null ? void 0 : _a2.isCTConfigured))
        return "notConfigured";
      return props.gql.currentProject.currentTestingType === "component" ? "running" : "configured";
    });
    const testingTypes = computed(() => {
      return [
        {
          key: "e2e",
          name: t2("testingType.e2e.name"),
          description: t2("testingType.e2e.description"),
          icon: IconE2E,
          iconSolid: IconE2ESolid,
          status: e2eStatus.value,
          badgeText: ""
        },
        {
          key: "component",
          name: t2("testingType.component.name"),
          description: t2("testingType.component.description"),
          icon: IconComponent,
          iconSolid: IconComponentSolid,
          status: componentStatus.value,
          badgeText: ""
        }
      ];
    });
    const currentTestingType = computed(() => {
      var _a2;
      return (_a2 = props.gql.currentProject) == null ? void 0 : _a2.currentTestingType;
    });
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return props.gql.currentProject ? (openBlock(), createElementBlock("div", _hoisted_1$2g, [
        (openBlock(true), createElementBlock(Fragment, null, renderList(unref(testingTypes), (tt) => {
          return openBlock(), createBlock(Card, {
            key: tt.key,
            "data-cy-testingType": tt.key,
            title: tt.name,
            description: tt.description,
            class: "m-[24px] px-[24px] pt-[36px] pb-[36px] w-[336px]",
            icon: tt.icon,
            "hover-icon": tt.iconSolid,
            "icon-size": 64,
            disabled: tt.status === "disabled",
            variant: "jade",
            "badge-text": tt.badgeText,
            onClick: ($event) => emits("pick", tt.key, unref(currentTestingType)),
            onKeyup: [
              withKeys(($event) => emits("pick", tt.key, unref(currentTestingType)), ["enter"]),
              withKeys(($event) => emits("pick", tt.key, unref(currentTestingType)), ["space"])
            ]
          }, createSlots({
            footer: withCtx(() => [
              createVNode(_sfc_main$1z, {
                class: "mt-[16px]",
                title: unref(t2)(`setupPage.testingCard.${tt.status}`),
                status: tt.status === "configured" || tt.status === "running",
                onChooseABrowser: ($event) => emits("pick", tt.key, unref(currentTestingType))
              }, null, 8, ["title", "status", "onChooseABrowser"])
            ]),
            _: 2
          }, [
            tt.key === "component" && tt.status === "disabled" ? {
              name: "default",
              fn: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "testingType.componentDisabled.description"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$1x, { href: "https://on.cypress.io/installing-cypress" }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString$1(unref(t2)("testingType.componentDisabled.link")), 1)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              key: "0"
            } : void 0
          ]), 1032, ["data-cy-testingType", "title", "description", "icon", "hover-icon", "disabled", "badge-text", "onClick", "onKeyup"]);
        }), 128))
      ])) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$1v = /* @__PURE__ */ defineComponent({
  __name: "TestingTypeCards",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
fragment TestingTypeCards on Query {
  ...TestingTypePicker
}
`;
    gql`
mutation TestingTypeSelection($testingType: TestingTypeEnum!) {
  setAndLoadCurrentTestingType(testingType: $testingType) {
    currentProject {
      id
      currentTestingType
      isCTConfigured
      isE2EConfigured
      isLoadingConfigFile
      isLoadingNodeEvents
    }
    ...Wizard
  }
}
`;
    const mutation = useMutation(TestingTypeSelectionDocument);
    function selectTestingType(testingType) {
      if (!mutation.fetching.value) {
        mutation.executeMutation({ testingType });
      }
    }
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$1w, {
        gql: props.gql,
        onPick: selectTestingType
      }, null, 8, ["gql"]);
    };
  }
});
const _hoisted_1$2f = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1_ = /* @__PURE__ */ createBaseVNode("circle", {
  id: "Circle",
  cx: "8",
  cy: "8",
  r: "6",
  stroke: "#E1E3ED",
  class: "icon-light",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$1F = /* @__PURE__ */ createBaseVNode("path", {
  id: "Progress",
  d: "M14 8C14 4.68629 11.3137 2 8 2",
  stroke: "#6470F3",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$_ = [
  _hoisted_2$1_,
  _hoisted_3$1F
];
function render$16(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$2f, _hoisted_4$_);
}
const __unplugin_components_0$l = { name: "cy-loading_x16", render: render$16 };
/*!
  * vue-router v4.0.11
  * (c) 2021 Eduardo San Martin Morote
  * @license MIT
  */
const hasSymbol = typeof Symbol === "function" && typeof Symbol.toStringTag === "symbol";
const PolySymbol = (name2) => (
  // vr = vue router
  hasSymbol ? Symbol(name2) : "_vr_" + name2
);
const routerKey = /* @__PURE__ */ PolySymbol("r");
const routeLocationKey = /* @__PURE__ */ PolySymbol("rl");
const noop$2 = () => {
};
function isSameRouteRecord(a2, b2) {
  return (a2.aliasOf || a2) === (b2.aliasOf || b2);
}
function isSameRouteLocationParams(a2, b2) {
  if (Object.keys(a2).length !== Object.keys(b2).length)
    return false;
  for (const key in a2) {
    if (!isSameRouteLocationParamsValue(a2[key], b2[key]))
      return false;
  }
  return true;
}
function isSameRouteLocationParamsValue(a2, b2) {
  return Array.isArray(a2) ? isEquivalentArray(a2, b2) : Array.isArray(b2) ? isEquivalentArray(b2, a2) : a2 === b2;
}
function isEquivalentArray(a2, b2) {
  return Array.isArray(b2) ? a2.length === b2.length && a2.every((value, i2) => value === b2[i2]) : a2.length === 1 && a2[0] === b2;
}
var NavigationType;
(function(NavigationType2) {
  NavigationType2["pop"] = "pop";
  NavigationType2["push"] = "push";
})(NavigationType || (NavigationType = {}));
var NavigationDirection;
(function(NavigationDirection2) {
  NavigationDirection2["back"] = "back";
  NavigationDirection2["forward"] = "forward";
  NavigationDirection2["unknown"] = "";
})(NavigationDirection || (NavigationDirection = {}));
var NavigationFailureType;
(function(NavigationFailureType2) {
  NavigationFailureType2[NavigationFailureType2["aborted"] = 4] = "aborted";
  NavigationFailureType2[NavigationFailureType2["cancelled"] = 8] = "cancelled";
  NavigationFailureType2[NavigationFailureType2["duplicated"] = 16] = "duplicated";
})(NavigationFailureType || (NavigationFailureType = {}));
function useLink(props) {
  const router = inject(routerKey);
  const currentRoute = inject(routeLocationKey);
  const route = computed(() => router.resolve(unref(props.to)));
  const activeRecordIndex = computed(() => {
    const { matched } = route.value;
    const { length: length2 } = matched;
    const routeMatched = matched[length2 - 1];
    const currentMatched = currentRoute.matched;
    if (!routeMatched || !currentMatched.length)
      return -1;
    const index2 = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));
    if (index2 > -1)
      return index2;
    const parentRecordPath = getOriginalPath(matched[length2 - 2]);
    return (
      // we are dealing with nested routes
      length2 > 1 && // if the parent and matched route have the same path, this link is
      // referring to the empty child. Or we currently are on a different
      // child of the same parent
      getOriginalPath(routeMatched) === parentRecordPath && // avoid comparing the child with its parent
      currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length2 - 2])) : index2
    );
  });
  const isActive = computed(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params));
  const isExactActive = computed(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params));
  function navigate(e = {}) {
    if (guardEvent(e)) {
      return router[unref(props.replace) ? "replace" : "push"](
        unref(props.to)
        // avoid uncaught errors are they are logged anyway
      ).catch(noop$2);
    }
    return Promise.resolve();
  }
  return {
    route,
    href: computed(() => route.value.href),
    isActive,
    isExactActive,
    navigate
  };
}
const RouterLinkImpl = /* @__PURE__ */ defineComponent({
  name: "RouterLink",
  props: {
    to: {
      type: [String, Object],
      required: true
    },
    replace: Boolean,
    activeClass: String,
    // inactiveClass: String,
    exactActiveClass: String,
    custom: Boolean,
    ariaCurrentValue: {
      type: String,
      default: "page"
    }
  },
  useLink,
  setup(props, { slots }) {
    const link4 = reactive(useLink(props));
    const { options: options2 } = inject(routerKey);
    const elClass = computed(() => ({
      [getLinkClass(props.activeClass, options2.linkActiveClass, "router-link-active")]: link4.isActive,
      // [getLinkClass(
      //   props.inactiveClass,
      //   options.linkInactiveClass,
      //   'router-link-inactive'
      // )]: !link.isExactActive,
      [getLinkClass(props.exactActiveClass, options2.linkExactActiveClass, "router-link-exact-active")]: link4.isExactActive
    }));
    return () => {
      const children = slots.default && slots.default(link4);
      return props.custom ? children : h$1("a", {
        "aria-current": link4.isExactActive ? props.ariaCurrentValue : null,
        href: link4.href,
        // this would override user added attrs but Vue will still add
        // the listener so we end up triggering both
        onClick: link4.navigate,
        class: elClass.value
      }, children);
    };
  }
});
const RouterLink = RouterLinkImpl;
function guardEvent(e) {
  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)
    return;
  if (e.defaultPrevented)
    return;
  if (e.button !== void 0 && e.button !== 0)
    return;
  if (e.currentTarget && e.currentTarget.getAttribute) {
    const target2 = e.currentTarget.getAttribute("target");
    if (/\b_blank\b/i.test(target2))
      return;
  }
  if (e.preventDefault)
    e.preventDefault();
  return true;
}
function includesParams(outer, inner) {
  for (const key in inner) {
    const innerValue = inner[key];
    const outerValue = outer[key];
    if (typeof innerValue === "string") {
      if (innerValue !== outerValue)
        return false;
    } else {
      if (!Array.isArray(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i2) => value !== outerValue[i2]))
        return false;
    }
  }
  return true;
}
function getOriginalPath(record) {
  return record ? record.aliasOf ? record.aliasOf.path : record.path : "";
}
const getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;
const _hoisted_1$2e = {
  key: 0,
  class: "flex justify-self-start items-center"
};
const _hoisted_2$1Z = { class: "grow" };
const _hoisted_3$1E = {
  key: 1,
  class: "flex justify-self-start items-center"
};
const __default__$3 = defineComponent({
  inheritAttrs: true
});
const _sfc_main$1u = /* @__PURE__ */ defineComponent({
  ...__default__$3,
  __name: "ButtonInternals",
  props: {
    prefixIcon: null,
    suffixIcon: null,
    prefixIconClass: null,
    suffixIconClass: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        __props.prefixIcon || _ctx.$slots.prefix ? (openBlock(), createElementBlock("span", _hoisted_1$2e, [
          renderSlot(_ctx.$slots, "prefix", {}, () => [
            (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
              class: normalizeClass(__props.prefixIconClass)
            }, null, 8, ["class"]))
          ])
        ])) : createCommentVNode("", true),
        createBaseVNode("span", _hoisted_2$1Z, [
          renderSlot(_ctx.$slots, "default")
        ]),
        __props.suffixIcon || _ctx.$slots.suffix ? (openBlock(), createElementBlock("span", _hoisted_3$1E, [
          renderSlot(_ctx.$slots, "suffix", {}, () => [
            (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
              class: normalizeClass(__props.suffixIconClass)
            }, null, 8, ["class"]))
          ])
        ])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$2d = ["disabled"];
const VariantClassesTable = {
  primary: "border-indigo-500 bg-indigo-500 focus:bg-indigo-600 text-white hocus-default",
  outline: "border-gray-100 text-indigo-600 hocus-default",
  tertiary: "text-indigo-500 bg-indigo-50 border-transparent hocus-default",
  pending: "bg-gray-500 text-white",
  link: "border-transparent text-indigo-600 hocus-default",
  linkBold: "border-transparent text-indigo-500 font-medium",
  text: "border-0",
  secondary: "bg-jade-500 text-white hocus-secondary",
  white: "bg-white text-indigo-500 font-medium hocus-default"
};
const SizeClassesTable = {
  sm: "px-[6px] py-[2px] text-[14px] h-[24px]",
  md: "px-[12px] py-[8px] text-[14px] h-[32px]",
  lg: "px-[16px] py-[11px] max-h-[40px]",
  "lg-wide": "px-[32px] py-[8px]"
};
const _sfc_main$1t = /* @__PURE__ */ defineComponent({
  __name: "Button",
  props: {
    prefixIcon: null,
    suffixIcon: null,
    size: null,
    variant: null,
    prefixIconClass: null,
    suffixIconClass: null,
    href: null,
    to: null,
    internalLink: { type: Boolean },
    disabled: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const attrs = useAttrs();
    function filterHocus(classes2) {
      return classes2.split(" ").filter((css) => !(css.startsWith("hocus") && props.disabled)).join(" ");
    }
    const variantClasses = computed(() => {
      const variantClasses2 = VariantClassesTable[props.variant || "primary"];
      return props.disabled ? filterHocus(variantClasses2) : variantClasses2;
    });
    const sizeClasses = computed(() => SizeClassesTable[props.size || "md"]);
    const classes = computed(() => {
      return [
        variantClasses.value,
        sizeClasses.value,
        attrs.class,
        props.disabled && props.variant !== "pending" ? "opacity-50" : "",
        props.disabled ? "cursor-default" : ""
      ];
    });
    const linkVersion = computed(() => {
      if (!props.to) {
        return props.internalLink ? _sfc_main$1y : _sfc_main$1x;
      }
      if (props.disabled) {
        return _sfc_main$1y;
      }
      return RouterLink;
    });
    const linkProps = computed(() => {
      if (props.disabled) {
        return {
          role: "link",
          ariaDisabled: "disabled",
          href: null
        };
      }
      if (props.to)
        return { to: props.to };
      if (props.href)
        return { href: props.href };
      return {};
    });
    return (_ctx, _cache) => {
      return !props.href && !props.to ? (openBlock(), createElementBlock("button", {
        key: 0,
        style: { "width": "fit-content" },
        class: normalizeClass(["border rounded flex outline-none leading-tight gap-[8px] items-center", unref(classes)]),
        disabled: __props.disabled
      }, [
        createVNode(_sfc_main$1u, null, createSlots({
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "default")
          ]),
          _: 2
        }, [
          __props.prefixIcon || _ctx.$slots.prefix ? {
            name: "prefix",
            fn: withCtx(() => [
              renderSlot(_ctx.$slots, "prefix", {}, () => [
                (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
                  class: normalizeClass(__props.prefixIconClass)
                }, null, 8, ["class"]))
              ])
            ]),
            key: "0"
          } : void 0,
          __props.suffixIcon || _ctx.$slots.suffix ? {
            name: "suffix",
            fn: withCtx(() => [
              renderSlot(_ctx.$slots, "suffix", {}, () => [
                (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                  class: normalizeClass(__props.suffixIconClass)
                }, null, 8, ["class"]))
              ])
            ]),
            key: "1"
          } : void 0
        ]), 1024)
      ], 10, _hoisted_1$2d)) : (openBlock(), createBlock(resolveDynamicComponent(unref(linkVersion)), mergeProps({ key: 1 }, unref(linkProps), {
        style: { "width": "fit-content" },
        class: ["border rounded flex outline-none gap-[8px] items-center select-none", unref(classes)],
        "use-default-hocus": false
      }), {
        default: withCtx(() => [
          createVNode(_sfc_main$1u, null, createSlots({
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 2
          }, [
            __props.prefixIcon || _ctx.$slots.prefix ? {
              name: "prefix",
              fn: withCtx(() => [
                renderSlot(_ctx.$slots, "prefix", {}, () => [
                  (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
                    class: normalizeClass(__props.prefixIconClass)
                  }, null, 8, ["class"]))
                ])
              ]),
              key: "0"
            } : void 0,
            __props.suffixIcon || _ctx.$slots.suffix ? {
              name: "suffix",
              fn: withCtx(() => [
                renderSlot(_ctx.$slots, "suffix", {}, () => [
                  (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                    class: normalizeClass(__props.suffixIconClass)
                  }, null, 8, ["class"]))
                ])
              ]),
              key: "1"
            } : void 0
          ]), 1024)
        ]),
        _: 3
      }, 16, ["class"]));
    };
  }
});
const _hoisted_1$2c = ["id", "disabled", "aria-checked"];
const _sfc_main$1s = /* @__PURE__ */ defineComponent({
  __name: "Switch",
  props: {
    value: { type: Boolean, default: false },
    size: { default: "lg" },
    name: null,
    disabled: { type: Boolean, default: false }
  },
  emits: ["update"],
  setup(__props) {
    const sizeClasses = {
      "sm": {
        container: "w-[16px] h-[10px]",
        indicator: "w-[6px] h-[6px] ml-[2px]",
        translate: "translate-x-[6px]"
      },
      "md": {
        container: "w-[24px] h-[12px]",
        indicator: "w-[8px] h-[8px] ml-[2px]",
        translate: "translate-x-[12px]"
      },
      "lg": {
        container: "w-[32px] h-[16px]",
        indicator: "w-[12px] h-[12px] ml-[2px]",
        translate: "translate-x-[14px]"
      },
      "xl": {
        container: "w-[48px] h-[24px]",
        indicator: "w-[16px] h-[16px] ml-[4px]",
        translate: "translate-x-[24px]"
      }
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("button", {
        id: __props.name,
        class: normalizeClass(["border-transparent border rounded-[50px] relative hocus-default disabled:ring-0 disabled:outline-0 disabled:bg-gray-100", [__props.value ? "bg-jade-400" : "bg-gray-300", sizeClasses[__props.size].container, {
          "!hocus:ring-0": __props.size === "sm"
        }]]),
        disabled: __props.disabled,
        role: "switch",
        "aria-checked": __props.value,
        onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("update", !__props.value))
      }, [
        createBaseVNode("span", {
          class: normalizeClass(["bg-white rounded-[50px] transform transition-transform ease-out duration-200 block toggle", [{ [sizeClasses[__props.size].translate]: __props.value }, sizeClasses[__props.size].indicator]])
        }, null, 2)
      ], 10, _hoisted_1$2c);
    };
  }
});
const _hoisted_1$2b = { class: "border-t rounded-b flex bg-gray-50 border-t border-t-gray-100 py-[16px] px-[24px] gap-3" };
const _hoisted_2$1Y = /* @__PURE__ */ createBaseVNode("div", { class: "grow" }, null, -1);
const _hoisted_3$1D = {
  key: 2,
  class: "flex px-3 items-center"
};
const _sfc_main$1r = /* @__PURE__ */ defineComponent({
  __name: "ButtonBar",
  props: {
    next: { default: void 0 },
    back: { default: void 0 },
    skip: { default: void 0 },
    nextFn: { type: Function, default: void 0 },
    backFn: { type: Function, default: void 0 },
    skipFn: { type: Function, default: void 0 },
    alt: { default: void 0 },
    altFn: { type: Function, default: void 0 },
    canNavigateForward: { type: Boolean },
    mainVariant: { default: "primary" }
  },
  setup(__props) {
    const props = __props;
    const altValue = ref(false);
    const handleAlt = () => {
      var _a2;
      altValue.value = !altValue.value;
      (_a2 = props.altFn) == null ? void 0 : _a2.call(props, altValue.value);
    };
    return (_ctx, _cache) => {
      const _component_i_cy_loading_x16 = __unplugin_components_0$l;
      const _component_i_cy_arrow_right_x16 = __unplugin_components_0$n;
      return openBlock(), createElementBlock("div", _hoisted_1$2b, [
        renderSlot(_ctx.$slots, "default", {}, () => [
          __props.nextFn ? (openBlock(), createBlock(_sfc_main$1t, {
            key: 0,
            size: "lg",
            disabled: !__props.canNavigateForward,
            variant: __props.mainVariant,
            onClick: __props.nextFn
          }, createSlots({
            default: withCtx(() => [
              createTextVNode(" " + toDisplayString$1(__props.next), 1)
            ]),
            _: 2
          }, [
            __props.mainVariant === "pending" ? {
              name: "prefix",
              fn: withCtx(() => [
                __props.mainVariant === "pending" ? (openBlock(), createBlock(_component_i_cy_loading_x16, {
                  key: 0,
                  class: "animate-spin icon-dark-white icon-light-gray-400"
                })) : createCommentVNode("", true)
              ]),
              key: "0"
            } : void 0
          ]), 1032, ["disabled", "variant", "onClick"])) : createCommentVNode("", true),
          __props.backFn ? (openBlock(), createBlock(_sfc_main$1t, {
            key: 1,
            size: "lg",
            variant: "outline",
            onClick: __props.backFn
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(__props.back), 1)
            ]),
            _: 1
          }, 8, ["onClick"])) : createCommentVNode("", true),
          _hoisted_2$1Y,
          __props.altFn && __props.alt ? (openBlock(), createElementBlock("div", _hoisted_3$1D, [
            createBaseVNode("label", {
              for: "altFn",
              class: "px-3 text-gray-500",
              onClick: handleAlt
            }, toDisplayString$1(__props.alt), 1),
            createVNode(_sfc_main$1s, {
              size: "lg",
              name: "altFn",
              value: altValue.value,
              onUpdate: handleAlt
            }, null, 8, ["value"])
          ])) : createCommentVNode("", true),
          __props.skipFn ? (openBlock(), createBlock(_sfc_main$1t, {
            key: 3,
            size: "lg",
            variant: "text",
            class: "text-gray-500",
            onClick: __props.skipFn
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(__props.skip) + " ", 1),
              createVNode(_component_i_cy_arrow_right_x16, { class: "inline-block h-[16px] w-[16px] icon-dark-gray-500" })
            ]),
            _: 1
          }, 8, ["onClick"])) : createCommentVNode("", true)
        ])
      ]);
    };
  }
});
const _hoisted_1$2a = { class: "mx-auto my-[32px]" };
const _hoisted_2$1X = {
  key: 0,
  class: "w-full mb-[24px]"
};
const _hoisted_3$1C = { class: "w-full border border-gray-100 rounded flex flex-col" };
const _hoisted_4$Z = { class: "grow" };
const _sfc_main$1q = /* @__PURE__ */ defineComponent({
  __name: "WizardLayout",
  props: {
    next: { default: void 0 },
    back: { default: void 0 },
    skip: { default: void 0 },
    alt: { default: void 0 },
    showNext: { type: Boolean, default: true },
    canNavigateForward: { type: Boolean, default: void 0 },
    altFn: { type: Function, default: void 0 },
    nextFn: { type: Function, default: void 0 },
    backFn: { type: Function, default: void 0 },
    skipFn: { type: Function, default: void 0 },
    mainButtonVariant: { default: "primary" }
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    const nextLabel = computed(() => props.next || t2("setupPage.step.next"));
    const backLabel = computed(() => props.back || t2("setupPage.step.back"));
    const skipLabel = computed(() => props.skip || t2("setupPage.step.skip"));
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$2a, [
        _ctx.$slots.accessory ? (openBlock(), createElementBlock("div", _hoisted_2$1X, [
          renderSlot(_ctx.$slots, "accessory")
        ])) : createCommentVNode("", true),
        createBaseVNode("div", _hoisted_3$1C, [
          createBaseVNode("div", _hoisted_4$Z, [
            renderSlot(_ctx.$slots, "default", { backFn: __props.backFn })
          ]),
          createVNode(_sfc_main$1r, {
            "next-fn": props.nextFn,
            "can-navigate-forward": __props.canNavigateForward,
            "back-fn": __props.backFn,
            "alt-fn": __props.altFn,
            next: unref(nextLabel),
            "show-next": __props.showNext,
            back: unref(backLabel),
            alt: __props.alt,
            "main-variant": __props.mainButtonVariant,
            skip: unref(skipLabel),
            "skip-fn": __props.skipFn
          }, {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "button-bar")
            ]),
            _: 3
          }, 8, ["next-fn", "can-navigate-forward", "back-fn", "alt-fn", "next", "show-next", "back", "alt", "main-variant", "skip", "skip-fn"])
        ])
      ]);
    };
  }
});
const _hoisted_1$29 = {
  xmlns: "http://www.w3.org/2000/svg",
  "data-cy": "webpack-logo",
  viewBox: "0 0 774 875.7"
};
const _hoisted_2$1W = /* @__PURE__ */ createBaseVNode("path", {
  fill: "#FFF",
  d: "m387 0 387 218.9v437.9L387 875.7 0 656.8V218.9z"
}, null, -1);
const _hoisted_3$1B = /* @__PURE__ */ createBaseVNode("path", {
  fill: "#8ed6fb",
  d: "M704.9 641.7 399.8 814.3V679.9l190.1-104.6 115 66.4zm20.9-18.9V261.9l-111.6 64.5v232l111.6 64.4zM67.9 641.7 373 814.3V679.9L182.8 575.3 67.9 641.7zM47 622.8V261.9l111.6 64.5v232L47 622.8zm13.1-384.3L373 61.5v129.9L172.5 301.7l-1.6.9-110.8-64.1zm652.6 0-312.9-177v129.9l200.5 110.2 1.6.9 110.8-64z"
}, null, -1);
const _hoisted_4$Y = /* @__PURE__ */ createBaseVNode("path", {
  fill: "#1c78c0",
  d: "M373 649.3 185.4 546.1V341.8L373 450.1v199.2zm26.8 0 187.6-103.1V341.8L399.8 450.1v199.2zm-13.4-207zM198.1 318.2l188.3-103.5 188.3 103.5-188.3 108.7-188.3-108.7z"
}, null, -1);
const _hoisted_5$z = [
  _hoisted_2$1W,
  _hoisted_3$1B,
  _hoisted_4$Y
];
function render$15(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$29, _hoisted_5$z);
}
const LogoWebpack = { render: render$15 };
const _hoisted_1$28 = {
  xmlns: "http://www.w3.org/2000/svg",
  fill: "none",
  "data-cy": "vite-logo",
  viewBox: "0 0 410 404"
};
const _hoisted_2$1V = /* @__PURE__ */ createStaticVNode('<path fill="url(#a)" d="m399.641 59.525-183.998 329.02c-3.799 6.793-13.559 6.833-17.415.073L10.582 59.556C6.38 52.19 12.68 43.266 21.028 44.76l184.195 32.923c1.175.21 2.378.208 3.553-.006l180.343-32.87c8.32-1.517 14.649 7.337 10.522 14.719Z"></path><path fill="url(#b)" d="M292.965 1.574 156.801 28.255a5 5 0 0 0-4.03 4.611l-8.376 141.464c-.197 3.332 2.863 5.918 6.115 5.168l37.91-8.749c3.547-.818 6.752 2.306 6.023 5.873l-11.263 55.153c-.758 3.712 2.727 6.886 6.352 5.785l23.415-7.114c3.63-1.102 7.118 2.081 6.35 5.796l-17.899 86.633c-1.12 5.419 6.088 8.374 9.094 3.728l2.008-3.103 110.954-221.428c1.858-3.707-1.346-7.935-5.418-7.15l-39.022 7.532c-3.667.707-6.787-2.708-5.752-6.296l25.469-88.291c1.036-3.594-2.095-7.012-5.766-6.293Z"></path><defs><linearGradient id="a" x1="6" x2="235" y1="33" y2="344" gradientUnits="userSpaceOnUse"><stop stop-color="#41D1FF"></stop><stop offset="1" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="b" x1="194.651" x2="236.076" y1="8.818" y2="292.989" gradientUnits="userSpaceOnUse"><stop stop-color="#FFEA83"></stop><stop offset=".083" stop-color="#FFDD35"></stop><stop offset="1" stop-color="#FFA800"></stop></linearGradient></defs>', 3);
const _hoisted_5$y = [
  _hoisted_2$1V
];
function render$14(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$28, _hoisted_5$y);
}
const LogoVite = { render: render$14 };
const _hoisted_1$27 = {
  xmlns: "http://www.w3.org/2000/svg",
  "data-cy": "nextjs-logo",
  viewBox: "0 0 512 512"
};
const _hoisted_2$1U = /* @__PURE__ */ createBaseVNode("path", {
  d: "M386.399 35.508C217.06-64.061 1.885 57.55.012 253.882c-1.828 191.716 201.063 315.545 370.02 231.163L185.56 213.636v167.997c0 18.614-35.619 18.614-35.619 0V156.421c0-14.776 27.448-15.989 35.226-3.145L395.43 470.572c157.95-101.737 155.817-338.136-9.031-435.064zm-23.756 317.939L326.91 298.87V149.458c0-13.932 35.732-13.932 35.732 0v203.989z",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1A = [
  _hoisted_2$1U
];
function render$13(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$27, _hoisted_3$1A);
}
const LogoNext = { render: render$13 };
const _hoisted_1$26 = {
  xmlns: "http://www.w3.org/2000/svg",
  "data-cy": "nuxtjs-logo",
  viewBox: "0 0 400 400"
};
const _hoisted_2$1T = /* @__PURE__ */ createBaseVNode("g", { fill: "none" }, [
  /* @__PURE__ */ createBaseVNode("path", {
    fill: "#00C58E",
    d: "m227.921 133.451-13.689 24.102-46.815-82.447L23.704 328.17h97.303c0 13.31 10.613 24.1 23.704 24.1H23.704c-8.468 0-16.292-4.595-20.525-12.052a24.452 24.452 0 0 1 .001-24.1L146.894 63.056c4.234-7.457 12.06-12.051 20.528-12.051 8.469 0 16.294 4.594 20.529 12.05l39.97 70.397z"
  }),
  /* @__PURE__ */ createBaseVNode("path", {
    fill: "#2F495E",
    d: "M331.664 316.12 241.61 157.553 227.92 133.45l-13.689 24.102-90.044 158.567a24.452 24.452 0 0 0-.001 24.1c4.233 7.456 12.056 12.052 20.524 12.052h166.4c8.47 0 16.297-4.591 20.532-12.048a24.452 24.452 0 0 0 .001-24.104h.02zm-186.953 12.05 83.21-146.516 83.19 146.517h-166.4z"
  }),
  /* @__PURE__ */ createBaseVNode("path", {
    fill: "#108775",
    d: "M396.05 340.221c-4.234 7.456-12.057 12.05-20.524 12.05H311.11c13.091 0 23.704-10.79 23.704-24.1h40.662L260.099 124.986l-18.49 32.567-13.688-24.102 11.654-20.516c4.234-7.458 12.06-12.052 20.529-12.052s16.294 4.594 20.528 12.052L396.05 316.12a24.452 24.452 0 0 1 0 24.101z"
  })
], -1);
const _hoisted_3$1z = [
  _hoisted_2$1T
];
function render$12(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$26, _hoisted_3$1z);
}
const LogoNuxt = { render: render$12 };
const _hoisted_1$25 = {
  xmlns: "http://www.w3.org/2000/svg",
  "data-cy": "vue-logo",
  viewBox: "0 0 261.76 226.69"
};
const _hoisted_2$1S = /* @__PURE__ */ createBaseVNode("path", {
  fill: "#41b883",
  d: "m161.096.001-30.224 52.35L100.647.002H-.005L130.872 226.69 261.749 0z"
}, null, -1);
const _hoisted_3$1y = /* @__PURE__ */ createBaseVNode("path", {
  fill: "#34495e",
  d: "m161.096.001-30.224 52.35L100.647.002H52.346l78.526 136.01L209.398.001z"
}, null, -1);
const _hoisted_4$X = [
  _hoisted_2$1S,
  _hoisted_3$1y
];
function render$11(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$25, _hoisted_4$X);
}
const LogoVue = { render: render$11 };
const _hoisted_1$24 = {
  xmlns: "http://www.w3.org/2000/svg",
  "data-cy": "react-logo",
  viewBox: "0 0 500 500"
};
const _hoisted_2$1R = /* @__PURE__ */ createBaseVNode("g", { fill: "#3077c6" }, [
  /* @__PURE__ */ createBaseVNode("path", { d: "M495.3 248.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V30c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V30.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1C45.2 185.4 4.7 216.1 4.7 248.5c0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3Zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9Zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9Zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1ZM250.2 382c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32Zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4ZM249.7 115c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32Zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9ZM85.2 299.1c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2ZM139 442c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7Zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1Zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6Z" }),
  /* @__PURE__ */ createBaseVNode("path", { d: "M295.6 248.5c0 25.239-20.461 45.7-45.7 45.7-25.239 0-45.7-20.461-45.7-45.7 0-25.239 20.461-45.7 45.7-45.7 25.239 0 45.7 20.461 45.7 45.7Z" })
], -1);
const _hoisted_3$1x = [
  _hoisted_2$1R
];
function render$10(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$24, _hoisted_3$1x);
}
const LogoReact = { render: render$10 };
const _hoisted_1$23 = {
  xmlns: "http://www.w3.org/2000/svg",
  "xml:space": "preserve",
  style: { "enable-background": "new 0 0 250 250" },
  viewBox: "0 0 250 250"
};
const _hoisted_2$1Q = /* @__PURE__ */ createBaseVNode("path", {
  d: "M125 30 31.9 63.2l14.2 123.1L125 230l78.9-43.7 14.2-123.1z",
  style: { "fill": "#dd0031" }
}, null, -1);
const _hoisted_3$1w = /* @__PURE__ */ createBaseVNode("path", {
  d: "M125 30v22.2-.1V230l78.9-43.7 14.2-123.1L125 30z",
  style: { "fill": "#c3002f" }
}, null, -1);
const _hoisted_4$W = /* @__PURE__ */ createBaseVNode("path", {
  d: "M125 52.1 66.8 182.6h21.7l11.7-29.2h49.4l11.7 29.2H183L125 52.1zm17 83.3h-34l17-40.9 17 40.9z",
  style: { "fill": "#fff" }
}, null, -1);
const _hoisted_5$x = [
  _hoisted_2$1Q,
  _hoisted_3$1w,
  _hoisted_4$W
];
function render$$(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$23, _hoisted_5$x);
}
const LogoAngular = { render: render$$ };
const _hoisted_1$22 = {
  xmlns: "http://www.w3.org/2000/svg",
  width: ".84em",
  height: "1em",
  "aria-hidden": "true",
  viewBox: "0 0 256 308"
};
const _hoisted_2$1P = /* @__PURE__ */ createBaseVNode("path", {
  fill: "#FF3E00",
  d: "M239.682 40.707C211.113-.182 154.69-12.301 113.895 13.69L42.247 59.356a82.198 82.198 0 0 0-37.135 55.056 86.566 86.566 0 0 0 8.536 55.576 82.425 82.425 0 0 0-12.296 30.719 87.596 87.596 0 0 0 14.964 66.244c28.574 40.893 84.997 53.007 125.787 27.016l71.648-45.664a82.182 82.182 0 0 0 37.135-55.057 86.601 86.601 0 0 0-8.53-55.577 82.409 82.409 0 0 0 12.29-30.718 87.573 87.573 0 0 0-14.963-66.244"
}, null, -1);
const _hoisted_3$1v = /* @__PURE__ */ createBaseVNode("path", {
  fill: "#FFF",
  d: "M106.889 270.841c-23.102 6.007-47.497-3.036-61.103-22.648a52.685 52.685 0 0 1-9.003-39.85 49.978 49.978 0 0 1 1.713-6.693l1.35-4.115 3.671 2.697a92.447 92.447 0 0 0 28.036 14.007l2.663.808-.245 2.659a16.067 16.067 0 0 0 2.89 10.656 17.143 17.143 0 0 0 18.397 6.828 15.786 15.786 0 0 0 4.403-1.935l71.67-45.672a14.922 14.922 0 0 0 6.734-9.977 15.923 15.923 0 0 0-2.713-12.011 17.156 17.156 0 0 0-18.404-6.832 15.78 15.78 0 0 0-4.396 1.933l-27.35 17.434a52.298 52.298 0 0 1-14.553 6.391c-23.101 6.007-47.497-3.036-61.101-22.649a52.681 52.681 0 0 1-9.004-39.849 49.428 49.428 0 0 1 22.34-33.114l71.664-45.677a52.218 52.218 0 0 1 14.563-6.398c23.101-6.007 47.497 3.036 61.101 22.648a52.685 52.685 0 0 1 9.004 39.85 50.559 50.559 0 0 1-1.713 6.692l-1.35 4.116-3.67-2.693a92.373 92.373 0 0 0-28.037-14.013l-2.664-.809.246-2.658a16.099 16.099 0 0 0-2.89-10.656 17.143 17.143 0 0 0-18.398-6.828 15.786 15.786 0 0 0-4.402 1.935l-71.67 45.674a14.898 14.898 0 0 0-6.73 9.975 15.9 15.9 0 0 0 2.709 12.012 17.156 17.156 0 0 0 18.404 6.832 15.841 15.841 0 0 0 4.402-1.935l27.345-17.427a52.147 52.147 0 0 1 14.552-6.397c23.101-6.006 47.497 3.037 61.102 22.65a52.681 52.681 0 0 1 9.003 39.848 49.453 49.453 0 0 1-22.34 33.12l-71.664 45.673a52.218 52.218 0 0 1-14.563 6.398"
}, null, -1);
const _hoisted_4$V = [
  _hoisted_2$1P,
  _hoisted_3$1v
];
function render$_(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$22, _hoisted_4$V);
}
const LogoSvelte = { render: render$_ };
const FrameworkBundlerLogos = {
  webpack: LogoWebpack,
  vite: LogoVite,
  vue2: LogoVue,
  vue3: LogoVue,
  vueclivue2: LogoVue,
  vueclivue3: LogoVue,
  nextjs: LogoNext,
  nuxtjs: LogoNuxt,
  react: LogoReact,
  reactscripts: LogoReact,
  angular: LogoAngular,
  svelte: LogoSvelte
};
const _hoisted_1$21 = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 24 24"
};
const _hoisted_2$1O = /* @__PURE__ */ createBaseVNode("path", {
  d: "M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59L21 7z",
  fill: "currentColor"
}, null, -1);
const _hoisted_3$1u = [
  _hoisted_2$1O
];
function render$Z(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$21, _hoisted_3$1u);
}
const __unplugin_components_1$7 = { name: "mdi-check", render: render$Z };
const _hoisted_1$20 = {
  height: "1em",
  width: "1em",
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1N = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 5L8 11L14 5",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$1t = [
  _hoisted_2$1N
];
function render$Y(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$20, _hoisted_3$1t);
}
const __unplugin_components_0$k = { name: "cy-chevron-down", render: render$Y };
function _extends$1() {
  _extends$1 = Object.assign || function(target2) {
    for (var i2 = 1; i2 < arguments.length; i2++) {
      var source = arguments[i2];
      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target2[key] = source[key];
        }
      }
    }
    return target2;
  };
  return _extends$1.apply(this, arguments);
}
function _objectWithoutPropertiesLoose(source, excluded) {
  if (source == null)
    return {};
  var target2 = {};
  var sourceKeys = Object.keys(source);
  var key, i2;
  for (i2 = 0; i2 < sourceKeys.length; i2++) {
    key = sourceKeys[i2];
    if (excluded.indexOf(key) >= 0)
      continue;
    target2[key] = source[key];
  }
  return target2;
}
function _unsupportedIterableToArray(o2, minLen) {
  if (!o2)
    return;
  if (typeof o2 === "string")
    return _arrayLikeToArray(o2, minLen);
  var n = Object.prototype.toString.call(o2).slice(8, -1);
  if (n === "Object" && o2.constructor)
    n = o2.constructor.name;
  if (n === "Map" || n === "Set")
    return Array.from(o2);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
    return _arrayLikeToArray(o2, minLen);
}
function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length)
    len = arr.length;
  for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++)
    arr2[i2] = arr[i2];
  return arr2;
}
function _createForOfIteratorHelperLoose(o2, allowArrayLike) {
  var it2;
  if (typeof Symbol === "undefined" || o2[Symbol.iterator] == null) {
    if (Array.isArray(o2) || (it2 = _unsupportedIterableToArray(o2)) || allowArrayLike && o2 && typeof o2.length === "number") {
      if (it2)
        o2 = it2;
      var i2 = 0;
      return function() {
        if (i2 >= o2.length)
          return {
            done: true
          };
        return {
          done: false,
          value: o2[i2++]
        };
      };
    }
    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  it2 = o2[Symbol.iterator]();
  return it2.next.bind(it2);
}
function match(value, lookup) {
  if (value in lookup) {
    var returnValue = lookup[value];
    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
      args[_key - 2] = arguments[_key];
    }
    return typeof returnValue === "function" ? returnValue.apply(void 0, args) : returnValue;
  }
  var error2 = new Error('Tried to handle "' + value + '" but there is no handler defined. Only defined handlers are: ' + Object.keys(lookup).map(function(key) {
    return '"' + key + '"';
  }).join(", ") + ".");
  if (Error.captureStackTrace)
    Error.captureStackTrace(error2, match);
  throw error2;
}
var Features;
(function(Features2) {
  Features2[Features2["None"] = 0] = "None";
  Features2[Features2["RenderStrategy"] = 1] = "RenderStrategy";
  Features2[Features2["Static"] = 2] = "Static";
})(Features || (Features = {}));
var RenderStrategy;
(function(RenderStrategy2) {
  RenderStrategy2[RenderStrategy2["Unmount"] = 0] = "Unmount";
  RenderStrategy2[RenderStrategy2["Hidden"] = 1] = "Hidden";
})(RenderStrategy || (RenderStrategy = {}));
function render$X(_ref) {
  var _ref$visible = _ref.visible, visible = _ref$visible === void 0 ? true : _ref$visible, _ref$features = _ref.features, features = _ref$features === void 0 ? Features.None : _ref$features, main2 = _objectWithoutPropertiesLoose(_ref, ["visible", "features"]);
  if (visible)
    return _render(main2);
  if (features & Features.Static) {
    if (main2.props["static"])
      return _render(main2);
  }
  if (features & Features.RenderStrategy) {
    var _main$props$unmount, _match;
    var strategy = ((_main$props$unmount = main2.props.unmount) != null ? _main$props$unmount : true) ? RenderStrategy.Unmount : RenderStrategy.Hidden;
    return match(strategy, (_match = {}, _match[RenderStrategy.Unmount] = function() {
      return null;
    }, _match[RenderStrategy.Hidden] = function() {
      return _render(_extends$1({}, main2, {
        props: _extends$1({}, main2.props, {
          hidden: true,
          style: {
            display: "none"
          }
        })
      }));
    }, _match));
  }
  return _render(main2);
}
function _render(_ref2) {
  var props = _ref2.props, attrs = _ref2.attrs, slots = _ref2.slots, slot = _ref2.slot, name2 = _ref2.name;
  var _omit = omit(props, ["unmount", "static"]), as = _omit.as, passThroughProps = _objectWithoutPropertiesLoose(_omit, ["as"]);
  var children = slots["default"] == null ? void 0 : slots["default"](slot);
  if (as === "template") {
    if (Object.keys(passThroughProps).length > 0 || Object.keys(attrs).length > 0) {
      var _ref3 = children != null ? children : [], firstChild = _ref3[0], other = _ref3.slice(1);
      if (!isValidElement(firstChild) || other.length > 0) {
        throw new Error(['Passing props on "template"!', "", "The current component <" + name2 + ' /> is rendering a "template".', "However we need to passthrough the following props:", Object.keys(passThroughProps).concat(Object.keys(attrs)).map(function(line) {
          return "  - " + line;
        }).join("\n"), "", "You can apply a few solutions:", ['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".', "Render a single element as the child so that we can forward the props onto that element."].map(function(line) {
          return "  - " + line;
        }).join("\n")].join("\n"));
      }
      return cloneVNode(firstChild, passThroughProps);
    }
    if (Array.isArray(children) && children.length === 1) {
      return children[0];
    }
    return children;
  }
  return h$1(as, passThroughProps, children);
}
function omit(object, keysToOmit) {
  if (keysToOmit === void 0) {
    keysToOmit = [];
  }
  var clone2 = Object.assign({}, object);
  for (var _iterator = _createForOfIteratorHelperLoose(keysToOmit), _step; !(_step = _iterator()).done; ) {
    var key = _step.value;
    if (key in clone2)
      delete clone2[key];
  }
  return clone2;
}
function isValidElement(input) {
  if (input == null)
    return false;
  if (typeof input.type === "string")
    return true;
  if (typeof input.type === "object")
    return true;
  if (typeof input.type === "function")
    return true;
  return false;
}
var Keys;
(function(Keys2) {
  Keys2["Space"] = " ";
  Keys2["Enter"] = "Enter";
  Keys2["Escape"] = "Escape";
  Keys2["Backspace"] = "Backspace";
  Keys2["ArrowLeft"] = "ArrowLeft";
  Keys2["ArrowUp"] = "ArrowUp";
  Keys2["ArrowRight"] = "ArrowRight";
  Keys2["ArrowDown"] = "ArrowDown";
  Keys2["Home"] = "Home";
  Keys2["End"] = "End";
  Keys2["PageUp"] = "PageUp";
  Keys2["PageDown"] = "PageDown";
  Keys2["Tab"] = "Tab";
})(Keys || (Keys = {}));
var id = 0;
function generateId() {
  return ++id;
}
function useId() {
  return generateId();
}
var focusableSelector = /* @__PURE__ */ ["[contentEditable=true]", "[tabindex]", "a[href]", "area[href]", "button:not([disabled])", "iframe", "input:not([disabled])", "select:not([disabled])", "textarea:not([disabled])"].map(function(selector) {
  return selector + ":not([tabindex='-1'])";
}).join(",");
var Focus;
(function(Focus2) {
  Focus2[Focus2["First"] = 1] = "First";
  Focus2[Focus2["Previous"] = 2] = "Previous";
  Focus2[Focus2["Next"] = 4] = "Next";
  Focus2[Focus2["Last"] = 8] = "Last";
  Focus2[Focus2["WrapAround"] = 16] = "WrapAround";
  Focus2[Focus2["NoScroll"] = 32] = "NoScroll";
})(Focus || (Focus = {}));
var FocusResult;
(function(FocusResult2) {
  FocusResult2[FocusResult2["Error"] = 0] = "Error";
  FocusResult2[FocusResult2["Overflow"] = 1] = "Overflow";
  FocusResult2[FocusResult2["Success"] = 2] = "Success";
  FocusResult2[FocusResult2["Underflow"] = 3] = "Underflow";
})(FocusResult || (FocusResult = {}));
var Direction;
(function(Direction2) {
  Direction2[Direction2["Previous"] = -1] = "Previous";
  Direction2[Direction2["Next"] = 1] = "Next";
})(Direction || (Direction = {}));
function getFocusableElements(container) {
  if (container === void 0) {
    container = document.body;
  }
  if (container == null)
    return [];
  return Array.from(container.querySelectorAll(focusableSelector));
}
var FocusableMode;
(function(FocusableMode2) {
  FocusableMode2[FocusableMode2["Strict"] = 0] = "Strict";
  FocusableMode2[FocusableMode2["Loose"] = 1] = "Loose";
})(FocusableMode || (FocusableMode = {}));
function isFocusableElement(element, mode) {
  var _match;
  if (mode === void 0) {
    mode = FocusableMode.Strict;
  }
  if (element === document.body)
    return false;
  return match(mode, (_match = {}, _match[FocusableMode.Strict] = function() {
    return element.matches(focusableSelector);
  }, _match[FocusableMode.Loose] = function() {
    var next = element;
    while (next !== null) {
      if (next.matches(focusableSelector))
        return true;
      next = next.parentElement;
    }
    return false;
  }, _match));
}
function focusElement(element) {
  element == null ? void 0 : element.focus({
    preventScroll: true
  });
}
function focusIn(container, focus) {
  var elements = Array.isArray(container) ? container : getFocusableElements(container);
  var active = document.activeElement;
  var direction = function() {
    if (focus & (Focus.First | Focus.Next))
      return Direction.Next;
    if (focus & (Focus.Previous | Focus.Last))
      return Direction.Previous;
    throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
  }();
  var startIndex = function() {
    if (focus & Focus.First)
      return 0;
    if (focus & Focus.Previous)
      return Math.max(0, elements.indexOf(active)) - 1;
    if (focus & Focus.Next)
      return Math.max(0, elements.indexOf(active)) + 1;
    if (focus & Focus.Last)
      return elements.length - 1;
    throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
  }();
  var focusOptions = focus & Focus.NoScroll ? {
    preventScroll: true
  } : {};
  var offset2 = 0;
  var total = elements.length;
  var next = void 0;
  do {
    var _next;
    if (offset2 >= total || offset2 + total <= 0)
      return FocusResult.Error;
    var nextIdx = startIndex + offset2;
    if (focus & Focus.WrapAround) {
      nextIdx = (nextIdx + total) % total;
    } else {
      if (nextIdx < 0)
        return FocusResult.Underflow;
      if (nextIdx >= total)
        return FocusResult.Overflow;
    }
    next = elements[nextIdx];
    (_next = next) == null ? void 0 : _next.focus(focusOptions);
    offset2 += direction;
  } while (next !== document.activeElement);
  if (!next.hasAttribute("tabindex"))
    next.setAttribute("tabindex", "0");
  return FocusResult.Success;
}
function useWindowEvent(type2, listener, options2) {
  window.addEventListener(type2, listener, options2);
  onUnmounted(function() {
    return window.removeEventListener(type2, listener, options2);
  });
}
function contains$1(containers, element) {
  for (var _iterator = _createForOfIteratorHelperLoose(containers), _step; !(_step = _iterator()).done; ) {
    var container = _step.value;
    if (container.contains(element))
      return true;
  }
  return false;
}
function useFocusTrap(containers, enabled, options2) {
  if (enabled === void 0) {
    enabled = ref(true);
  }
  if (options2 === void 0) {
    options2 = ref({});
  }
  var restoreElement = ref(typeof window !== "undefined" ? document.activeElement : null);
  var previousActiveElement = ref(null);
  function handleFocus() {
    if (!enabled.value)
      return;
    if (containers.value.size !== 1)
      return;
    var initialFocus = options2.value.initialFocus;
    var activeElement = document.activeElement;
    if (initialFocus) {
      if (initialFocus === activeElement) {
        return;
      }
    } else if (contains$1(containers.value, activeElement)) {
      return;
    }
    restoreElement.value = activeElement;
    if (initialFocus) {
      focusElement(initialFocus);
    } else {
      var couldFocus = false;
      for (var _iterator = _createForOfIteratorHelperLoose(containers.value), _step; !(_step = _iterator()).done; ) {
        var container = _step.value;
        var result = focusIn(container, Focus.First);
        if (result === FocusResult.Success) {
          couldFocus = true;
          break;
        }
      }
      if (!couldFocus)
        throw new Error("There are no focusable elements inside the <FocusTrap />");
    }
    previousActiveElement.value = document.activeElement;
  }
  function restore2() {
    focusElement(restoreElement.value);
    restoreElement.value = null;
    previousActiveElement.value = null;
  }
  watchEffect(handleFocus);
  onUpdated(function() {
    enabled.value ? handleFocus() : restore2();
  });
  onUnmounted(restore2);
  useWindowEvent("keydown", function(event) {
    if (!enabled.value)
      return;
    if (event.key !== Keys.Tab)
      return;
    if (!document.activeElement)
      return;
    if (containers.value.size !== 1)
      return;
    event.preventDefault();
    for (var _iterator2 = _createForOfIteratorHelperLoose(containers.value), _step2; !(_step2 = _iterator2()).done; ) {
      var element = _step2.value;
      var result = focusIn(element, (event.shiftKey ? Focus.Previous : Focus.Next) | Focus.WrapAround);
      if (result === FocusResult.Success) {
        previousActiveElement.value = document.activeElement;
        break;
      }
    }
  });
  useWindowEvent("focus", function(event) {
    if (!enabled.value)
      return;
    if (containers.value.size !== 1)
      return;
    var previous = previousActiveElement.value;
    if (!previous)
      return;
    var toElement = event.target;
    if (toElement && toElement instanceof HTMLElement) {
      if (!contains$1(containers.value, toElement)) {
        event.preventDefault();
        event.stopPropagation();
        focusElement(previous);
      } else {
        previousActiveElement.value = toElement;
        focusElement(toElement);
      }
    } else {
      focusElement(previousActiveElement.value);
    }
  }, true);
}
var CHILDREN_SELECTOR = "body > *";
var interactables = /* @__PURE__ */ new Set();
var originals = /* @__PURE__ */ new Map();
function inert(element) {
  element.setAttribute("aria-hidden", "true");
  element.inert = true;
}
function restore(element) {
  var original = originals.get(element);
  if (!original)
    return;
  if (original["aria-hidden"] === null)
    element.removeAttribute("aria-hidden");
  else
    element.setAttribute("aria-hidden", original["aria-hidden"]);
  element.inert = original.inert;
}
function useInertOthers(container, enabled) {
  if (enabled === void 0) {
    enabled = ref(true);
  }
  watchEffect(function(onInvalidate) {
    if (!enabled.value)
      return;
    if (!container.value)
      return;
    var element = container.value;
    interactables.add(element);
    for (var _iterator = _createForOfIteratorHelperLoose(originals.keys()), _step; !(_step = _iterator()).done; ) {
      var original = _step.value;
      if (original.contains(element)) {
        restore(original);
        originals["delete"](original);
      }
    }
    document.querySelectorAll(CHILDREN_SELECTOR).forEach(function(child) {
      if (!(child instanceof HTMLElement))
        return;
      for (var _iterator2 = _createForOfIteratorHelperLoose(interactables), _step2; !(_step2 = _iterator2()).done; ) {
        var interactable = _step2.value;
        if (child.contains(interactable))
          return;
      }
      if (interactables.size === 1) {
        originals.set(child, {
          "aria-hidden": child.getAttribute("aria-hidden"),
          // @ts-expect-error `inert` does not exist on HTMLElement (yet!)
          inert: child.inert
        });
        inert(child);
      }
    });
    onInvalidate(function() {
      interactables["delete"](element);
      if (interactables.size > 0) {
        document.querySelectorAll(CHILDREN_SELECTOR).forEach(function(child) {
          if (!(child instanceof HTMLElement))
            return;
          if (originals.has(child))
            return;
          for (var _iterator3 = _createForOfIteratorHelperLoose(interactables), _step3; !(_step3 = _iterator3()).done; ) {
            var interactable = _step3.value;
            if (child.contains(interactable))
              return;
          }
          originals.set(child, {
            "aria-hidden": child.getAttribute("aria-hidden"),
            // @ts-expect-error `inert` does not exist on HTMLElement (yet!)
            inert: child.inert
          });
          inert(child);
        });
      } else {
        for (var _iterator4 = _createForOfIteratorHelperLoose(originals.keys()), _step4; !(_step4 = _iterator4()).done; ) {
          var _element = _step4.value;
          restore(_element);
          originals["delete"](_element);
        }
      }
    });
  });
}
var StackContext = /* @__PURE__ */ Symbol("StackContext");
var StackMessage;
(function(StackMessage2) {
  StackMessage2[StackMessage2["AddElement"] = 0] = "AddElement";
  StackMessage2[StackMessage2["RemoveElement"] = 1] = "RemoveElement";
})(StackMessage || (StackMessage = {}));
function useStackContext() {
  return inject(StackContext, function() {
  });
}
function useElemenStack(element) {
  var notify = useStackContext();
  watchEffect(function(onInvalidate) {
    var domElement = element == null ? void 0 : element.value;
    if (!domElement)
      return;
    notify(StackMessage.AddElement, domElement);
    onInvalidate(function() {
      return notify(StackMessage.RemoveElement, domElement);
    });
  });
}
function useStackProvider(onUpdate) {
  var parentUpdate = useStackContext();
  function notify() {
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }
    onUpdate == null ? void 0 : onUpdate.apply(void 0, args);
    parentUpdate.apply(void 0, args);
  }
  provide(StackContext, notify);
}
var ForcePortalRootContext = /* @__PURE__ */ Symbol("ForcePortalRootContext");
function usePortalRoot() {
  return inject(ForcePortalRootContext, false);
}
var ForcePortalRoot = /* @__PURE__ */ defineComponent({
  name: "ForcePortalRoot",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    force: {
      type: Boolean,
      "default": false
    }
  },
  setup: function setup(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    provide(ForcePortalRootContext, props.force);
    return function() {
      var passThroughProps = _objectWithoutPropertiesLoose(props, ["force"]);
      return render$X({
        props: passThroughProps,
        slot: {},
        slots,
        attrs,
        name: "ForcePortalRoot"
      });
    };
  }
});
function getPortalRoot() {
  var existingRoot = document.getElementById("headlessui-portal-root");
  if (existingRoot)
    return existingRoot;
  var root2 = document.createElement("div");
  root2.setAttribute("id", "headlessui-portal-root");
  return document.body.appendChild(root2);
}
var Portal = /* @__PURE__ */ defineComponent({
  name: "Portal",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    }
  },
  setup: function setup2(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    var forcePortalRoot = usePortalRoot();
    var groupContext = inject(PortalGroupContext, null);
    var myTarget = ref(forcePortalRoot === true ? getPortalRoot() : groupContext === null ? getPortalRoot() : groupContext.resolveTarget());
    watchEffect(function() {
      if (forcePortalRoot)
        return;
      if (groupContext === null)
        return;
      myTarget.value = groupContext.resolveTarget();
    });
    var element = ref(null);
    useElemenStack(element);
    onUnmounted(function() {
      var root2 = document.getElementById("headlessui-portal-root");
      if (!root2)
        return;
      if (myTarget.value !== root2)
        return;
      if (myTarget.value.children.length <= 0) {
        var _myTarget$value$paren;
        (_myTarget$value$paren = myTarget.value.parentElement) == null ? void 0 : _myTarget$value$paren.removeChild(myTarget.value);
      }
    });
    useStackProvider();
    return function() {
      if (myTarget.value === null)
        return null;
      var propsWeControl = {
        ref: element
      };
      return h$1(
        // @ts-expect-error Children can be an object, but TypeScript is not happy
        // with it. Once this is fixed upstream we can remove this assertion.
        Teleport,
        {
          to: myTarget.value
        },
        render$X({
          props: _extends$1({}, props, propsWeControl),
          slot: {},
          attrs,
          slots,
          name: "Portal"
        })
      );
    };
  }
});
var PortalGroupContext = /* @__PURE__ */ Symbol("PortalGroupContext");
var PortalGroup = /* @__PURE__ */ defineComponent({
  name: "PortalGroup",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    target: {
      type: Object,
      "default": null
    }
  },
  setup: function setup3(props, _ref2) {
    var attrs = _ref2.attrs, slots = _ref2.slots;
    var api = reactive({
      resolveTarget: function resolveTarget2() {
        return props.target;
      }
    });
    provide(PortalGroupContext, api);
    return function() {
      var passThroughProps = _objectWithoutPropertiesLoose(props, ["target"]);
      return render$X({
        props: passThroughProps,
        slot: {},
        attrs,
        slots,
        name: "PortalGroup"
      });
    };
  }
});
var DescriptionContext = /* @__PURE__ */ Symbol("DescriptionContext");
function useDescriptionContext() {
  var context = inject(DescriptionContext, null);
  if (context === null) {
    throw new Error("Missing parent");
  }
  return context;
}
function useDescriptions(_temp) {
  var _ref = _temp === void 0 ? {} : _temp, _ref$slot = _ref.slot, slot = _ref$slot === void 0 ? ref({}) : _ref$slot, _ref$name = _ref.name, name2 = _ref$name === void 0 ? "Description" : _ref$name, _ref$props = _ref.props, props = _ref$props === void 0 ? {} : _ref$props;
  var descriptionIds = ref([]);
  function register(value) {
    descriptionIds.value.push(value);
    return function() {
      var idx = descriptionIds.value.indexOf(value);
      if (idx === -1)
        return;
      descriptionIds.value.splice(idx, 1);
    };
  }
  provide(DescriptionContext, {
    register,
    slot,
    name: name2,
    props
  });
  return computed(function() {
    return descriptionIds.value.length > 0 ? descriptionIds.value.join(" ") : void 0;
  });
}
var Description = /* @__PURE__ */ defineComponent({
  name: "Description",
  props: {
    as: {
      type: [Object, String],
      "default": "p"
    }
  },
  render: function render$1() {
    var _this$context = this.context, _this$context$name = _this$context.name, name2 = _this$context$name === void 0 ? "Description" : _this$context$name, _this$context$slot = _this$context.slot, slot = _this$context$slot === void 0 ? ref({}) : _this$context$slot, _this$context$props = _this$context.props, props = _this$context$props === void 0 ? {} : _this$context$props;
    var passThroughProps = this.$props;
    var propsWeControl = _extends$1({}, Object.entries(props).reduce(function(acc, _ref2) {
      var _Object$assign;
      var key = _ref2[0], value = _ref2[1];
      return Object.assign(acc, (_Object$assign = {}, _Object$assign[key] = unref(value), _Object$assign));
    }, {}), {
      id: this.id
    });
    return render$X({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot: slot.value,
      attrs: this.$attrs,
      slots: this.$slots,
      name: name2
    });
  },
  setup: function setup4() {
    var context = useDescriptionContext();
    var id2 = "headlessui-description-" + useId();
    onMounted(function() {
      return onUnmounted(context.register(id2));
    });
    return {
      id: id2,
      context
    };
  }
});
function dom(ref2) {
  var _ref$value$$el;
  if (ref2 == null)
    return null;
  if (ref2.value == null)
    return null;
  return (_ref$value$$el = ref2.value.$el) != null ? _ref$value$$el : ref2.value;
}
var Context = /* @__PURE__ */ Symbol("Context");
var State;
(function(State2) {
  State2[State2["Open"] = 0] = "Open";
  State2[State2["Closed"] = 1] = "Closed";
})(State || (State = {}));
function useOpenClosed() {
  return inject(Context, null);
}
function useOpenClosedProvider(value) {
  provide(Context, value);
}
var DialogStates;
(function(DialogStates2) {
  DialogStates2[DialogStates2["Open"] = 0] = "Open";
  DialogStates2[DialogStates2["Closed"] = 1] = "Closed";
})(DialogStates || (DialogStates = {}));
var DialogContext = /* @__PURE__ */ Symbol("DialogContext");
function useDialogContext(component) {
  var context = inject(DialogContext, null);
  if (context === null) {
    var err = new Error("<" + component + " /> is missing a parent <Dialog /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useDialogContext);
    throw err;
  }
  return context;
}
var Missing = "DC8F892D-2EBD-447C-A4C8-A03058436FF4";
var Dialog = /* @__PURE__ */ defineComponent({
  name: "Dialog",
  inheritAttrs: false,
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    },
    open: {
      type: [Boolean, String],
      "default": Missing
    },
    initialFocus: {
      type: Object,
      "default": null
    }
  },
  emits: ["close"],
  render: function render$110() {
    var _this = this;
    var propsWeControl = _extends$1({}, this.$attrs, {
      ref: "el",
      id: this.id,
      role: "dialog",
      "aria-modal": this.dialogState === DialogStates.Open ? true : void 0,
      "aria-labelledby": this.titleId,
      "aria-describedby": this.describedby,
      onClick: this.handleClick,
      onKeydown: this.handleKeyDown
    });
    var _this$$props = this.$props, passThroughProps = _objectWithoutPropertiesLoose(_this$$props, ["open", "initialFocus"]);
    var slot = {
      open: this.dialogState === DialogStates.Open
    };
    return h$1(ForcePortalRoot, {
      force: true
    }, function() {
      return h$1(Portal, function() {
        return h$1(PortalGroup, {
          target: _this.dialogRef
        }, function() {
          return h$1(ForcePortalRoot, {
            force: false
          }, function() {
            return render$X({
              props: _extends$1({}, passThroughProps, propsWeControl),
              slot,
              attrs: _this.$attrs,
              slots: _this.$slots,
              visible: _this.visible,
              features: Features.RenderStrategy | Features.Static,
              name: "Dialog"
            });
          });
        });
      });
    });
  },
  setup: function setup5(props, _ref) {
    var emit2 = _ref.emit;
    var containers = ref(/* @__PURE__ */ new Set());
    var usesOpenClosedState = useOpenClosed();
    var open = computed(function() {
      if (props.open === Missing && usesOpenClosedState !== null) {
        var _match;
        return match(usesOpenClosedState.value, (_match = {}, _match[State.Open] = true, _match[State.Closed] = false, _match));
      }
      return props.open;
    });
    var hasOpen = props.open !== Missing || usesOpenClosedState !== null;
    if (!hasOpen) {
      throw new Error("You forgot to provide an `open` prop to the `Dialog`.");
    }
    if (typeof open.value !== "boolean") {
      throw new Error("You provided an `open` prop to the `Dialog`, but the value is not a boolean. Received: " + (open.value === Missing ? void 0 : props.open));
    }
    var dialogState = computed(function() {
      return props.open ? DialogStates.Open : DialogStates.Closed;
    });
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return dialogState.value === DialogStates.Open;
    });
    var internalDialogRef = ref(null);
    var enabled = ref(dialogState.value === DialogStates.Open);
    onUpdated(function() {
      enabled.value = dialogState.value === DialogStates.Open;
    });
    var id2 = "headlessui-dialog-" + useId();
    var focusTrapOptions = computed(function() {
      return {
        initialFocus: props.initialFocus
      };
    });
    useFocusTrap(containers, enabled, focusTrapOptions);
    useInertOthers(internalDialogRef, enabled);
    useStackProvider(function(message, element) {
      var _match2;
      return match(message, (_match2 = {}, _match2[StackMessage.AddElement] = function() {
        containers.value.add(element);
      }, _match2[StackMessage.RemoveElement] = function() {
        containers.value["delete"](element);
      }, _match2));
    });
    var describedby = useDescriptions({
      name: "DialogDescription",
      slot: computed(function() {
        return {
          open: open.value
        };
      })
    });
    var titleId = ref(null);
    var api = {
      titleId,
      dialogState,
      setTitleId: function setTitleId(id3) {
        if (titleId.value === id3)
          return;
        titleId.value = id3;
      },
      close: function close() {
        emit2("close", false);
      }
    };
    provide(DialogContext, api);
    useWindowEvent("mousedown", function(event) {
      var target2 = event.target;
      if (dialogState.value !== DialogStates.Open)
        return;
      if (containers.value.size !== 1)
        return;
      if (contains$1(containers.value, target2))
        return;
      api.close();
      nextTick(function() {
        return target2 == null ? void 0 : target2.focus();
      });
    });
    watchEffect(function(onInvalidate) {
      if (dialogState.value !== DialogStates.Open)
        return;
      var overflow = document.documentElement.style.overflow;
      var paddingRight = document.documentElement.style.paddingRight;
      var scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
      document.documentElement.style.overflow = "hidden";
      document.documentElement.style.paddingRight = scrollbarWidth + "px";
      onInvalidate(function() {
        document.documentElement.style.overflow = overflow;
        document.documentElement.style.paddingRight = paddingRight;
      });
    });
    watchEffect(function(onInvalidate) {
      if (dialogState.value !== DialogStates.Open)
        return;
      var container = dom(internalDialogRef);
      if (!container)
        return;
      var observer = new IntersectionObserver(function(entries) {
        for (var _iterator = _createForOfIteratorHelperLoose(entries), _step; !(_step = _iterator()).done; ) {
          var entry = _step.value;
          if (entry.boundingClientRect.x === 0 && entry.boundingClientRect.y === 0 && entry.boundingClientRect.width === 0 && entry.boundingClientRect.height === 0) {
            api.close();
          }
        }
      });
      observer.observe(container);
      onInvalidate(function() {
        return observer.disconnect();
      });
    });
    return {
      id: id2,
      el: internalDialogRef,
      dialogRef: internalDialogRef,
      containers,
      dialogState,
      titleId,
      describedby,
      visible,
      open,
      handleClick: function handleClick(event) {
        event.stopPropagation();
      },
      // Handle `Escape` to close
      handleKeyDown: function handleKeyDown(event) {
        if (event.key !== Keys.Escape)
          return;
        if (dialogState.value !== DialogStates.Open)
          return;
        if (containers.value.size > 1)
          return;
        event.preventDefault();
        event.stopPropagation();
        api.close();
      }
    };
  }
});
var DialogOverlay = /* @__PURE__ */ defineComponent({
  name: "DialogOverlay",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    }
  },
  render: function render$111() {
    var api = useDialogContext("DialogOverlay");
    var propsWeControl = {
      ref: "el",
      id: this.id,
      "aria-hidden": true,
      onClick: this.handleClick
    };
    var passThroughProps = this.$props;
    return render$X({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot: {
        open: api.dialogState.value === DialogStates.Open
      },
      attrs: this.$attrs,
      slots: this.$slots,
      name: "DialogOverlay"
    });
  },
  setup: function setup6() {
    var api = useDialogContext("DialogOverlay");
    var id2 = "headlessui-dialog-overlay-" + useId();
    return {
      id: id2,
      handleClick: function handleClick(event) {
        event.preventDefault();
        event.stopPropagation();
        api.close();
      }
    };
  }
});
var DialogTitle = /* @__PURE__ */ defineComponent({
  name: "DialogTitle",
  props: {
    as: {
      type: [Object, String],
      "default": "h2"
    }
  },
  render: function render$112() {
    var api = useDialogContext("DialogTitle");
    var propsWeControl = {
      id: this.id
    };
    var passThroughProps = this.$props;
    return render$X({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot: {
        open: api.dialogState.value === DialogStates.Open
      },
      attrs: this.$attrs,
      slots: this.$slots,
      name: "DialogTitle"
    });
  },
  setup: function setup7() {
    var api = useDialogContext("DialogTitle");
    var id2 = "headlessui-dialog-title-" + useId();
    onMounted(function() {
      api.setTitleId(id2);
      onUnmounted(function() {
        return api.setTitleId(null);
      });
    });
    return {
      id: id2
    };
  }
});
var DialogDescription = Description;
var DisclosureStates;
(function(DisclosureStates2) {
  DisclosureStates2[DisclosureStates2["Open"] = 0] = "Open";
  DisclosureStates2[DisclosureStates2["Closed"] = 1] = "Closed";
})(DisclosureStates || (DisclosureStates = {}));
function assertNever(x2) {
  throw new Error("Unexpected object: " + x2);
}
var Focus$1;
(function(Focus2) {
  Focus2[Focus2["First"] = 0] = "First";
  Focus2[Focus2["Previous"] = 1] = "Previous";
  Focus2[Focus2["Next"] = 2] = "Next";
  Focus2[Focus2["Last"] = 3] = "Last";
  Focus2[Focus2["Specific"] = 4] = "Specific";
  Focus2[Focus2["Nothing"] = 5] = "Nothing";
})(Focus$1 || (Focus$1 = {}));
function calculateActiveIndex(action, resolvers) {
  var items = resolvers.resolveItems();
  if (items.length <= 0)
    return null;
  var currentActiveIndex = resolvers.resolveActiveIndex();
  var activeIndex = currentActiveIndex != null ? currentActiveIndex : -1;
  var nextActiveIndex = function() {
    switch (action.focus) {
      case Focus$1.First:
        return items.findIndex(function(item) {
          return !resolvers.resolveDisabled(item);
        });
      case Focus$1.Previous: {
        var idx = items.slice().reverse().findIndex(function(item, idx2, all) {
          if (activeIndex !== -1 && all.length - idx2 - 1 >= activeIndex)
            return false;
          return !resolvers.resolveDisabled(item);
        });
        if (idx === -1)
          return idx;
        return items.length - 1 - idx;
      }
      case Focus$1.Next:
        return items.findIndex(function(item, idx2) {
          if (idx2 <= activeIndex)
            return false;
          return !resolvers.resolveDisabled(item);
        });
      case Focus$1.Last: {
        var _idx = items.slice().reverse().findIndex(function(item) {
          return !resolvers.resolveDisabled(item);
        });
        if (_idx === -1)
          return _idx;
        return items.length - 1 - _idx;
      }
      case Focus$1.Specific:
        return items.findIndex(function(item) {
          return resolvers.resolveId(item) === action.id;
        });
      case Focus$1.Nothing:
        return null;
      default:
        assertNever(action);
    }
  }();
  return nextActiveIndex === -1 ? currentActiveIndex : nextActiveIndex;
}
var ListboxStates;
(function(ListboxStates2) {
  ListboxStates2[ListboxStates2["Open"] = 0] = "Open";
  ListboxStates2[ListboxStates2["Closed"] = 1] = "Closed";
})(ListboxStates || (ListboxStates = {}));
function nextFrame$1(cb) {
  requestAnimationFrame(function() {
    return requestAnimationFrame(cb);
  });
}
var ListboxContext = /* @__PURE__ */ Symbol("ListboxContext");
function useListboxContext(component) {
  var context = inject(ListboxContext, null);
  if (context === null) {
    var err = new Error("<" + component + " /> is missing a parent <Listbox /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useListboxContext);
    throw err;
  }
  return context;
}
var Listbox = /* @__PURE__ */ defineComponent({
  name: "Listbox",
  emits: ["update:modelValue"],
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    disabled: {
      type: [Boolean],
      "default": false
    },
    horizontal: {
      type: [Boolean],
      "default": false
    },
    modelValue: {
      type: [Object, String, Number, Boolean]
    }
  },
  setup: function setup8(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs, emit2 = _ref.emit;
    var listboxState = ref(ListboxStates.Closed);
    var labelRef = ref(null);
    var buttonRef = ref(null);
    var optionsRef = ref(null);
    var options2 = ref([]);
    var searchQuery = ref("");
    var activeOptionIndex = ref(null);
    var value = computed(function() {
      return props.modelValue;
    });
    var api = {
      listboxState,
      value,
      orientation: computed(function() {
        return props.horizontal ? "horizontal" : "vertical";
      }),
      labelRef,
      buttonRef,
      optionsRef,
      disabled: computed(function() {
        return props.disabled;
      }),
      options: options2,
      searchQuery,
      activeOptionIndex,
      closeListbox: function closeListbox() {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        listboxState.value = ListboxStates.Closed;
        activeOptionIndex.value = null;
      },
      openListbox: function openListbox() {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Open)
          return;
        listboxState.value = ListboxStates.Open;
      },
      goToOption: function goToOption(focus, id2) {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        var nextActiveOptionIndex = calculateActiveIndex(focus === Focus$1.Specific ? {
          focus: Focus$1.Specific,
          id: id2
        } : {
          focus
        }, {
          resolveItems: function resolveItems() {
            return options2.value;
          },
          resolveActiveIndex: function resolveActiveIndex() {
            return activeOptionIndex.value;
          },
          resolveId: function resolveId(option) {
            return option.id;
          },
          resolveDisabled: function resolveDisabled(option) {
            return option.dataRef.disabled;
          }
        });
        if (searchQuery.value === "" && activeOptionIndex.value === nextActiveOptionIndex)
          return;
        searchQuery.value = "";
        activeOptionIndex.value = nextActiveOptionIndex;
      },
      search: function search(value2) {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        searchQuery.value += value2.toLowerCase();
        var match3 = options2.value.findIndex(function(option) {
          return !option.dataRef.disabled && option.dataRef.textValue.startsWith(searchQuery.value);
        });
        if (match3 === -1 || match3 === activeOptionIndex.value)
          return;
        activeOptionIndex.value = match3;
      },
      clearSearch: function clearSearch() {
        if (props.disabled)
          return;
        if (listboxState.value === ListboxStates.Closed)
          return;
        if (searchQuery.value === "")
          return;
        searchQuery.value = "";
      },
      registerOption: function registerOption(id2, dataRef) {
        options2.value.push({
          id: id2,
          dataRef
        });
      },
      unregisterOption: function unregisterOption(id2) {
        var nextOptions = options2.value.slice();
        var currentActiveOption = activeOptionIndex.value !== null ? nextOptions[activeOptionIndex.value] : null;
        var idx = nextOptions.findIndex(function(a2) {
          return a2.id === id2;
        });
        if (idx !== -1)
          nextOptions.splice(idx, 1);
        options2.value = nextOptions;
        activeOptionIndex.value = function() {
          if (idx === activeOptionIndex.value)
            return null;
          if (currentActiveOption === null)
            return null;
          return nextOptions.indexOf(currentActiveOption);
        }();
      },
      select: function select(value2) {
        if (props.disabled)
          return;
        emit2("update:modelValue", value2);
      }
    };
    useWindowEvent("mousedown", function(event) {
      var _dom, _dom2, _dom3;
      var target2 = event.target;
      var active = document.activeElement;
      if (listboxState.value !== ListboxStates.Open)
        return;
      if ((_dom = dom(buttonRef)) == null ? void 0 : _dom.contains(target2))
        return;
      if (!((_dom2 = dom(optionsRef)) == null ? void 0 : _dom2.contains(target2)))
        api.closeListbox();
      if (active !== document.body && (active == null ? void 0 : active.contains(target2)))
        return;
      if (!event.defaultPrevented)
        (_dom3 = dom(buttonRef)) == null ? void 0 : _dom3.focus({
          preventScroll: true
        });
    });
    provide(ListboxContext, api);
    useOpenClosedProvider(computed(function() {
      var _match;
      return match(listboxState.value, (_match = {}, _match[ListboxStates.Open] = State.Open, _match[ListboxStates.Closed] = State.Closed, _match));
    }));
    return function() {
      var slot = {
        open: listboxState.value === ListboxStates.Open,
        disabled: props.disabled
      };
      return render$X({
        props: omit(props, ["modelValue", "onUpdate:modelValue", "disabled", "horizontal"]),
        slot,
        slots,
        attrs,
        name: "Listbox"
      });
    };
  }
});
var ListboxLabel = /* @__PURE__ */ defineComponent({
  name: "ListboxLabel",
  props: {
    as: {
      type: [Object, String],
      "default": "label"
    }
  },
  render: function render$113() {
    var api = useListboxContext("ListboxLabel");
    var slot = {
      open: api.listboxState.value === ListboxStates.Open,
      disabled: api.disabled.value
    };
    var propsWeControl = {
      id: this.id,
      ref: "el",
      onClick: this.handleClick
    };
    return render$X({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "ListboxLabel"
    });
  },
  setup: function setup9() {
    var api = useListboxContext("ListboxLabel");
    var id2 = "headlessui-listbox-label-" + useId();
    return {
      id: id2,
      el: api.labelRef,
      handleClick: function handleClick() {
        var _dom4;
        (_dom4 = dom(api.buttonRef)) == null ? void 0 : _dom4.focus({
          preventScroll: true
        });
      }
    };
  }
});
var ListboxButton = /* @__PURE__ */ defineComponent({
  name: "ListboxButton",
  props: {
    as: {
      type: [Object, String],
      "default": "button"
    }
  },
  render: function render$114() {
    var _dom5, _dom6;
    var api = useListboxContext("ListboxButton");
    var slot = {
      open: api.listboxState.value === ListboxStates.Open,
      disabled: api.disabled.value
    };
    var propsWeControl = {
      ref: "el",
      id: this.id,
      type: "button",
      "aria-haspopup": true,
      "aria-controls": (_dom5 = dom(api.optionsRef)) == null ? void 0 : _dom5.id,
      "aria-expanded": api.disabled.value ? void 0 : api.listboxState.value === ListboxStates.Open,
      "aria-labelledby": api.labelRef.value ? [(_dom6 = dom(api.labelRef)) == null ? void 0 : _dom6.id, this.id].join(" ") : void 0,
      disabled: api.disabled.value === true ? true : void 0,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      onClick: this.handleClick
    };
    return render$X({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "ListboxButton"
    });
  },
  setup: function setup10() {
    var api = useListboxContext("ListboxButton");
    var id2 = "headlessui-listbox-button-" + useId();
    function handleKeyDown(event) {
      switch (event.key) {
        case Keys.Space:
        case Keys.Enter:
        case Keys.ArrowDown:
          event.preventDefault();
          api.openListbox();
          nextTick(function() {
            var _dom7;
            (_dom7 = dom(api.optionsRef)) == null ? void 0 : _dom7.focus({
              preventScroll: true
            });
            if (!api.value.value)
              api.goToOption(Focus$1.First);
          });
          break;
        case Keys.ArrowUp:
          event.preventDefault();
          api.openListbox();
          nextTick(function() {
            var _dom8;
            (_dom8 = dom(api.optionsRef)) == null ? void 0 : _dom8.focus({
              preventScroll: true
            });
            if (!api.value.value)
              api.goToOption(Focus$1.Last);
          });
          break;
      }
    }
    function handleKeyUp(event) {
      switch (event.key) {
        case Keys.Space:
          event.preventDefault();
          break;
      }
    }
    function handleClick(event) {
      if (api.disabled.value)
        return;
      if (api.listboxState.value === ListboxStates.Open) {
        api.closeListbox();
        nextTick(function() {
          var _dom9;
          return (_dom9 = dom(api.buttonRef)) == null ? void 0 : _dom9.focus({
            preventScroll: true
          });
        });
      } else {
        event.preventDefault();
        api.openListbox();
        nextFrame$1(function() {
          var _dom10;
          return (_dom10 = dom(api.optionsRef)) == null ? void 0 : _dom10.focus({
            preventScroll: true
          });
        });
      }
    }
    return {
      id: id2,
      el: api.buttonRef,
      handleKeyDown,
      handleKeyUp,
      handleClick
    };
  }
});
var ListboxOptions = /* @__PURE__ */ defineComponent({
  name: "ListboxOptions",
  props: {
    as: {
      type: [Object, String],
      "default": "ul"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    }
  },
  render: function render$115() {
    var _api$options$value$ap, _dom$id, _dom11, _dom12;
    var api = useListboxContext("ListboxOptions");
    var slot = {
      open: api.listboxState.value === ListboxStates.Open
    };
    var propsWeControl = {
      "aria-activedescendant": api.activeOptionIndex.value === null ? void 0 : (_api$options$value$ap = api.options.value[api.activeOptionIndex.value]) == null ? void 0 : _api$options$value$ap.id,
      "aria-labelledby": (_dom$id = (_dom11 = dom(api.labelRef)) == null ? void 0 : _dom11.id) != null ? _dom$id : (_dom12 = dom(api.buttonRef)) == null ? void 0 : _dom12.id,
      "aria-orientation": api.orientation.value,
      id: this.id,
      onKeydown: this.handleKeyDown,
      role: "listbox",
      tabIndex: 0,
      ref: "el"
    };
    var passThroughProps = this.$props;
    return render$X({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      features: Features.RenderStrategy | Features.Static,
      visible: this.visible,
      name: "ListboxOptions"
    });
  },
  setup: function setup11() {
    var api = useListboxContext("ListboxOptions");
    var id2 = "headlessui-listbox-options-" + useId();
    var searchDebounce = ref(null);
    function handleKeyDown(event) {
      if (searchDebounce.value)
        clearTimeout(searchDebounce.value);
      switch (event.key) {
        case Keys.Space:
          if (api.searchQuery.value !== "") {
            event.preventDefault();
            event.stopPropagation();
            return api.search(event.key);
          }
        case Keys.Enter:
          event.preventDefault();
          event.stopPropagation();
          if (api.activeOptionIndex.value !== null) {
            var dataRef = api.options.value[api.activeOptionIndex.value].dataRef;
            api.select(dataRef.value);
          }
          api.closeListbox();
          nextTick(function() {
            var _dom13;
            return (_dom13 = dom(api.buttonRef)) == null ? void 0 : _dom13.focus({
              preventScroll: true
            });
          });
          break;
        case match(api.orientation.value, {
          vertical: Keys.ArrowDown,
          horizontal: Keys.ArrowRight
        }):
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.Next);
        case match(api.orientation.value, {
          vertical: Keys.ArrowUp,
          horizontal: Keys.ArrowLeft
        }):
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.Previous);
        case Keys.Home:
        case Keys.PageUp:
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.First);
        case Keys.End:
        case Keys.PageDown:
          event.preventDefault();
          event.stopPropagation();
          return api.goToOption(Focus$1.Last);
        case Keys.Escape:
          event.preventDefault();
          event.stopPropagation();
          api.closeListbox();
          nextTick(function() {
            var _dom14;
            return (_dom14 = dom(api.buttonRef)) == null ? void 0 : _dom14.focus({
              preventScroll: true
            });
          });
          break;
        case Keys.Tab:
          event.preventDefault();
          event.stopPropagation();
          break;
        default:
          if (event.key.length === 1) {
            api.search(event.key);
            searchDebounce.value = setTimeout(function() {
              return api.clearSearch();
            }, 350);
          }
          break;
      }
    }
    var usesOpenClosedState = useOpenClosed();
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return api.listboxState.value === ListboxStates.Open;
    });
    return {
      id: id2,
      el: api.optionsRef,
      handleKeyDown,
      visible
    };
  }
});
var ListboxOption = /* @__PURE__ */ defineComponent({
  name: "ListboxOption",
  props: {
    as: {
      type: [Object, String],
      "default": "li"
    },
    value: {
      type: [Object, String, Number, Boolean]
    },
    disabled: {
      type: Boolean,
      "default": false
    }
  },
  setup: function setup12(props, _ref2) {
    var slots = _ref2.slots, attrs = _ref2.attrs;
    var api = useListboxContext("ListboxOption");
    var id2 = "headlessui-listbox-option-" + useId();
    var active = computed(function() {
      return api.activeOptionIndex.value !== null ? api.options.value[api.activeOptionIndex.value].id === id2 : false;
    });
    var selected = computed(function() {
      return toRaw(api.value.value) === toRaw(props.value);
    });
    var dataRef = ref({
      disabled: props.disabled,
      value: props.value,
      textValue: ""
    });
    onMounted(function() {
      var _document$getElementB, _document$getElementB2;
      var textValue = (_document$getElementB = document.getElementById(id2)) == null ? void 0 : (_document$getElementB2 = _document$getElementB.textContent) == null ? void 0 : _document$getElementB2.toLowerCase().trim();
      if (textValue !== void 0)
        dataRef.value.textValue = textValue;
    });
    onMounted(function() {
      return api.registerOption(id2, dataRef);
    });
    onUnmounted(function() {
      return api.unregisterOption(id2);
    });
    onMounted(function() {
      watch([api.listboxState, selected], function() {
        var _document$getElementB3;
        if (api.listboxState.value !== ListboxStates.Open)
          return;
        if (!selected.value)
          return;
        api.goToOption(Focus$1.Specific, id2);
        (_document$getElementB3 = document.getElementById(id2)) == null ? void 0 : _document$getElementB3.focus == null ? void 0 : _document$getElementB3.focus();
      }, {
        immediate: true
      });
    });
    watchEffect(function() {
      if (api.listboxState.value !== ListboxStates.Open)
        return;
      if (!active.value)
        return;
      nextTick(function() {
        var _document$getElementB4;
        return (_document$getElementB4 = document.getElementById(id2)) == null ? void 0 : _document$getElementB4.scrollIntoView == null ? void 0 : _document$getElementB4.scrollIntoView({
          block: "nearest"
        });
      });
    });
    function handleClick(event) {
      if (props.disabled)
        return event.preventDefault();
      api.select(props.value);
      api.closeListbox();
      nextTick(function() {
        var _dom15;
        return (_dom15 = dom(api.buttonRef)) == null ? void 0 : _dom15.focus({
          preventScroll: true
        });
      });
    }
    function handleFocus() {
      if (props.disabled)
        return api.goToOption(Focus$1.Nothing);
      api.goToOption(Focus$1.Specific, id2);
    }
    function handleMove() {
      if (props.disabled)
        return;
      if (active.value)
        return;
      api.goToOption(Focus$1.Specific, id2);
    }
    function handleLeave() {
      if (props.disabled)
        return;
      if (!active.value)
        return;
      api.goToOption(Focus$1.Nothing);
    }
    return function() {
      var disabled = props.disabled;
      var slot = {
        active: active.value,
        selected: selected.value,
        disabled
      };
      var propsWeControl = {
        id: id2,
        role: "option",
        tabIndex: disabled === true ? void 0 : -1,
        "aria-disabled": disabled === true ? true : void 0,
        "aria-selected": selected.value === true ? selected.value : void 0,
        disabled: void 0,
        onClick: handleClick,
        onFocus: handleFocus,
        onPointermove: handleMove,
        onMousemove: handleMove,
        onPointerleave: handleLeave,
        onMouseleave: handleLeave
      };
      return render$X({
        props: _extends$1({}, props, propsWeControl),
        slot,
        attrs,
        slots,
        name: "ListboxOption"
      });
    };
  }
});
function useTreeWalker(_ref) {
  var container = _ref.container, accept = _ref.accept, walk = _ref.walk, enabled = _ref.enabled;
  watchEffect(function() {
    var root2 = container.value;
    if (!root2)
      return;
    if (enabled !== void 0 && !enabled.value)
      return;
    var acceptNode = Object.assign(function(node) {
      return accept(node);
    }, {
      acceptNode: accept
    });
    var walker = document.createTreeWalker(root2, NodeFilter.SHOW_ELEMENT, acceptNode, false);
    while (walker.nextNode()) {
      walk(walker.currentNode);
    }
  });
}
var MenuStates;
(function(MenuStates2) {
  MenuStates2[MenuStates2["Open"] = 0] = "Open";
  MenuStates2[MenuStates2["Closed"] = 1] = "Closed";
})(MenuStates || (MenuStates = {}));
function nextFrame$1$1(cb) {
  requestAnimationFrame(function() {
    return requestAnimationFrame(cb);
  });
}
var MenuContext = /* @__PURE__ */ Symbol("MenuContext");
function useMenuContext(component) {
  var context = inject(MenuContext, null);
  if (context === null) {
    var err = new Error("<" + component + " /> is missing a parent <Menu /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useMenuContext);
    throw err;
  }
  return context;
}
var Menu$1 = /* @__PURE__ */ defineComponent({
  name: "Menu",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    }
  },
  setup: function setup13(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    var menuState = ref(MenuStates.Closed);
    var buttonRef = ref(null);
    var itemsRef = ref(null);
    var items = ref([]);
    var searchQuery = ref("");
    var activeItemIndex = ref(null);
    var api = {
      menuState,
      buttonRef,
      itemsRef,
      items,
      searchQuery,
      activeItemIndex,
      closeMenu: function closeMenu() {
        menuState.value = MenuStates.Closed;
        activeItemIndex.value = null;
      },
      openMenu: function openMenu() {
        return menuState.value = MenuStates.Open;
      },
      goToItem: function goToItem(focus, id2) {
        var nextActiveItemIndex = calculateActiveIndex(focus === Focus$1.Specific ? {
          focus: Focus$1.Specific,
          id: id2
        } : {
          focus
        }, {
          resolveItems: function resolveItems() {
            return items.value;
          },
          resolveActiveIndex: function resolveActiveIndex() {
            return activeItemIndex.value;
          },
          resolveId: function resolveId(item) {
            return item.id;
          },
          resolveDisabled: function resolveDisabled(item) {
            return item.dataRef.disabled;
          }
        });
        if (searchQuery.value === "" && activeItemIndex.value === nextActiveItemIndex)
          return;
        searchQuery.value = "";
        activeItemIndex.value = nextActiveItemIndex;
      },
      search: function search(value) {
        searchQuery.value += value.toLowerCase();
        var match3 = items.value.findIndex(function(item) {
          return item.dataRef.textValue.startsWith(searchQuery.value) && !item.dataRef.disabled;
        });
        if (match3 === -1 || match3 === activeItemIndex.value)
          return;
        activeItemIndex.value = match3;
      },
      clearSearch: function clearSearch() {
        searchQuery.value = "";
      },
      registerItem: function registerItem(id2, dataRef) {
        items.value.push({
          id: id2,
          dataRef
        });
      },
      unregisterItem: function unregisterItem(id2) {
        var nextItems = items.value.slice();
        var currentActiveItem = activeItemIndex.value !== null ? nextItems[activeItemIndex.value] : null;
        var idx = nextItems.findIndex(function(a2) {
          return a2.id === id2;
        });
        if (idx !== -1)
          nextItems.splice(idx, 1);
        items.value = nextItems;
        activeItemIndex.value = function() {
          if (idx === activeItemIndex.value)
            return null;
          if (currentActiveItem === null)
            return null;
          return nextItems.indexOf(currentActiveItem);
        }();
      }
    };
    useWindowEvent("mousedown", function(event) {
      var _dom, _dom2, _dom3;
      var target2 = event.target;
      var active = document.activeElement;
      if (menuState.value !== MenuStates.Open)
        return;
      if ((_dom = dom(buttonRef)) == null ? void 0 : _dom.contains(target2))
        return;
      if (!((_dom2 = dom(itemsRef)) == null ? void 0 : _dom2.contains(target2)))
        api.closeMenu();
      if (active !== document.body && (active == null ? void 0 : active.contains(target2)))
        return;
      if (!event.defaultPrevented)
        (_dom3 = dom(buttonRef)) == null ? void 0 : _dom3.focus({
          preventScroll: true
        });
    });
    provide(MenuContext, api);
    useOpenClosedProvider(computed(function() {
      var _match;
      return match(menuState.value, (_match = {}, _match[MenuStates.Open] = State.Open, _match[MenuStates.Closed] = State.Closed, _match));
    }));
    return function() {
      var slot = {
        open: menuState.value === MenuStates.Open
      };
      return render$X({
        props,
        slot,
        slots,
        attrs,
        name: "Menu"
      });
    };
  }
});
var MenuButton = /* @__PURE__ */ defineComponent({
  name: "MenuButton",
  props: {
    disabled: {
      type: Boolean,
      "default": false
    },
    as: {
      type: [Object, String],
      "default": "button"
    }
  },
  render: function render$116() {
    var _dom4;
    var api = useMenuContext("MenuButton");
    var slot = {
      open: api.menuState.value === MenuStates.Open
    };
    var propsWeControl = {
      ref: "el",
      id: this.id,
      type: "button",
      "aria-haspopup": true,
      "aria-controls": (_dom4 = dom(api.itemsRef)) == null ? void 0 : _dom4.id,
      "aria-expanded": this.$props.disabled ? void 0 : api.menuState.value === MenuStates.Open,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      onClick: this.handleClick
    };
    return render$X({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "MenuButton"
    });
  },
  setup: function setup14(props) {
    var api = useMenuContext("MenuButton");
    var id2 = "headlessui-menu-button-" + useId();
    function handleKeyDown(event) {
      switch (event.key) {
        case Keys.Space:
        case Keys.Enter:
        case Keys.ArrowDown:
          event.preventDefault();
          event.stopPropagation();
          api.openMenu();
          nextTick(function() {
            var _dom5;
            (_dom5 = dom(api.itemsRef)) == null ? void 0 : _dom5.focus({
              preventScroll: true
            });
            api.goToItem(Focus$1.First);
          });
          break;
        case Keys.ArrowUp:
          event.preventDefault();
          event.stopPropagation();
          api.openMenu();
          nextTick(function() {
            var _dom6;
            (_dom6 = dom(api.itemsRef)) == null ? void 0 : _dom6.focus({
              preventScroll: true
            });
            api.goToItem(Focus$1.Last);
          });
          break;
      }
    }
    function handleKeyUp(event) {
      switch (event.key) {
        case Keys.Space:
          event.preventDefault();
          break;
      }
    }
    function handleClick(event) {
      if (props.disabled)
        return;
      if (api.menuState.value === MenuStates.Open) {
        api.closeMenu();
        nextTick(function() {
          var _dom7;
          return (_dom7 = dom(api.buttonRef)) == null ? void 0 : _dom7.focus({
            preventScroll: true
          });
        });
      } else {
        event.preventDefault();
        event.stopPropagation();
        api.openMenu();
        nextFrame$1$1(function() {
          var _dom8;
          return (_dom8 = dom(api.itemsRef)) == null ? void 0 : _dom8.focus({
            preventScroll: true
          });
        });
      }
    }
    return {
      id: id2,
      el: api.buttonRef,
      handleKeyDown,
      handleKeyUp,
      handleClick
    };
  }
});
var MenuItems = /* @__PURE__ */ defineComponent({
  name: "MenuItems",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    }
  },
  render: function render$117() {
    var _api$items$value$api$, _dom9;
    var api = useMenuContext("MenuItems");
    var slot = {
      open: api.menuState.value === MenuStates.Open
    };
    var propsWeControl = {
      "aria-activedescendant": api.activeItemIndex.value === null ? void 0 : (_api$items$value$api$ = api.items.value[api.activeItemIndex.value]) == null ? void 0 : _api$items$value$api$.id,
      "aria-labelledby": (_dom9 = dom(api.buttonRef)) == null ? void 0 : _dom9.id,
      id: this.id,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      role: "menu",
      tabIndex: 0,
      ref: "el"
    };
    var passThroughProps = this.$props;
    return render$X({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      features: Features.RenderStrategy | Features.Static,
      visible: this.visible,
      name: "MenuItems"
    });
  },
  setup: function setup15() {
    var api = useMenuContext("MenuItems");
    var id2 = "headlessui-menu-items-" + useId();
    var searchDebounce = ref(null);
    useTreeWalker({
      container: computed(function() {
        return dom(api.itemsRef);
      }),
      enabled: computed(function() {
        return api.menuState.value === MenuStates.Open;
      }),
      accept: function accept(node) {
        if (node.getAttribute("role") === "menuitem")
          return NodeFilter.FILTER_REJECT;
        if (node.hasAttribute("role"))
          return NodeFilter.FILTER_SKIP;
        return NodeFilter.FILTER_ACCEPT;
      },
      walk: function walk(node) {
        node.setAttribute("role", "none");
      }
    });
    function handleKeyDown(event) {
      if (searchDebounce.value)
        clearTimeout(searchDebounce.value);
      switch (event.key) {
        case Keys.Space:
          if (api.searchQuery.value !== "") {
            event.preventDefault();
            event.stopPropagation();
            return api.search(event.key);
          }
        case Keys.Enter:
          event.preventDefault();
          event.stopPropagation();
          if (api.activeItemIndex.value !== null) {
            var _document$getElementB;
            var _id = api.items.value[api.activeItemIndex.value].id;
            (_document$getElementB = document.getElementById(_id)) == null ? void 0 : _document$getElementB.click();
          }
          api.closeMenu();
          nextTick(function() {
            var _dom10;
            return (_dom10 = dom(api.buttonRef)) == null ? void 0 : _dom10.focus({
              preventScroll: true
            });
          });
          break;
        case Keys.ArrowDown:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.Next);
        case Keys.ArrowUp:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.Previous);
        case Keys.Home:
        case Keys.PageUp:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.First);
        case Keys.End:
        case Keys.PageDown:
          event.preventDefault();
          event.stopPropagation();
          return api.goToItem(Focus$1.Last);
        case Keys.Escape:
          event.preventDefault();
          event.stopPropagation();
          api.closeMenu();
          nextTick(function() {
            var _dom11;
            return (_dom11 = dom(api.buttonRef)) == null ? void 0 : _dom11.focus({
              preventScroll: true
            });
          });
          break;
        case Keys.Tab:
          event.preventDefault();
          event.stopPropagation();
          break;
        default:
          if (event.key.length === 1) {
            api.search(event.key);
            searchDebounce.value = setTimeout(function() {
              return api.clearSearch();
            }, 350);
          }
          break;
      }
    }
    function handleKeyUp(event) {
      switch (event.key) {
        case Keys.Space:
          event.preventDefault();
          break;
      }
    }
    var usesOpenClosedState = useOpenClosed();
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return api.menuState.value === MenuStates.Open;
    });
    return {
      id: id2,
      el: api.itemsRef,
      handleKeyDown,
      handleKeyUp,
      visible
    };
  }
});
var MenuItem = /* @__PURE__ */ defineComponent({
  name: "MenuItem",
  props: {
    as: {
      type: [Object, String],
      "default": "template"
    },
    disabled: {
      type: Boolean,
      "default": false
    }
  },
  setup: function setup16(props, _ref2) {
    var slots = _ref2.slots, attrs = _ref2.attrs;
    var api = useMenuContext("MenuItem");
    var id2 = "headlessui-menu-item-" + useId();
    var active = computed(function() {
      return api.activeItemIndex.value !== null ? api.items.value[api.activeItemIndex.value].id === id2 : false;
    });
    var dataRef = ref({
      disabled: props.disabled,
      textValue: ""
    });
    onMounted(function() {
      var _document$getElementB2, _document$getElementB3;
      var textValue = (_document$getElementB2 = document.getElementById(id2)) == null ? void 0 : (_document$getElementB3 = _document$getElementB2.textContent) == null ? void 0 : _document$getElementB3.toLowerCase().trim();
      if (textValue !== void 0)
        dataRef.value.textValue = textValue;
    });
    onMounted(function() {
      return api.registerItem(id2, dataRef);
    });
    onUnmounted(function() {
      return api.unregisterItem(id2);
    });
    watchEffect(function() {
      if (api.menuState.value !== MenuStates.Open)
        return;
      if (!active.value)
        return;
      nextTick(function() {
        var _document$getElementB4;
        return (_document$getElementB4 = document.getElementById(id2)) == null ? void 0 : _document$getElementB4.scrollIntoView == null ? void 0 : _document$getElementB4.scrollIntoView({
          block: "nearest"
        });
      });
    });
    function handleClick(event) {
      if (props.disabled)
        return event.preventDefault();
      api.closeMenu();
      nextTick(function() {
        var _dom12;
        return (_dom12 = dom(api.buttonRef)) == null ? void 0 : _dom12.focus({
          preventScroll: true
        });
      });
    }
    function handleFocus() {
      if (props.disabled)
        return api.goToItem(Focus$1.Nothing);
      api.goToItem(Focus$1.Specific, id2);
    }
    function handleMove() {
      if (props.disabled)
        return;
      if (active.value)
        return;
      api.goToItem(Focus$1.Specific, id2);
    }
    function handleLeave() {
      if (props.disabled)
        return;
      if (!active.value)
        return;
      api.goToItem(Focus$1.Nothing);
    }
    return function() {
      var disabled = props.disabled;
      var slot = {
        active: active.value,
        disabled
      };
      var propsWeControl = {
        id: id2,
        role: "menuitem",
        tabIndex: disabled === true ? void 0 : -1,
        "aria-disabled": disabled === true ? true : void 0,
        onClick: handleClick,
        onFocus: handleFocus,
        onPointermove: handleMove,
        onMousemove: handleMove,
        onPointerleave: handleLeave,
        onMouseleave: handleLeave
      };
      return render$X({
        props: _extends$1({}, props, propsWeControl),
        slot,
        attrs,
        slots,
        name: "MenuItem"
      });
    };
  }
});
var PopoverStates;
(function(PopoverStates2) {
  PopoverStates2[PopoverStates2["Open"] = 0] = "Open";
  PopoverStates2[PopoverStates2["Closed"] = 1] = "Closed";
})(PopoverStates || (PopoverStates = {}));
var PopoverContext = /* @__PURE__ */ Symbol("PopoverContext");
function usePopoverContext(component) {
  var context = inject(PopoverContext, null);
  if (context === null) {
    var err = new Error("<" + component + " /> is missing a parent <" + Popover.name + " /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, usePopoverContext);
    throw err;
  }
  return context;
}
var PopoverGroupContext = /* @__PURE__ */ Symbol("PopoverGroupContext");
function usePopoverGroupContext() {
  return inject(PopoverGroupContext, null);
}
var PopoverPanelContext = /* @__PURE__ */ Symbol("PopoverPanelContext");
function usePopoverPanelContext() {
  return inject(PopoverPanelContext, null);
}
var Popover = /* @__PURE__ */ defineComponent({
  name: "Popover",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    }
  },
  setup: function setup17(props, _ref) {
    var slots = _ref.slots, attrs = _ref.attrs;
    var buttonId = "headlessui-popover-button-" + useId();
    var panelId = "headlessui-popover-panel-" + useId();
    var popoverState = ref(PopoverStates.Closed);
    var button = ref(null);
    var panel = ref(null);
    var api = {
      popoverState,
      buttonId,
      panelId,
      panel,
      button,
      togglePopover: function togglePopover() {
        var _match;
        popoverState.value = match(popoverState.value, (_match = {}, _match[PopoverStates.Open] = PopoverStates.Closed, _match[PopoverStates.Closed] = PopoverStates.Open, _match));
      },
      closePopover: function closePopover() {
        if (popoverState.value === PopoverStates.Closed)
          return;
        popoverState.value = PopoverStates.Closed;
      },
      close: function close(focusableElement) {
        api.closePopover();
        var restoreElement = function() {
          if (!focusableElement)
            return dom(api.button);
          if (focusableElement instanceof HTMLElement)
            return focusableElement;
          if (focusableElement.value instanceof HTMLElement)
            return dom(focusableElement);
          return dom(api.button);
        }();
        restoreElement == null ? void 0 : restoreElement.focus();
      }
    };
    provide(PopoverContext, api);
    useOpenClosedProvider(computed(function() {
      var _match2;
      return match(popoverState.value, (_match2 = {}, _match2[PopoverStates.Open] = State.Open, _match2[PopoverStates.Closed] = State.Closed, _match2));
    }));
    var registerBag = {
      buttonId,
      panelId,
      close: function close() {
        api.closePopover();
      }
    };
    var groupContext = usePopoverGroupContext();
    var registerPopover = groupContext == null ? void 0 : groupContext.registerPopover;
    function isFocusWithinPopoverGroup() {
      var _groupContext$isFocus, _dom, _dom2;
      return (_groupContext$isFocus = groupContext == null ? void 0 : groupContext.isFocusWithinPopoverGroup()) != null ? _groupContext$isFocus : ((_dom = dom(button)) == null ? void 0 : _dom.contains(document.activeElement)) || ((_dom2 = dom(panel)) == null ? void 0 : _dom2.contains(document.activeElement));
    }
    watchEffect(function() {
      return registerPopover == null ? void 0 : registerPopover(registerBag);
    });
    useWindowEvent("focus", function() {
      if (popoverState.value !== PopoverStates.Open)
        return;
      if (isFocusWithinPopoverGroup())
        return;
      if (!button)
        return;
      if (!panel)
        return;
      api.closePopover();
    }, true);
    useWindowEvent("mousedown", function(event) {
      var _dom3, _dom4;
      var target2 = event.target;
      if (popoverState.value !== PopoverStates.Open)
        return;
      if ((_dom3 = dom(button)) == null ? void 0 : _dom3.contains(target2))
        return;
      if ((_dom4 = dom(panel)) == null ? void 0 : _dom4.contains(target2))
        return;
      api.closePopover();
      if (!isFocusableElement(target2, FocusableMode.Loose)) {
        var _dom5;
        event.preventDefault();
        (_dom5 = dom(button)) == null ? void 0 : _dom5.focus();
      }
    });
    return function() {
      var slot = {
        open: popoverState.value === PopoverStates.Open,
        close: api.close
      };
      return render$X({
        props,
        slot,
        slots,
        attrs,
        name: "Popover"
      });
    };
  }
});
var PopoverButton = /* @__PURE__ */ defineComponent({
  name: "PopoverButton",
  props: {
    as: {
      type: [Object, String],
      "default": "button"
    },
    disabled: {
      type: [Boolean],
      "default": false
    }
  },
  render: function render$118() {
    var api = usePopoverContext("PopoverButton");
    var slot = {
      open: api.popoverState.value === PopoverStates.Open
    };
    var propsWeControl = this.isWithinPanel ? {
      type: "button",
      onKeydown: this.handleKeyDown,
      onClick: this.handleClick
    } : {
      ref: "el",
      id: api.buttonId,
      type: "button",
      "aria-expanded": this.$props.disabled ? void 0 : api.popoverState.value === PopoverStates.Open,
      "aria-controls": dom(api.panel) ? api.panelId : void 0,
      disabled: this.$props.disabled ? true : void 0,
      onKeydown: this.handleKeyDown,
      onKeyup: this.handleKeyUp,
      onClick: this.handleClick
    };
    return render$X({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "PopoverButton"
    });
  },
  setup: function setup18(props) {
    var api = usePopoverContext("PopoverButton");
    var groupContext = usePopoverGroupContext();
    var closeOthers = groupContext == null ? void 0 : groupContext.closeOthers;
    var panelContext = usePopoverPanelContext();
    var isWithinPanel = panelContext === null ? false : panelContext === api.panelId;
    var activeElementRef = ref(null);
    var previousActiveElementRef = ref(typeof window === "undefined" ? null : document.activeElement);
    useWindowEvent("focus", function() {
      previousActiveElementRef.value = activeElementRef.value;
      activeElementRef.value = document.activeElement;
    }, true);
    return {
      isWithinPanel,
      el: isWithinPanel ? null : api.button,
      handleKeyDown: function handleKeyDown(event) {
        var _dom6, _dom7;
        if (isWithinPanel) {
          if (api.popoverState.value === PopoverStates.Closed)
            return;
          switch (event.key) {
            case Keys.Space:
            case Keys.Enter:
              event.preventDefault();
              event.stopPropagation();
              api.closePopover();
              (_dom6 = dom(api.button)) == null ? void 0 : _dom6.focus();
              break;
          }
        } else {
          switch (event.key) {
            case Keys.Space:
            case Keys.Enter:
              event.preventDefault();
              event.stopPropagation();
              if (api.popoverState.value === PopoverStates.Closed)
                closeOthers == null ? void 0 : closeOthers(api.buttonId);
              api.togglePopover();
              break;
            case Keys.Escape:
              if (api.popoverState.value !== PopoverStates.Open)
                return closeOthers == null ? void 0 : closeOthers(api.buttonId);
              if (!dom(api.button))
                return;
              if (!((_dom7 = dom(api.button)) == null ? void 0 : _dom7.contains(document.activeElement)))
                return;
              api.closePopover();
              break;
            case Keys.Tab:
              if (api.popoverState.value !== PopoverStates.Open)
                return;
              if (!api.panel)
                return;
              if (!api.button)
                return;
              if (event.shiftKey) {
                var _dom8, _dom9;
                if (!previousActiveElementRef.value)
                  return;
                if ((_dom8 = dom(api.button)) == null ? void 0 : _dom8.contains(previousActiveElementRef.value))
                  return;
                if ((_dom9 = dom(api.panel)) == null ? void 0 : _dom9.contains(previousActiveElementRef.value))
                  return;
                var focusableElements = getFocusableElements();
                var previousIdx = focusableElements.indexOf(previousActiveElementRef.value);
                var buttonIdx = focusableElements.indexOf(dom(api.button));
                if (buttonIdx > previousIdx)
                  return;
                event.preventDefault();
                event.stopPropagation();
                focusIn(dom(api.panel), Focus.Last);
              } else {
                event.preventDefault();
                event.stopPropagation();
                focusIn(dom(api.panel), Focus.First);
              }
              break;
          }
        }
      },
      handleKeyUp: function handleKeyUp(event) {
        var _dom10, _dom11;
        if (isWithinPanel)
          return;
        if (event.key === Keys.Space) {
          event.preventDefault();
        }
        if (api.popoverState.value !== PopoverStates.Open)
          return;
        if (!api.panel)
          return;
        if (!api.button)
          return;
        switch (event.key) {
          case Keys.Tab:
            if (!previousActiveElementRef.value)
              return;
            if ((_dom10 = dom(api.button)) == null ? void 0 : _dom10.contains(previousActiveElementRef.value))
              return;
            if ((_dom11 = dom(api.panel)) == null ? void 0 : _dom11.contains(previousActiveElementRef.value))
              return;
            var focusableElements = getFocusableElements();
            var previousIdx = focusableElements.indexOf(previousActiveElementRef.value);
            var buttonIdx = focusableElements.indexOf(dom(api.button));
            if (buttonIdx > previousIdx)
              return;
            event.preventDefault();
            event.stopPropagation();
            focusIn(dom(api.panel), Focus.Last);
            break;
        }
      },
      handleClick: function handleClick() {
        if (props.disabled)
          return;
        if (isWithinPanel) {
          var _dom12;
          api.closePopover();
          (_dom12 = dom(api.button)) == null ? void 0 : _dom12.focus();
        } else {
          var _dom13;
          if (api.popoverState.value === PopoverStates.Closed)
            closeOthers == null ? void 0 : closeOthers(api.buttonId);
          (_dom13 = dom(api.button)) == null ? void 0 : _dom13.focus();
          api.togglePopover();
        }
      },
      handleFocus: function handleFocus() {
      }
    };
  }
});
var PopoverPanel = /* @__PURE__ */ defineComponent({
  name: "PopoverPanel",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    "static": {
      type: Boolean,
      "default": false
    },
    unmount: {
      type: Boolean,
      "default": true
    },
    focus: {
      type: Boolean,
      "default": false
    }
  },
  render: function render$119() {
    var api = usePopoverContext("PopoverPanel");
    var slot = {
      open: api.popoverState.value === PopoverStates.Open,
      close: api.close
    };
    var propsWeControl = {
      ref: "el",
      id: this.id,
      onKeydown: this.handleKeyDown
    };
    return render$X({
      props: _extends$1({}, this.$props, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      features: Features.RenderStrategy | Features.Static,
      visible: this.visible,
      name: "PopoverPanel"
    });
  },
  setup: function setup19(props) {
    var focus = props.focus;
    var api = usePopoverContext("PopoverPanel");
    provide(PopoverPanelContext, api.panelId);
    onUnmounted(function() {
      api.panel.value = null;
    });
    watchEffect(function() {
      var _dom14;
      if (!focus)
        return;
      if (api.popoverState.value !== PopoverStates.Open)
        return;
      if (!api.panel)
        return;
      var activeElement = document.activeElement;
      if ((_dom14 = dom(api.panel)) == null ? void 0 : _dom14.contains(activeElement))
        return;
      focusIn(dom(api.panel), Focus.First);
    });
    useWindowEvent("keydown", function(event) {
      var _dom15;
      if (api.popoverState.value !== PopoverStates.Open)
        return;
      if (!dom(api.panel))
        return;
      if (event.key !== Keys.Tab)
        return;
      if (!document.activeElement)
        return;
      if (!((_dom15 = dom(api.panel)) == null ? void 0 : _dom15.contains(document.activeElement)))
        return;
      event.preventDefault();
      var result = focusIn(dom(api.panel), event.shiftKey ? Focus.Previous : Focus.Next);
      if (result === FocusResult.Underflow) {
        var _dom16;
        return (_dom16 = dom(api.button)) == null ? void 0 : _dom16.focus();
      } else if (result === FocusResult.Overflow) {
        if (!dom(api.button))
          return;
        var elements = getFocusableElements();
        var buttonIdx = elements.indexOf(dom(api.button));
        var nextElements = elements.splice(buttonIdx + 1).filter(function(element) {
          var _dom17;
          return !((_dom17 = dom(api.panel)) == null ? void 0 : _dom17.contains(element));
        });
        if (focusIn(nextElements, Focus.First) === FocusResult.Error) {
          focusIn(document.body, Focus.First);
        }
      }
    });
    useWindowEvent("focus", function() {
      var _dom18;
      if (!focus)
        return;
      if (api.popoverState.value !== PopoverStates.Open)
        return;
      if (!dom(api.panel))
        return;
      if ((_dom18 = dom(api.panel)) == null ? void 0 : _dom18.contains(document.activeElement))
        return;
      api.closePopover();
    }, true);
    var usesOpenClosedState = useOpenClosed();
    var visible = computed(function() {
      if (usesOpenClosedState !== null) {
        return usesOpenClosedState.value === State.Open;
      }
      return api.popoverState.value === PopoverStates.Open;
    });
    return {
      id: api.panelId,
      el: api.panel,
      handleKeyDown: function handleKeyDown(event) {
        var _dom19, _dom20;
        switch (event.key) {
          case Keys.Escape:
            if (api.popoverState.value !== PopoverStates.Open)
              return;
            if (!dom(api.panel))
              return;
            if (!((_dom19 = dom(api.panel)) == null ? void 0 : _dom19.contains(document.activeElement)))
              return;
            event.preventDefault();
            api.closePopover();
            (_dom20 = dom(api.button)) == null ? void 0 : _dom20.focus();
            break;
        }
      },
      visible
    };
  }
});
var LabelContext = /* @__PURE__ */ Symbol("LabelContext");
function useLabelContext() {
  var context = inject(LabelContext, null);
  if (context === null) {
    var err = new Error("You used a <Label /> component, but it is not inside a parent.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useLabelContext);
    throw err;
  }
  return context;
}
function useLabels(_temp) {
  var _ref = _temp === void 0 ? {} : _temp, _ref$slot = _ref.slot, slot = _ref$slot === void 0 ? {} : _ref$slot, _ref$name = _ref.name, name2 = _ref$name === void 0 ? "Label" : _ref$name, _ref$props = _ref.props, props = _ref$props === void 0 ? {} : _ref$props;
  var labelIds = ref([]);
  function register(value) {
    labelIds.value.push(value);
    return function() {
      var idx = labelIds.value.indexOf(value);
      if (idx === -1)
        return;
      labelIds.value.splice(idx, 1);
    };
  }
  provide(LabelContext, {
    register,
    slot,
    name: name2,
    props
  });
  return computed(function() {
    return labelIds.value.length > 0 ? labelIds.value.join(" ") : void 0;
  });
}
var Label = /* @__PURE__ */ defineComponent({
  name: "Label",
  props: {
    as: {
      type: [Object, String],
      "default": "label"
    },
    passive: {
      type: [Boolean],
      "default": false
    }
  },
  render: function render$120() {
    var _this$context = this.context, _this$context$name = _this$context.name, name2 = _this$context$name === void 0 ? "Label" : _this$context$name, _this$context$slot = _this$context.slot, slot = _this$context$slot === void 0 ? {} : _this$context$slot, _this$context$props = _this$context.props, props = _this$context$props === void 0 ? {} : _this$context$props;
    var _this$$props = this.$props, passive = _this$$props.passive, passThroughProps = _objectWithoutPropertiesLoose(_this$$props, ["passive"]);
    var propsWeControl = _extends$1({}, Object.entries(props).reduce(function(acc, _ref2) {
      var _Object$assign;
      var key = _ref2[0], value = _ref2[1];
      return Object.assign(acc, (_Object$assign = {}, _Object$assign[key] = unref(value), _Object$assign));
    }, {}), {
      id: this.id
    });
    var allProps = _extends$1({}, passThroughProps, propsWeControl);
    if (passive)
      delete allProps["onClick"];
    return render$X({
      props: allProps,
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: name2
    });
  },
  setup: function setup20() {
    var context = useLabelContext();
    var id2 = "headlessui-label-" + useId();
    onMounted(function() {
      return onUnmounted(context.register(id2));
    });
    return {
      id: id2,
      context
    };
  }
});
var RadioGroupContext = /* @__PURE__ */ Symbol("RadioGroupContext");
function useRadioGroupContext(component) {
  var context = inject(RadioGroupContext, null);
  if (context === null) {
    var err = new Error("<" + component + " /> is missing a parent <RadioGroup /> component.");
    if (Error.captureStackTrace)
      Error.captureStackTrace(err, useRadioGroupContext);
    throw err;
  }
  return context;
}
var RadioGroup = /* @__PURE__ */ defineComponent({
  name: "RadioGroup",
  emits: ["update:modelValue"],
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    disabled: {
      type: [Boolean],
      "default": false
    },
    modelValue: {
      type: [Object, String, Number, Boolean]
    }
  },
  render: function render$121() {
    var _this$$props = this.$props, passThroughProps = _objectWithoutPropertiesLoose(_this$$props, ["modelValue", "disabled"]);
    var propsWeControl = {
      ref: "el",
      id: this.id,
      role: "radiogroup",
      "aria-labelledby": this.labelledby,
      "aria-describedby": this.describedby,
      onKeydown: this.handleKeyDown
    };
    return render$X({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot: {},
      attrs: this.$attrs,
      slots: this.$slots,
      name: "RadioGroup"
    });
  },
  setup: function setup21(props, _ref) {
    var emit2 = _ref.emit;
    var radioGroupRef = ref(null);
    var options2 = ref([]);
    var labelledby = useLabels({
      name: "RadioGroupLabel"
    });
    var describedby = useDescriptions({
      name: "RadioGroupDescription"
    });
    var value = computed(function() {
      return props.modelValue;
    });
    var api = {
      options: options2,
      value,
      disabled: computed(function() {
        return props.disabled;
      }),
      firstOption: computed(function() {
        return options2.value.find(function(option) {
          if (option.propsRef.disabled)
            return false;
          return true;
        });
      }),
      containsCheckedOption: computed(function() {
        return options2.value.some(function(option) {
          return toRaw(option.propsRef.value) === toRaw(props.modelValue);
        });
      }),
      change: function change(nextValue) {
        var _options$value$find;
        if (props.disabled)
          return false;
        if (value.value === nextValue)
          return false;
        var nextOption = (_options$value$find = options2.value.find(function(option) {
          return toRaw(option.propsRef.value) === toRaw(nextValue);
        })) == null ? void 0 : _options$value$find.propsRef;
        if (nextOption == null ? void 0 : nextOption.disabled)
          return false;
        emit2("update:modelValue", nextValue);
        return true;
      },
      registerOption: function registerOption(action) {
        var _radioGroupRef$value;
        var orderMap = Array.from((_radioGroupRef$value = radioGroupRef.value) == null ? void 0 : _radioGroupRef$value.querySelectorAll('[id^="headlessui-radiogroup-option-"]')).reduce(function(lookup, element, index2) {
          var _Object$assign;
          return Object.assign(lookup, (_Object$assign = {}, _Object$assign[element.id] = index2, _Object$assign));
        }, {});
        options2.value.push(action);
        options2.value.sort(function(a2, z) {
          return orderMap[a2.id] - orderMap[z.id];
        });
      },
      unregisterOption: function unregisterOption(id3) {
        var idx = options2.value.findIndex(function(radio) {
          return radio.id === id3;
        });
        if (idx === -1)
          return;
        options2.value.splice(idx, 1);
      }
    };
    provide(RadioGroupContext, api);
    useTreeWalker({
      container: computed(function() {
        return dom(radioGroupRef);
      }),
      accept: function accept(node) {
        if (node.getAttribute("role") === "radio")
          return NodeFilter.FILTER_REJECT;
        if (node.hasAttribute("role"))
          return NodeFilter.FILTER_SKIP;
        return NodeFilter.FILTER_ACCEPT;
      },
      walk: function walk(node) {
        node.setAttribute("role", "none");
      }
    });
    function handleKeyDown(event) {
      if (!radioGroupRef.value)
        return;
      if (!radioGroupRef.value.contains(event.target))
        return;
      var all = options2.value.filter(function(option) {
        return option.propsRef.disabled === false;
      }).map(function(radio) {
        return radio.element;
      });
      switch (event.key) {
        case Keys.ArrowLeft:
        case Keys.ArrowUp:
          {
            event.preventDefault();
            event.stopPropagation();
            var result = focusIn(all, Focus.Previous | Focus.WrapAround);
            if (result === FocusResult.Success) {
              var activeOption = options2.value.find(function(option) {
                return option.element === document.activeElement;
              });
              if (activeOption)
                api.change(activeOption.propsRef.value);
            }
          }
          break;
        case Keys.ArrowRight:
        case Keys.ArrowDown:
          {
            event.preventDefault();
            event.stopPropagation();
            var _result = focusIn(all, Focus.Next | Focus.WrapAround);
            if (_result === FocusResult.Success) {
              var _activeOption = options2.value.find(function(option) {
                return option.element === document.activeElement;
              });
              if (_activeOption)
                api.change(_activeOption.propsRef.value);
            }
          }
          break;
        case Keys.Space:
          {
            event.preventDefault();
            event.stopPropagation();
            var _activeOption2 = options2.value.find(function(option) {
              return option.element === document.activeElement;
            });
            if (_activeOption2)
              api.change(_activeOption2.propsRef.value);
          }
          break;
      }
    }
    var id2 = "headlessui-radiogroup-" + useId();
    return {
      id: id2,
      labelledby,
      describedby,
      el: radioGroupRef,
      handleKeyDown
    };
  }
});
var OptionState;
(function(OptionState2) {
  OptionState2[OptionState2["Empty"] = 1] = "Empty";
  OptionState2[OptionState2["Active"] = 2] = "Active";
})(OptionState || (OptionState = {}));
var RadioGroupOption = /* @__PURE__ */ defineComponent({
  name: "RadioGroupOption",
  props: {
    as: {
      type: [Object, String],
      "default": "div"
    },
    value: {
      type: [Object, String, Number, Boolean]
    },
    disabled: {
      type: Boolean,
      "default": false
    }
  },
  render: function render$122() {
    var _this$$props2 = this.$props, passThroughProps = _objectWithoutPropertiesLoose(_this$$props2, ["value", "disabled"]);
    var slot = {
      checked: this.checked,
      disabled: this.disabled,
      active: Boolean(this.state & OptionState.Active)
    };
    var propsWeControl = {
      id: this.id,
      ref: "el",
      role: "radio",
      "aria-checked": this.checked ? "true" : "false",
      "aria-labelledby": this.labelledby,
      "aria-describedby": this.describedby,
      "aria-disabled": this.disabled ? true : void 0,
      tabIndex: this.tabIndex,
      onClick: this.disabled ? void 0 : this.handleClick,
      onFocus: this.disabled ? void 0 : this.handleFocus,
      onBlur: this.disabled ? void 0 : this.handleBlur
    };
    return render$X({
      props: _extends$1({}, passThroughProps, propsWeControl),
      slot,
      attrs: this.$attrs,
      slots: this.$slots,
      name: "RadioGroupOption"
    });
  },
  setup: function setup22(props) {
    var api = useRadioGroupContext("RadioGroupOption");
    var id2 = "headlessui-radiogroup-option-" + useId();
    var labelledby = useLabels({
      name: "RadioGroupLabel"
    });
    var describedby = useDescriptions({
      name: "RadioGroupDescription"
    });
    var optionRef = ref(null);
    var propsRef = computed(function() {
      return {
        value: props.value,
        disabled: props.disabled
      };
    });
    var state = ref(OptionState.Empty);
    onMounted(function() {
      return api.registerOption({
        id: id2,
        element: optionRef,
        propsRef
      });
    });
    onUnmounted(function() {
      return api.unregisterOption(id2);
    });
    var isFirstOption = computed(function() {
      var _api$firstOption$valu;
      return ((_api$firstOption$valu = api.firstOption.value) == null ? void 0 : _api$firstOption$valu.id) === id2;
    });
    var disabled = computed(function() {
      return api.disabled.value || props.disabled;
    });
    var checked = computed(function() {
      return toRaw(api.value.value) === toRaw(props.value);
    });
    return {
      id: id2,
      el: optionRef,
      labelledby,
      describedby,
      state,
      disabled,
      checked,
      tabIndex: computed(function() {
        if (disabled.value)
          return -1;
        if (checked.value)
          return 0;
        if (!api.containsCheckedOption.value && isFirstOption.value)
          return 0;
        return -1;
      }),
      handleClick: function handleClick() {
        var _optionRef$value;
        if (!api.change(props.value))
          return;
        state.value |= OptionState.Active;
        (_optionRef$value = optionRef.value) == null ? void 0 : _optionRef$value.focus();
      },
      handleFocus: function handleFocus() {
        state.value |= OptionState.Active;
      },
      handleBlur: function handleBlur() {
        state.value &= ~OptionState.Active;
      }
    };
  }
});
var RadioGroupLabel = Label;
var Reason;
(function(Reason2) {
  Reason2["Finished"] = "finished";
  Reason2["Cancelled"] = "cancelled";
})(Reason || (Reason = {}));
var TreeStates;
(function(TreeStates2) {
  TreeStates2["Visible"] = "visible";
  TreeStates2["Hidden"] = "hidden";
})(TreeStates || (TreeStates = {}));
Features.RenderStrategy;
var commonjsGlobal$1 = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs$1(x2) {
  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
}
function getAugmentedNamespace(n) {
  if (n.__esModule)
    return n;
  var f2 = n.default;
  if (typeof f2 == "function") {
    var a2 = function a3() {
      if (this instanceof a3) {
        var args = [null];
        args.push.apply(args, arguments);
        var Ctor = Function.bind.apply(f2, args);
        return new Ctor();
      }
      return f2.apply(this, arguments);
    };
    a2.prototype = f2.prototype;
  } else
    a2 = {};
  Object.defineProperty(a2, "__esModule", { value: true });
  Object.keys(n).forEach(function(k) {
    var d2 = Object.getOwnPropertyDescriptor(n, k);
    Object.defineProperty(a2, k, d2.get ? d2 : {
      enumerable: true,
      get: function() {
        return n[k];
      }
    });
  });
  return a2;
}
var lodashExports = {};
var lodash = {
  get exports() {
    return lodashExports;
  },
  set exports(v) {
    lodashExports = v;
  }
};
/**
 * @license
 * Lodash <https://lodash.com/>
 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
 * Released under MIT license <https://lodash.com/license>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 */
(function(module, exports) {
  (function() {
    var undefined$1;
    var VERSION2 = "4.17.21";
    var LARGE_ARRAY_SIZE = 200;
    var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
    var HASH_UNDEFINED = "__lodash_hash_undefined__";
    var MAX_MEMOIZE_SIZE = 500;
    var PLACEHOLDER = "__lodash_placeholder__";
    var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
    var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
    var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;
    var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "...";
    var HOT_COUNT = 800, HOT_SPAN = 16;
    var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;
    var INFINITY2 = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;
    var MAX_ARRAY_LENGTH2 = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH2 - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH2 >>> 1;
    var wrapFlags = [
      ["ary", WRAP_ARY_FLAG],
      ["bind", WRAP_BIND_FLAG],
      ["bindKey", WRAP_BIND_KEY_FLAG],
      ["curry", WRAP_CURRY_FLAG],
      ["curryRight", WRAP_CURRY_RIGHT_FLAG],
      ["flip", WRAP_FLIP_FLAG],
      ["partial", WRAP_PARTIAL_FLAG],
      ["partialRight", WRAP_PARTIAL_RIGHT_FLAG],
      ["rearg", WRAP_REARG_FLAG]
    ];
    var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag2 = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]";
    var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
    var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
    var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
    var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g;
    var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);
    var reTrimStart = /^\s+/;
    var reWhitespace = /\s/;
    var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /;
    var reAsciiWord2 = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
    var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
    var reEscapeChar = /\\(\\)?/g;
    var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
    var reFlags = /\w*$/;
    var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
    var reIsBinary = /^0b[01]+$/i;
    var reIsHostCtor = /^\[object .+?Constructor\]$/;
    var reIsOctal = /^0o[0-7]+$/i;
    var reIsUint = /^(?:0|[1-9]\d*)$/;
    var reLatin2 = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
    var reNoMatch = /($^)/;
    var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
    var rsAstralRange2 = "\\ud800-\\udfff", rsComboMarksRange2 = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange2 = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange2 + reComboHalfMarksRange + rsComboSymbolsRange2, rsDingbatRange2 = "\\u2700-\\u27bf", rsLowerRange2 = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange2 = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange2 = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange2 = "\\u2000-\\u206f", rsSpaceRange2 = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange2 = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange2 = "\\ufe0e\\ufe0f", rsBreakRange2 = rsMathOpRange2 + rsNonCharRange2 + rsPunctuationRange2 + rsSpaceRange2;
    var rsApos2 = "['’]", rsAstral2 = "[" + rsAstralRange2 + "]", rsBreak2 = "[" + rsBreakRange2 + "]", rsCombo2 = "[" + rsComboRange + "]", rsDigits2 = "\\d+", rsDingbat2 = "[" + rsDingbatRange2 + "]", rsLower2 = "[" + rsLowerRange2 + "]", rsMisc2 = "[^" + rsAstralRange2 + rsBreakRange2 + rsDigits2 + rsDingbatRange2 + rsLowerRange2 + rsUpperRange2 + "]", rsFitz2 = "\\ud83c[\\udffb-\\udfff]", rsModifier2 = "(?:" + rsCombo2 + "|" + rsFitz2 + ")", rsNonAstral2 = "[^" + rsAstralRange2 + "]", rsRegional2 = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair2 = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper2 = "[" + rsUpperRange2 + "]", rsZWJ2 = "\\u200d";
    var rsMiscLower = "(?:" + rsLower2 + "|" + rsMisc2 + ")", rsMiscUpper = "(?:" + rsUpper2 + "|" + rsMisc2 + ")", rsOptContrLower = "(?:" + rsApos2 + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos2 + "(?:D|LL|M|RE|S|T|VE))?", reOptMod2 = rsModifier2 + "?", rsOptVar2 = "[" + rsVarRange2 + "]?", rsOptJoin2 = "(?:" + rsZWJ2 + "(?:" + [rsNonAstral2, rsRegional2, rsSurrPair2].join("|") + ")" + rsOptVar2 + reOptMod2 + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq2 = rsOptVar2 + reOptMod2 + rsOptJoin2, rsEmoji2 = "(?:" + [rsDingbat2, rsRegional2, rsSurrPair2].join("|") + ")" + rsSeq2, rsSymbol2 = "(?:" + [rsNonAstral2 + rsCombo2 + "?", rsCombo2, rsRegional2, rsSurrPair2, rsAstral2].join("|") + ")";
    var reApos2 = RegExp(rsApos2, "g");
    var reComboMark2 = RegExp(rsCombo2, "g");
    var reUnicode2 = RegExp(rsFitz2 + "(?=" + rsFitz2 + ")|" + rsSymbol2 + rsSeq2, "g");
    var reUnicodeWord2 = RegExp([
      rsUpper2 + "?" + rsLower2 + "+" + rsOptContrLower + "(?=" + [rsBreak2, rsUpper2, "$"].join("|") + ")",
      rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak2, rsUpper2 + rsMiscLower, "$"].join("|") + ")",
      rsUpper2 + "?" + rsMiscLower + "+" + rsOptContrLower,
      rsUpper2 + "+" + rsOptContrUpper,
      rsOrdUpper,
      rsOrdLower,
      rsDigits2,
      rsEmoji2
    ].join("|"), "g");
    var reHasUnicode2 = RegExp("[" + rsZWJ2 + rsAstralRange2 + rsComboRange + rsVarRange2 + "]");
    var reHasUnicodeWord2 = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
    var contextProps = [
      "Array",
      "Buffer",
      "DataView",
      "Date",
      "Error",
      "Float32Array",
      "Float64Array",
      "Function",
      "Int8Array",
      "Int16Array",
      "Int32Array",
      "Map",
      "Math",
      "Object",
      "Promise",
      "RegExp",
      "Set",
      "String",
      "Symbol",
      "TypeError",
      "Uint8Array",
      "Uint8ClampedArray",
      "Uint16Array",
      "Uint32Array",
      "WeakMap",
      "_",
      "clearTimeout",
      "isFinite",
      "parseInt",
      "setTimeout"
    ];
    var templateCounter = -1;
    var typedArrayTags = {};
    typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
    typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
    var cloneableTags = {};
    cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag2] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
    cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
    var deburredLetters2 = {
      // Latin-1 Supplement block.
      "À": "A",
      "Á": "A",
      "Â": "A",
      "Ã": "A",
      "Ä": "A",
      "Å": "A",
      "à": "a",
      "á": "a",
      "â": "a",
      "ã": "a",
      "ä": "a",
      "å": "a",
      "Ç": "C",
      "ç": "c",
      "Ð": "D",
      "ð": "d",
      "È": "E",
      "É": "E",
      "Ê": "E",
      "Ë": "E",
      "è": "e",
      "é": "e",
      "ê": "e",
      "ë": "e",
      "Ì": "I",
      "Í": "I",
      "Î": "I",
      "Ï": "I",
      "ì": "i",
      "í": "i",
      "î": "i",
      "ï": "i",
      "Ñ": "N",
      "ñ": "n",
      "Ò": "O",
      "Ó": "O",
      "Ô": "O",
      "Õ": "O",
      "Ö": "O",
      "Ø": "O",
      "ò": "o",
      "ó": "o",
      "ô": "o",
      "õ": "o",
      "ö": "o",
      "ø": "o",
      "Ù": "U",
      "Ú": "U",
      "Û": "U",
      "Ü": "U",
      "ù": "u",
      "ú": "u",
      "û": "u",
      "ü": "u",
      "Ý": "Y",
      "ý": "y",
      "ÿ": "y",
      "Æ": "Ae",
      "æ": "ae",
      "Þ": "Th",
      "þ": "th",
      "ß": "ss",
      // Latin Extended-A block.
      "Ā": "A",
      "Ă": "A",
      "Ą": "A",
      "ā": "a",
      "ă": "a",
      "ą": "a",
      "Ć": "C",
      "Ĉ": "C",
      "Ċ": "C",
      "Č": "C",
      "ć": "c",
      "ĉ": "c",
      "ċ": "c",
      "č": "c",
      "Ď": "D",
      "Đ": "D",
      "ď": "d",
      "đ": "d",
      "Ē": "E",
      "Ĕ": "E",
      "Ė": "E",
      "Ę": "E",
      "Ě": "E",
      "ē": "e",
      "ĕ": "e",
      "ė": "e",
      "ę": "e",
      "ě": "e",
      "Ĝ": "G",
      "Ğ": "G",
      "Ġ": "G",
      "Ģ": "G",
      "ĝ": "g",
      "ğ": "g",
      "ġ": "g",
      "ģ": "g",
      "Ĥ": "H",
      "Ħ": "H",
      "ĥ": "h",
      "ħ": "h",
      "Ĩ": "I",
      "Ī": "I",
      "Ĭ": "I",
      "Į": "I",
      "İ": "I",
      "ĩ": "i",
      "ī": "i",
      "ĭ": "i",
      "į": "i",
      "ı": "i",
      "Ĵ": "J",
      "ĵ": "j",
      "Ķ": "K",
      "ķ": "k",
      "ĸ": "k",
      "Ĺ": "L",
      "Ļ": "L",
      "Ľ": "L",
      "Ŀ": "L",
      "Ł": "L",
      "ĺ": "l",
      "ļ": "l",
      "ľ": "l",
      "ŀ": "l",
      "ł": "l",
      "Ń": "N",
      "Ņ": "N",
      "Ň": "N",
      "Ŋ": "N",
      "ń": "n",
      "ņ": "n",
      "ň": "n",
      "ŋ": "n",
      "Ō": "O",
      "Ŏ": "O",
      "Ő": "O",
      "ō": "o",
      "ŏ": "o",
      "ő": "o",
      "Ŕ": "R",
      "Ŗ": "R",
      "Ř": "R",
      "ŕ": "r",
      "ŗ": "r",
      "ř": "r",
      "Ś": "S",
      "Ŝ": "S",
      "Ş": "S",
      "Š": "S",
      "ś": "s",
      "ŝ": "s",
      "ş": "s",
      "š": "s",
      "Ţ": "T",
      "Ť": "T",
      "Ŧ": "T",
      "ţ": "t",
      "ť": "t",
      "ŧ": "t",
      "Ũ": "U",
      "Ū": "U",
      "Ŭ": "U",
      "Ů": "U",
      "Ű": "U",
      "Ų": "U",
      "ũ": "u",
      "ū": "u",
      "ŭ": "u",
      "ů": "u",
      "ű": "u",
      "ų": "u",
      "Ŵ": "W",
      "ŵ": "w",
      "Ŷ": "Y",
      "ŷ": "y",
      "Ÿ": "Y",
      "Ź": "Z",
      "Ż": "Z",
      "Ž": "Z",
      "ź": "z",
      "ż": "z",
      "ž": "z",
      "Ĳ": "IJ",
      "ĳ": "ij",
      "Œ": "Oe",
      "œ": "oe",
      "ŉ": "'n",
      "ſ": "s"
    };
    var htmlEscapes2 = {
      "&": "&amp;",
      "<": "&lt;",
      ">": "&gt;",
      '"': "&quot;",
      "'": "&#39;"
    };
    var htmlUnescapes = {
      "&amp;": "&",
      "&lt;": "<",
      "&gt;": ">",
      "&quot;": '"',
      "&#39;": "'"
    };
    var stringEscapes = {
      "\\": "\\",
      "'": "'",
      "\n": "n",
      "\r": "r",
      "\u2028": "u2028",
      "\u2029": "u2029"
    };
    var freeParseFloat = parseFloat, freeParseInt = parseInt;
    var freeGlobal2 = typeof commonjsGlobal$1 == "object" && commonjsGlobal$1 && commonjsGlobal$1.Object === Object && commonjsGlobal$1;
    var freeSelf2 = typeof self == "object" && self && self.Object === Object && self;
    var root2 = freeGlobal2 || freeSelf2 || Function("return this")();
    var freeExports = exports && !exports.nodeType && exports;
    var freeModule = freeExports && true && module && !module.nodeType && module;
    var moduleExports = freeModule && freeModule.exports === freeExports;
    var freeProcess = moduleExports && freeGlobal2.process;
    var nodeUtil = function() {
      try {
        var types = freeModule && freeModule.require && freeModule.require("util").types;
        if (types) {
          return types;
        }
        return freeProcess && freeProcess.binding && freeProcess.binding("util");
      } catch (e) {
      }
    }();
    var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
    function apply2(func, thisArg, args) {
      switch (args.length) {
        case 0:
          return func.call(thisArg);
        case 1:
          return func.call(thisArg, args[0]);
        case 2:
          return func.call(thisArg, args[0], args[1]);
        case 3:
          return func.call(thisArg, args[0], args[1], args[2]);
      }
      return func.apply(thisArg, args);
    }
    function arrayAggregator(array, setter, iteratee, accumulator) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        var value = array[index2];
        setter(accumulator, value, iteratee(value), array);
      }
      return accumulator;
    }
    function arrayEach(array, iteratee) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (iteratee(array[index2], index2, array) === false) {
          break;
        }
      }
      return array;
    }
    function arrayEachRight(array, iteratee) {
      var length2 = array == null ? 0 : array.length;
      while (length2--) {
        if (iteratee(array[length2], length2, array) === false) {
          break;
        }
      }
      return array;
    }
    function arrayEvery(array, predicate) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (!predicate(array[index2], index2, array)) {
          return false;
        }
      }
      return true;
    }
    function arrayFilter(array, predicate) {
      var index2 = -1, length2 = array == null ? 0 : array.length, resIndex = 0, result = [];
      while (++index2 < length2) {
        var value = array[index2];
        if (predicate(value, index2, array)) {
          result[resIndex++] = value;
        }
      }
      return result;
    }
    function arrayIncludes(array, value) {
      var length2 = array == null ? 0 : array.length;
      return !!length2 && baseIndexOf(array, value, 0) > -1;
    }
    function arrayIncludesWith(array, value, comparator2) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (comparator2(value, array[index2])) {
          return true;
        }
      }
      return false;
    }
    function arrayMap(array, iteratee) {
      var index2 = -1, length2 = array == null ? 0 : array.length, result = Array(length2);
      while (++index2 < length2) {
        result[index2] = iteratee(array[index2], index2, array);
      }
      return result;
    }
    function arrayPush(array, values) {
      var index2 = -1, length2 = values.length, offset2 = array.length;
      while (++index2 < length2) {
        array[offset2 + index2] = values[index2];
      }
      return array;
    }
    function arrayReduce2(array, iteratee, accumulator, initAccum) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      if (initAccum && length2) {
        accumulator = array[++index2];
      }
      while (++index2 < length2) {
        accumulator = iteratee(accumulator, array[index2], index2, array);
      }
      return accumulator;
    }
    function arrayReduceRight(array, iteratee, accumulator, initAccum) {
      var length2 = array == null ? 0 : array.length;
      if (initAccum && length2) {
        accumulator = array[--length2];
      }
      while (length2--) {
        accumulator = iteratee(accumulator, array[length2], length2, array);
      }
      return accumulator;
    }
    function arraySome(array, predicate) {
      var index2 = -1, length2 = array == null ? 0 : array.length;
      while (++index2 < length2) {
        if (predicate(array[index2], index2, array)) {
          return true;
        }
      }
      return false;
    }
    var asciiSize = baseProperty("length");
    function asciiToArray2(string) {
      return string.split("");
    }
    function asciiWords2(string) {
      return string.match(reAsciiWord2) || [];
    }
    function baseFindKey(collection, predicate, eachFunc) {
      var result;
      eachFunc(collection, function(value, key, collection2) {
        if (predicate(value, key, collection2)) {
          result = key;
          return false;
        }
      });
      return result;
    }
    function baseFindIndex(array, predicate, fromIndex, fromRight) {
      var length2 = array.length, index2 = fromIndex + (fromRight ? 1 : -1);
      while (fromRight ? index2-- : ++index2 < length2) {
        if (predicate(array[index2], index2, array)) {
          return index2;
        }
      }
      return -1;
    }
    function baseIndexOf(array, value, fromIndex) {
      return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
    }
    function baseIndexOfWith(array, value, fromIndex, comparator2) {
      var index2 = fromIndex - 1, length2 = array.length;
      while (++index2 < length2) {
        if (comparator2(array[index2], value)) {
          return index2;
        }
      }
      return -1;
    }
    function baseIsNaN(value) {
      return value !== value;
    }
    function baseMean(array, iteratee) {
      var length2 = array == null ? 0 : array.length;
      return length2 ? baseSum(array, iteratee) / length2 : NAN;
    }
    function baseProperty(key) {
      return function(object) {
        return object == null ? undefined$1 : object[key];
      };
    }
    function basePropertyOf2(object) {
      return function(key) {
        return object == null ? undefined$1 : object[key];
      };
    }
    function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
      eachFunc(collection, function(value, index2, collection2) {
        accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index2, collection2);
      });
      return accumulator;
    }
    function baseSortBy(array, comparer) {
      var length2 = array.length;
      array.sort(comparer);
      while (length2--) {
        array[length2] = array[length2].value;
      }
      return array;
    }
    function baseSum(array, iteratee) {
      var result, index2 = -1, length2 = array.length;
      while (++index2 < length2) {
        var current = iteratee(array[index2]);
        if (current !== undefined$1) {
          result = result === undefined$1 ? current : result + current;
        }
      }
      return result;
    }
    function baseTimes(n, iteratee) {
      var index2 = -1, result = Array(n);
      while (++index2 < n) {
        result[index2] = iteratee(index2);
      }
      return result;
    }
    function baseToPairs(object, props) {
      return arrayMap(props, function(key) {
        return [key, object[key]];
      });
    }
    function baseTrim(string) {
      return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
    }
    function baseUnary(func) {
      return function(value) {
        return func(value);
      };
    }
    function baseValues(object, props) {
      return arrayMap(props, function(key) {
        return object[key];
      });
    }
    function cacheHas(cache2, key) {
      return cache2.has(key);
    }
    function charsStartIndex(strSymbols, chrSymbols) {
      var index2 = -1, length2 = strSymbols.length;
      while (++index2 < length2 && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) {
      }
      return index2;
    }
    function charsEndIndex(strSymbols, chrSymbols) {
      var index2 = strSymbols.length;
      while (index2-- && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) {
      }
      return index2;
    }
    function countHolders(array, placeholder) {
      var length2 = array.length, result = 0;
      while (length2--) {
        if (array[length2] === placeholder) {
          ++result;
        }
      }
      return result;
    }
    var deburrLetter2 = basePropertyOf2(deburredLetters2);
    var escapeHtmlChar = basePropertyOf2(htmlEscapes2);
    function escapeStringChar(chr) {
      return "\\" + stringEscapes[chr];
    }
    function getValue2(object, key) {
      return object == null ? undefined$1 : object[key];
    }
    function hasUnicode2(string) {
      return reHasUnicode2.test(string);
    }
    function hasUnicodeWord2(string) {
      return reHasUnicodeWord2.test(string);
    }
    function iteratorToArray(iterator2) {
      var data, result = [];
      while (!(data = iterator2.next()).done) {
        result.push(data.value);
      }
      return result;
    }
    function mapToArray(map2) {
      var index2 = -1, result = Array(map2.size);
      map2.forEach(function(value, key) {
        result[++index2] = [key, value];
      });
      return result;
    }
    function overArg(func, transform) {
      return function(arg) {
        return func(transform(arg));
      };
    }
    function replaceHolders(array, placeholder) {
      var index2 = -1, length2 = array.length, resIndex = 0, result = [];
      while (++index2 < length2) {
        var value = array[index2];
        if (value === placeholder || value === PLACEHOLDER) {
          array[index2] = PLACEHOLDER;
          result[resIndex++] = index2;
        }
      }
      return result;
    }
    function setToArray(set3) {
      var index2 = -1, result = Array(set3.size);
      set3.forEach(function(value) {
        result[++index2] = value;
      });
      return result;
    }
    function setToPairs(set3) {
      var index2 = -1, result = Array(set3.size);
      set3.forEach(function(value) {
        result[++index2] = [value, value];
      });
      return result;
    }
    function strictIndexOf(array, value, fromIndex) {
      var index2 = fromIndex - 1, length2 = array.length;
      while (++index2 < length2) {
        if (array[index2] === value) {
          return index2;
        }
      }
      return -1;
    }
    function strictLastIndexOf(array, value, fromIndex) {
      var index2 = fromIndex + 1;
      while (index2--) {
        if (array[index2] === value) {
          return index2;
        }
      }
      return index2;
    }
    function stringSize(string) {
      return hasUnicode2(string) ? unicodeSize(string) : asciiSize(string);
    }
    function stringToArray2(string) {
      return hasUnicode2(string) ? unicodeToArray2(string) : asciiToArray2(string);
    }
    function trimmedEndIndex(string) {
      var index2 = string.length;
      while (index2-- && reWhitespace.test(string.charAt(index2))) {
      }
      return index2;
    }
    var unescapeHtmlChar = basePropertyOf2(htmlUnescapes);
    function unicodeSize(string) {
      var result = reUnicode2.lastIndex = 0;
      while (reUnicode2.test(string)) {
        ++result;
      }
      return result;
    }
    function unicodeToArray2(string) {
      return string.match(reUnicode2) || [];
    }
    function unicodeWords2(string) {
      return string.match(reUnicodeWord2) || [];
    }
    var runInContext = function runInContext2(context) {
      context = context == null ? root2 : _2.defaults(root2.Object(), context, _2.pick(root2, contextProps));
      var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError;
      var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto2 = Object2.prototype;
      var coreJsData = context["__core-js_shared__"];
      var funcToString = funcProto.toString;
      var hasOwnProperty2 = objectProto2.hasOwnProperty;
      var idCounter = 0;
      var maskSrcKey = function() {
        var uid2 = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
        return uid2 ? "Symbol(src)_1." + uid2 : "";
      }();
      var nativeObjectToString = objectProto2.toString;
      var objectCtorString = funcToString.call(Object2);
      var oldDash = root2._;
      var reIsNative = RegExp2(
        "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
      );
      var Buffer2 = moduleExports ? context.Buffer : undefined$1, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined$1, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto2.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined$1, symIterator = Symbol2 ? Symbol2.iterator : undefined$1, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined$1;
      var defineProperty = function() {
        try {
          var func = getNative(Object2, "defineProperty");
          func({}, "", {});
          return func;
        } catch (e) {
        }
      }();
      var ctxClearTimeout = context.clearTimeout !== root2.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root2.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root2.setTimeout && context.setTimeout;
      var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined$1, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse;
      var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create");
      var metaMap = WeakMap2 && new WeakMap2();
      var realNames = {};
      var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2);
      var symbolProto2 = Symbol2 ? Symbol2.prototype : undefined$1, symbolValueOf = symbolProto2 ? symbolProto2.valueOf : undefined$1, symbolToString2 = symbolProto2 ? symbolProto2.toString : undefined$1;
      function lodash2(value) {
        if (isObjectLike2(value) && !isArray2(value) && !(value instanceof LazyWrapper)) {
          if (value instanceof LodashWrapper) {
            return value;
          }
          if (hasOwnProperty2.call(value, "__wrapped__")) {
            return wrapperClone(value);
          }
        }
        return new LodashWrapper(value);
      }
      var baseCreate = function() {
        function object() {
        }
        return function(proto2) {
          if (!isObject2(proto2)) {
            return {};
          }
          if (objectCreate) {
            return objectCreate(proto2);
          }
          object.prototype = proto2;
          var result2 = new object();
          object.prototype = undefined$1;
          return result2;
        };
      }();
      function baseLodash() {
      }
      function LodashWrapper(value, chainAll) {
        this.__wrapped__ = value;
        this.__actions__ = [];
        this.__chain__ = !!chainAll;
        this.__index__ = 0;
        this.__values__ = undefined$1;
      }
      lodash2.templateSettings = {
        /**
         * Used to detect `data` property values to be HTML-escaped.
         *
         * @memberOf _.templateSettings
         * @type {RegExp}
         */
        "escape": reEscape,
        /**
         * Used to detect code to be evaluated.
         *
         * @memberOf _.templateSettings
         * @type {RegExp}
         */
        "evaluate": reEvaluate,
        /**
         * Used to detect `data` property values to inject.
         *
         * @memberOf _.templateSettings
         * @type {RegExp}
         */
        "interpolate": reInterpolate,
        /**
         * Used to reference the data object in the template text.
         *
         * @memberOf _.templateSettings
         * @type {string}
         */
        "variable": "",
        /**
         * Used to import variables into the compiled template.
         *
         * @memberOf _.templateSettings
         * @type {Object}
         */
        "imports": {
          /**
           * A reference to the `lodash` function.
           *
           * @memberOf _.templateSettings.imports
           * @type {Function}
           */
          "_": lodash2
        }
      };
      lodash2.prototype = baseLodash.prototype;
      lodash2.prototype.constructor = lodash2;
      LodashWrapper.prototype = baseCreate(baseLodash.prototype);
      LodashWrapper.prototype.constructor = LodashWrapper;
      function LazyWrapper(value) {
        this.__wrapped__ = value;
        this.__actions__ = [];
        this.__dir__ = 1;
        this.__filtered__ = false;
        this.__iteratees__ = [];
        this.__takeCount__ = MAX_ARRAY_LENGTH2;
        this.__views__ = [];
      }
      function lazyClone() {
        var result2 = new LazyWrapper(this.__wrapped__);
        result2.__actions__ = copyArray(this.__actions__);
        result2.__dir__ = this.__dir__;
        result2.__filtered__ = this.__filtered__;
        result2.__iteratees__ = copyArray(this.__iteratees__);
        result2.__takeCount__ = this.__takeCount__;
        result2.__views__ = copyArray(this.__views__);
        return result2;
      }
      function lazyReverse() {
        if (this.__filtered__) {
          var result2 = new LazyWrapper(this);
          result2.__dir__ = -1;
          result2.__filtered__ = true;
        } else {
          result2 = this.clone();
          result2.__dir__ *= -1;
        }
        return result2;
      }
      function lazyValue() {
        var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length2 = end - start, index2 = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length2, this.__takeCount__);
        if (!isArr || !isRight && arrLength == length2 && takeCount == length2) {
          return baseWrapperValue(array, this.__actions__);
        }
        var result2 = [];
        outer:
          while (length2-- && resIndex < takeCount) {
            index2 += dir;
            var iterIndex = -1, value = array[index2];
            while (++iterIndex < iterLength) {
              var data = iteratees[iterIndex], iteratee2 = data.iteratee, type2 = data.type, computed2 = iteratee2(value);
              if (type2 == LAZY_MAP_FLAG) {
                value = computed2;
              } else if (!computed2) {
                if (type2 == LAZY_FILTER_FLAG) {
                  continue outer;
                } else {
                  break outer;
                }
              }
            }
            result2[resIndex++] = value;
          }
        return result2;
      }
      LazyWrapper.prototype = baseCreate(baseLodash.prototype);
      LazyWrapper.prototype.constructor = LazyWrapper;
      function Hash(entries) {
        var index2 = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index2 < length2) {
          var entry = entries[index2];
          this.set(entry[0], entry[1]);
        }
      }
      function hashClear() {
        this.__data__ = nativeCreate ? nativeCreate(null) : {};
        this.size = 0;
      }
      function hashDelete(key) {
        var result2 = this.has(key) && delete this.__data__[key];
        this.size -= result2 ? 1 : 0;
        return result2;
      }
      function hashGet(key) {
        var data = this.__data__;
        if (nativeCreate) {
          var result2 = data[key];
          return result2 === HASH_UNDEFINED ? undefined$1 : result2;
        }
        return hasOwnProperty2.call(data, key) ? data[key] : undefined$1;
      }
      function hashHas(key) {
        var data = this.__data__;
        return nativeCreate ? data[key] !== undefined$1 : hasOwnProperty2.call(data, key);
      }
      function hashSet(key, value) {
        var data = this.__data__;
        this.size += this.has(key) ? 0 : 1;
        data[key] = nativeCreate && value === undefined$1 ? HASH_UNDEFINED : value;
        return this;
      }
      Hash.prototype.clear = hashClear;
      Hash.prototype["delete"] = hashDelete;
      Hash.prototype.get = hashGet;
      Hash.prototype.has = hashHas;
      Hash.prototype.set = hashSet;
      function ListCache(entries) {
        var index2 = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index2 < length2) {
          var entry = entries[index2];
          this.set(entry[0], entry[1]);
        }
      }
      function listCacheClear() {
        this.__data__ = [];
        this.size = 0;
      }
      function listCacheDelete(key) {
        var data = this.__data__, index2 = assocIndexOf(data, key);
        if (index2 < 0) {
          return false;
        }
        var lastIndex = data.length - 1;
        if (index2 == lastIndex) {
          data.pop();
        } else {
          splice.call(data, index2, 1);
        }
        --this.size;
        return true;
      }
      function listCacheGet(key) {
        var data = this.__data__, index2 = assocIndexOf(data, key);
        return index2 < 0 ? undefined$1 : data[index2][1];
      }
      function listCacheHas(key) {
        return assocIndexOf(this.__data__, key) > -1;
      }
      function listCacheSet(key, value) {
        var data = this.__data__, index2 = assocIndexOf(data, key);
        if (index2 < 0) {
          ++this.size;
          data.push([key, value]);
        } else {
          data[index2][1] = value;
        }
        return this;
      }
      ListCache.prototype.clear = listCacheClear;
      ListCache.prototype["delete"] = listCacheDelete;
      ListCache.prototype.get = listCacheGet;
      ListCache.prototype.has = listCacheHas;
      ListCache.prototype.set = listCacheSet;
      function MapCache(entries) {
        var index2 = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index2 < length2) {
          var entry = entries[index2];
          this.set(entry[0], entry[1]);
        }
      }
      function mapCacheClear() {
        this.size = 0;
        this.__data__ = {
          "hash": new Hash(),
          "map": new (Map2 || ListCache)(),
          "string": new Hash()
        };
      }
      function mapCacheDelete(key) {
        var result2 = getMapData(this, key)["delete"](key);
        this.size -= result2 ? 1 : 0;
        return result2;
      }
      function mapCacheGet(key) {
        return getMapData(this, key).get(key);
      }
      function mapCacheHas(key) {
        return getMapData(this, key).has(key);
      }
      function mapCacheSet(key, value) {
        var data = getMapData(this, key), size3 = data.size;
        data.set(key, value);
        this.size += data.size == size3 ? 0 : 1;
        return this;
      }
      MapCache.prototype.clear = mapCacheClear;
      MapCache.prototype["delete"] = mapCacheDelete;
      MapCache.prototype.get = mapCacheGet;
      MapCache.prototype.has = mapCacheHas;
      MapCache.prototype.set = mapCacheSet;
      function SetCache(values2) {
        var index2 = -1, length2 = values2 == null ? 0 : values2.length;
        this.__data__ = new MapCache();
        while (++index2 < length2) {
          this.add(values2[index2]);
        }
      }
      function setCacheAdd(value) {
        this.__data__.set(value, HASH_UNDEFINED);
        return this;
      }
      function setCacheHas(value) {
        return this.__data__.has(value);
      }
      SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
      SetCache.prototype.has = setCacheHas;
      function Stack(entries) {
        var data = this.__data__ = new ListCache(entries);
        this.size = data.size;
      }
      function stackClear() {
        this.__data__ = new ListCache();
        this.size = 0;
      }
      function stackDelete(key) {
        var data = this.__data__, result2 = data["delete"](key);
        this.size = data.size;
        return result2;
      }
      function stackGet(key) {
        return this.__data__.get(key);
      }
      function stackHas(key) {
        return this.__data__.has(key);
      }
      function stackSet(key, value) {
        var data = this.__data__;
        if (data instanceof ListCache) {
          var pairs = data.__data__;
          if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
            pairs.push([key, value]);
            this.size = ++data.size;
            return this;
          }
          data = this.__data__ = new MapCache(pairs);
        }
        data.set(key, value);
        this.size = data.size;
        return this;
      }
      Stack.prototype.clear = stackClear;
      Stack.prototype["delete"] = stackDelete;
      Stack.prototype.get = stackGet;
      Stack.prototype.has = stackHas;
      Stack.prototype.set = stackSet;
      function arrayLikeKeys(value, inherited) {
        var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length2 = result2.length;
        for (var key in value) {
          if ((inherited || hasOwnProperty2.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
          (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
          isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
          isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
          isIndex(key, length2)))) {
            result2.push(key);
          }
        }
        return result2;
      }
      function arraySample(array) {
        var length2 = array.length;
        return length2 ? array[baseRandom(0, length2 - 1)] : undefined$1;
      }
      function arraySampleSize(array, n) {
        return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
      }
      function arrayShuffle(array) {
        return shuffleSelf(copyArray(array));
      }
      function assignMergeValue(object, key, value) {
        if (value !== undefined$1 && !eq(object[key], value) || value === undefined$1 && !(key in object)) {
          baseAssignValue(object, key, value);
        }
      }
      function assignValue(object, key, value) {
        var objValue = object[key];
        if (!(hasOwnProperty2.call(object, key) && eq(objValue, value)) || value === undefined$1 && !(key in object)) {
          baseAssignValue(object, key, value);
        }
      }
      function assocIndexOf(array, key) {
        var length2 = array.length;
        while (length2--) {
          if (eq(array[length2][0], key)) {
            return length2;
          }
        }
        return -1;
      }
      function baseAggregator(collection, setter, iteratee2, accumulator) {
        baseEach(collection, function(value, key, collection2) {
          setter(accumulator, value, iteratee2(value), collection2);
        });
        return accumulator;
      }
      function baseAssign(object, source) {
        return object && copyObject(source, keys(source), object);
      }
      function baseAssignIn(object, source) {
        return object && copyObject(source, keysIn(source), object);
      }
      function baseAssignValue(object, key, value) {
        if (key == "__proto__" && defineProperty) {
          defineProperty(object, key, {
            "configurable": true,
            "enumerable": true,
            "value": value,
            "writable": true
          });
        } else {
          object[key] = value;
        }
      }
      function baseAt(object, paths) {
        var index2 = -1, length2 = paths.length, result2 = Array2(length2), skip = object == null;
        while (++index2 < length2) {
          result2[index2] = skip ? undefined$1 : get2(object, paths[index2]);
        }
        return result2;
      }
      function baseClamp(number2, lower, upper) {
        if (number2 === number2) {
          if (upper !== undefined$1) {
            number2 = number2 <= upper ? number2 : upper;
          }
          if (lower !== undefined$1) {
            number2 = number2 >= lower ? number2 : lower;
          }
        }
        return number2;
      }
      function baseClone(value, bitmask, customizer, key, object, stack) {
        var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
        if (customizer) {
          result2 = object ? customizer(value, key, object, stack) : customizer(value);
        }
        if (result2 !== undefined$1) {
          return result2;
        }
        if (!isObject2(value)) {
          return value;
        }
        var isArr = isArray2(value);
        if (isArr) {
          result2 = initCloneArray(value);
          if (!isDeep) {
            return copyArray(value, result2);
          }
        } else {
          var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
          if (isBuffer(value)) {
            return cloneBuffer(value, isDeep);
          }
          if (tag == objectTag || tag == argsTag || isFunc && !object) {
            result2 = isFlat || isFunc ? {} : initCloneObject(value);
            if (!isDeep) {
              return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));
            }
          } else {
            if (!cloneableTags[tag]) {
              return object ? value : {};
            }
            result2 = initCloneByTag(value, tag, isDeep);
          }
        }
        stack || (stack = new Stack());
        var stacked = stack.get(value);
        if (stacked) {
          return stacked;
        }
        stack.set(value, result2);
        if (isSet2(value)) {
          value.forEach(function(subValue) {
            result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
          });
        } else if (isMap2(value)) {
          value.forEach(function(subValue, key2) {
            result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
          });
        }
        var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
        var props = isArr ? undefined$1 : keysFunc(value);
        arrayEach(props || value, function(subValue, key2) {
          if (props) {
            key2 = subValue;
            subValue = value[key2];
          }
          assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
        });
        return result2;
      }
      function baseConforms(source) {
        var props = keys(source);
        return function(object) {
          return baseConformsTo(object, source, props);
        };
      }
      function baseConformsTo(object, source, props) {
        var length2 = props.length;
        if (object == null) {
          return !length2;
        }
        object = Object2(object);
        while (length2--) {
          var key = props[length2], predicate = source[key], value = object[key];
          if (value === undefined$1 && !(key in object) || !predicate(value)) {
            return false;
          }
        }
        return true;
      }
      function baseDelay(func, wait, args) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        return setTimeout2(function() {
          func.apply(undefined$1, args);
        }, wait);
      }
      function baseDifference(array, values2, iteratee2, comparator2) {
        var index2 = -1, includes2 = arrayIncludes, isCommon = true, length2 = array.length, result2 = [], valuesLength = values2.length;
        if (!length2) {
          return result2;
        }
        if (iteratee2) {
          values2 = arrayMap(values2, baseUnary(iteratee2));
        }
        if (comparator2) {
          includes2 = arrayIncludesWith;
          isCommon = false;
        } else if (values2.length >= LARGE_ARRAY_SIZE) {
          includes2 = cacheHas;
          isCommon = false;
          values2 = new SetCache(values2);
        }
        outer:
          while (++index2 < length2) {
            var value = array[index2], computed2 = iteratee2 == null ? value : iteratee2(value);
            value = comparator2 || value !== 0 ? value : 0;
            if (isCommon && computed2 === computed2) {
              var valuesIndex = valuesLength;
              while (valuesIndex--) {
                if (values2[valuesIndex] === computed2) {
                  continue outer;
                }
              }
              result2.push(value);
            } else if (!includes2(values2, computed2, comparator2)) {
              result2.push(value);
            }
          }
        return result2;
      }
      var baseEach = createBaseEach(baseForOwn);
      var baseEachRight = createBaseEach(baseForOwnRight, true);
      function baseEvery(collection, predicate) {
        var result2 = true;
        baseEach(collection, function(value, index2, collection2) {
          result2 = !!predicate(value, index2, collection2);
          return result2;
        });
        return result2;
      }
      function baseExtremum(array, iteratee2, comparator2) {
        var index2 = -1, length2 = array.length;
        while (++index2 < length2) {
          var value = array[index2], current = iteratee2(value);
          if (current != null && (computed2 === undefined$1 ? current === current && !isSymbol2(current) : comparator2(current, computed2))) {
            var computed2 = current, result2 = value;
          }
        }
        return result2;
      }
      function baseFill(array, value, start, end) {
        var length2 = array.length;
        start = toInteger(start);
        if (start < 0) {
          start = -start > length2 ? 0 : length2 + start;
        }
        end = end === undefined$1 || end > length2 ? length2 : toInteger(end);
        if (end < 0) {
          end += length2;
        }
        end = start > end ? 0 : toLength(end);
        while (start < end) {
          array[start++] = value;
        }
        return array;
      }
      function baseFilter(collection, predicate) {
        var result2 = [];
        baseEach(collection, function(value, index2, collection2) {
          if (predicate(value, index2, collection2)) {
            result2.push(value);
          }
        });
        return result2;
      }
      function baseFlatten(array, depth, predicate, isStrict, result2) {
        var index2 = -1, length2 = array.length;
        predicate || (predicate = isFlattenable);
        result2 || (result2 = []);
        while (++index2 < length2) {
          var value = array[index2];
          if (depth > 0 && predicate(value)) {
            if (depth > 1) {
              baseFlatten(value, depth - 1, predicate, isStrict, result2);
            } else {
              arrayPush(result2, value);
            }
          } else if (!isStrict) {
            result2[result2.length] = value;
          }
        }
        return result2;
      }
      var baseFor = createBaseFor();
      var baseForRight = createBaseFor(true);
      function baseForOwn(object, iteratee2) {
        return object && baseFor(object, iteratee2, keys);
      }
      function baseForOwnRight(object, iteratee2) {
        return object && baseForRight(object, iteratee2, keys);
      }
      function baseFunctions(object, props) {
        return arrayFilter(props, function(key) {
          return isFunction2(object[key]);
        });
      }
      function baseGet(object, path) {
        path = castPath(path, object);
        var index2 = 0, length2 = path.length;
        while (object != null && index2 < length2) {
          object = object[toKey(path[index2++])];
        }
        return index2 && index2 == length2 ? object : undefined$1;
      }
      function baseGetAllKeys(object, keysFunc, symbolsFunc) {
        var result2 = keysFunc(object);
        return isArray2(object) ? result2 : arrayPush(result2, symbolsFunc(object));
      }
      function baseGetTag(value) {
        if (value == null) {
          return value === undefined$1 ? undefinedTag : nullTag;
        }
        return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString2(value);
      }
      function baseGt(value, other) {
        return value > other;
      }
      function baseHas(object, key) {
        return object != null && hasOwnProperty2.call(object, key);
      }
      function baseHasIn(object, key) {
        return object != null && key in Object2(object);
      }
      function baseInRange(number2, start, end) {
        return number2 >= nativeMin(start, end) && number2 < nativeMax(start, end);
      }
      function baseIntersection(arrays, iteratee2, comparator2) {
        var includes2 = comparator2 ? arrayIncludesWith : arrayIncludes, length2 = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];
        while (othIndex--) {
          var array = arrays[othIndex];
          if (othIndex && iteratee2) {
            array = arrayMap(array, baseUnary(iteratee2));
          }
          maxLength = nativeMin(array.length, maxLength);
          caches[othIndex] = !comparator2 && (iteratee2 || length2 >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined$1;
        }
        array = arrays[0];
        var index2 = -1, seen = caches[0];
        outer:
          while (++index2 < length2 && result2.length < maxLength) {
            var value = array[index2], computed2 = iteratee2 ? iteratee2(value) : value;
            value = comparator2 || value !== 0 ? value : 0;
            if (!(seen ? cacheHas(seen, computed2) : includes2(result2, computed2, comparator2))) {
              othIndex = othLength;
              while (--othIndex) {
                var cache2 = caches[othIndex];
                if (!(cache2 ? cacheHas(cache2, computed2) : includes2(arrays[othIndex], computed2, comparator2))) {
                  continue outer;
                }
              }
              if (seen) {
                seen.push(computed2);
              }
              result2.push(value);
            }
          }
        return result2;
      }
      function baseInverter(object, setter, iteratee2, accumulator) {
        baseForOwn(object, function(value, key, object2) {
          setter(accumulator, iteratee2(value), key, object2);
        });
        return accumulator;
      }
      function baseInvoke(object, path, args) {
        path = castPath(path, object);
        object = parent(object, path);
        var func = object == null ? object : object[toKey(last(path))];
        return func == null ? undefined$1 : apply2(func, object, args);
      }
      function baseIsArguments(value) {
        return isObjectLike2(value) && baseGetTag(value) == argsTag;
      }
      function baseIsArrayBuffer(value) {
        return isObjectLike2(value) && baseGetTag(value) == arrayBufferTag;
      }
      function baseIsDate(value) {
        return isObjectLike2(value) && baseGetTag(value) == dateTag;
      }
      function baseIsEqual(value, other, bitmask, customizer, stack) {
        if (value === other) {
          return true;
        }
        if (value == null || other == null || !isObjectLike2(value) && !isObjectLike2(other)) {
          return value !== value && other !== other;
        }
        return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
      }
      function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
        var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
        objTag = objTag == argsTag ? objectTag : objTag;
        othTag = othTag == argsTag ? objectTag : othTag;
        var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
        if (isSameTag && isBuffer(object)) {
          if (!isBuffer(other)) {
            return false;
          }
          objIsArr = true;
          objIsObj = false;
        }
        if (isSameTag && !objIsObj) {
          stack || (stack = new Stack());
          return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
        }
        if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
          var objIsWrapped = objIsObj && hasOwnProperty2.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty2.call(other, "__wrapped__");
          if (objIsWrapped || othIsWrapped) {
            var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
            stack || (stack = new Stack());
            return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
          }
        }
        if (!isSameTag) {
          return false;
        }
        stack || (stack = new Stack());
        return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
      }
      function baseIsMap(value) {
        return isObjectLike2(value) && getTag(value) == mapTag;
      }
      function baseIsMatch(object, source, matchData, customizer) {
        var index2 = matchData.length, length2 = index2, noCustomizer = !customizer;
        if (object == null) {
          return !length2;
        }
        object = Object2(object);
        while (index2--) {
          var data = matchData[index2];
          if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
            return false;
          }
        }
        while (++index2 < length2) {
          data = matchData[index2];
          var key = data[0], objValue = object[key], srcValue = data[1];
          if (noCustomizer && data[2]) {
            if (objValue === undefined$1 && !(key in object)) {
              return false;
            }
          } else {
            var stack = new Stack();
            if (customizer) {
              var result2 = customizer(objValue, srcValue, key, object, source, stack);
            }
            if (!(result2 === undefined$1 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {
              return false;
            }
          }
        }
        return true;
      }
      function baseIsNative(value) {
        if (!isObject2(value) || isMasked(value)) {
          return false;
        }
        var pattern = isFunction2(value) ? reIsNative : reIsHostCtor;
        return pattern.test(toSource(value));
      }
      function baseIsRegExp(value) {
        return isObjectLike2(value) && baseGetTag(value) == regexpTag;
      }
      function baseIsSet(value) {
        return isObjectLike2(value) && getTag(value) == setTag;
      }
      function baseIsTypedArray(value) {
        return isObjectLike2(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
      }
      function baseIteratee(value) {
        if (typeof value == "function") {
          return value;
        }
        if (value == null) {
          return identity;
        }
        if (typeof value == "object") {
          return isArray2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
        }
        return property(value);
      }
      function baseKeys(object) {
        if (!isPrototype(object)) {
          return nativeKeys(object);
        }
        var result2 = [];
        for (var key in Object2(object)) {
          if (hasOwnProperty2.call(object, key) && key != "constructor") {
            result2.push(key);
          }
        }
        return result2;
      }
      function baseKeysIn(object) {
        if (!isObject2(object)) {
          return nativeKeysIn(object);
        }
        var isProto = isPrototype(object), result2 = [];
        for (var key in object) {
          if (!(key == "constructor" && (isProto || !hasOwnProperty2.call(object, key)))) {
            result2.push(key);
          }
        }
        return result2;
      }
      function baseLt(value, other) {
        return value < other;
      }
      function baseMap(collection, iteratee2) {
        var index2 = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];
        baseEach(collection, function(value, key, collection2) {
          result2[++index2] = iteratee2(value, key, collection2);
        });
        return result2;
      }
      function baseMatches(source) {
        var matchData = getMatchData(source);
        if (matchData.length == 1 && matchData[0][2]) {
          return matchesStrictComparable(matchData[0][0], matchData[0][1]);
        }
        return function(object) {
          return object === source || baseIsMatch(object, source, matchData);
        };
      }
      function baseMatchesProperty(path, srcValue) {
        if (isKey(path) && isStrictComparable(srcValue)) {
          return matchesStrictComparable(toKey(path), srcValue);
        }
        return function(object) {
          var objValue = get2(object, path);
          return objValue === undefined$1 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
        };
      }
      function baseMerge(object, source, srcIndex, customizer, stack) {
        if (object === source) {
          return;
        }
        baseFor(source, function(srcValue, key) {
          stack || (stack = new Stack());
          if (isObject2(srcValue)) {
            baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
          } else {
            var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined$1;
            if (newValue === undefined$1) {
              newValue = srcValue;
            }
            assignMergeValue(object, key, newValue);
          }
        }, keysIn);
      }
      function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
        var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
        if (stacked) {
          assignMergeValue(object, key, stacked);
          return;
        }
        var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined$1;
        var isCommon = newValue === undefined$1;
        if (isCommon) {
          var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
          newValue = srcValue;
          if (isArr || isBuff || isTyped) {
            if (isArray2(objValue)) {
              newValue = objValue;
            } else if (isArrayLikeObject(objValue)) {
              newValue = copyArray(objValue);
            } else if (isBuff) {
              isCommon = false;
              newValue = cloneBuffer(srcValue, true);
            } else if (isTyped) {
              isCommon = false;
              newValue = cloneTypedArray(srcValue, true);
            } else {
              newValue = [];
            }
          } else if (isPlainObject2(srcValue) || isArguments(srcValue)) {
            newValue = objValue;
            if (isArguments(objValue)) {
              newValue = toPlainObject(objValue);
            } else if (!isObject2(objValue) || isFunction2(objValue)) {
              newValue = initCloneObject(srcValue);
            }
          } else {
            isCommon = false;
          }
        }
        if (isCommon) {
          stack.set(srcValue, newValue);
          mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
          stack["delete"](srcValue);
        }
        assignMergeValue(object, key, newValue);
      }
      function baseNth(array, n) {
        var length2 = array.length;
        if (!length2) {
          return;
        }
        n += n < 0 ? length2 : 0;
        return isIndex(n, length2) ? array[n] : undefined$1;
      }
      function baseOrderBy(collection, iteratees, orders) {
        if (iteratees.length) {
          iteratees = arrayMap(iteratees, function(iteratee2) {
            if (isArray2(iteratee2)) {
              return function(value) {
                return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);
              };
            }
            return iteratee2;
          });
        } else {
          iteratees = [identity];
        }
        var index2 = -1;
        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
        var result2 = baseMap(collection, function(value, key, collection2) {
          var criteria = arrayMap(iteratees, function(iteratee2) {
            return iteratee2(value);
          });
          return { "criteria": criteria, "index": ++index2, "value": value };
        });
        return baseSortBy(result2, function(object, other) {
          return compareMultiple(object, other, orders);
        });
      }
      function basePick(object, paths) {
        return basePickBy(object, paths, function(value, path) {
          return hasIn(object, path);
        });
      }
      function basePickBy(object, paths, predicate) {
        var index2 = -1, length2 = paths.length, result2 = {};
        while (++index2 < length2) {
          var path = paths[index2], value = baseGet(object, path);
          if (predicate(value, path)) {
            baseSet(result2, castPath(path, object), value);
          }
        }
        return result2;
      }
      function basePropertyDeep(path) {
        return function(object) {
          return baseGet(object, path);
        };
      }
      function basePullAll(array, values2, iteratee2, comparator2) {
        var indexOf3 = comparator2 ? baseIndexOfWith : baseIndexOf, index2 = -1, length2 = values2.length, seen = array;
        if (array === values2) {
          values2 = copyArray(values2);
        }
        if (iteratee2) {
          seen = arrayMap(array, baseUnary(iteratee2));
        }
        while (++index2 < length2) {
          var fromIndex = 0, value = values2[index2], computed2 = iteratee2 ? iteratee2(value) : value;
          while ((fromIndex = indexOf3(seen, computed2, fromIndex, comparator2)) > -1) {
            if (seen !== array) {
              splice.call(seen, fromIndex, 1);
            }
            splice.call(array, fromIndex, 1);
          }
        }
        return array;
      }
      function basePullAt(array, indexes) {
        var length2 = array ? indexes.length : 0, lastIndex = length2 - 1;
        while (length2--) {
          var index2 = indexes[length2];
          if (length2 == lastIndex || index2 !== previous) {
            var previous = index2;
            if (isIndex(index2)) {
              splice.call(array, index2, 1);
            } else {
              baseUnset(array, index2);
            }
          }
        }
        return array;
      }
      function baseRandom(lower, upper) {
        return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
      }
      function baseRange(start, end, step, fromRight) {
        var index2 = -1, length2 = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length2);
        while (length2--) {
          result2[fromRight ? length2 : ++index2] = start;
          start += step;
        }
        return result2;
      }
      function baseRepeat(string, n) {
        var result2 = "";
        if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
          return result2;
        }
        do {
          if (n % 2) {
            result2 += string;
          }
          n = nativeFloor(n / 2);
          if (n) {
            string += string;
          }
        } while (n);
        return result2;
      }
      function baseRest(func, start) {
        return setToString(overRest(func, start, identity), func + "");
      }
      function baseSample(collection) {
        return arraySample(values(collection));
      }
      function baseSampleSize(collection, n) {
        var array = values(collection);
        return shuffleSelf(array, baseClamp(n, 0, array.length));
      }
      function baseSet(object, path, value, customizer) {
        if (!isObject2(object)) {
          return object;
        }
        path = castPath(path, object);
        var index2 = -1, length2 = path.length, lastIndex = length2 - 1, nested = object;
        while (nested != null && ++index2 < length2) {
          var key = toKey(path[index2]), newValue = value;
          if (key === "__proto__" || key === "constructor" || key === "prototype") {
            return object;
          }
          if (index2 != lastIndex) {
            var objValue = nested[key];
            newValue = customizer ? customizer(objValue, key, nested) : undefined$1;
            if (newValue === undefined$1) {
              newValue = isObject2(objValue) ? objValue : isIndex(path[index2 + 1]) ? [] : {};
            }
          }
          assignValue(nested, key, newValue);
          nested = nested[key];
        }
        return object;
      }
      var baseSetData = !metaMap ? identity : function(func, data) {
        metaMap.set(func, data);
        return func;
      };
      var baseSetToString = !defineProperty ? identity : function(func, string) {
        return defineProperty(func, "toString", {
          "configurable": true,
          "enumerable": false,
          "value": constant(string),
          "writable": true
        });
      };
      function baseShuffle(collection) {
        return shuffleSelf(values(collection));
      }
      function baseSlice2(array, start, end) {
        var index2 = -1, length2 = array.length;
        if (start < 0) {
          start = -start > length2 ? 0 : length2 + start;
        }
        end = end > length2 ? length2 : end;
        if (end < 0) {
          end += length2;
        }
        length2 = start > end ? 0 : end - start >>> 0;
        start >>>= 0;
        var result2 = Array2(length2);
        while (++index2 < length2) {
          result2[index2] = array[index2 + start];
        }
        return result2;
      }
      function baseSome(collection, predicate) {
        var result2;
        baseEach(collection, function(value, index2, collection2) {
          result2 = predicate(value, index2, collection2);
          return !result2;
        });
        return !!result2;
      }
      function baseSortedIndex(array, value, retHighest) {
        var low = 0, high = array == null ? low : array.length;
        if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
          while (low < high) {
            var mid2 = low + high >>> 1, computed2 = array[mid2];
            if (computed2 !== null && !isSymbol2(computed2) && (retHighest ? computed2 <= value : computed2 < value)) {
              low = mid2 + 1;
            } else {
              high = mid2;
            }
          }
          return high;
        }
        return baseSortedIndexBy(array, value, identity, retHighest);
      }
      function baseSortedIndexBy(array, value, iteratee2, retHighest) {
        var low = 0, high = array == null ? 0 : array.length;
        if (high === 0) {
          return 0;
        }
        value = iteratee2(value);
        var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol2(value), valIsUndefined = value === undefined$1;
        while (low < high) {
          var mid2 = nativeFloor((low + high) / 2), computed2 = iteratee2(array[mid2]), othIsDefined = computed2 !== undefined$1, othIsNull = computed2 === null, othIsReflexive = computed2 === computed2, othIsSymbol = isSymbol2(computed2);
          if (valIsNaN) {
            var setLow = retHighest || othIsReflexive;
          } else if (valIsUndefined) {
            setLow = othIsReflexive && (retHighest || othIsDefined);
          } else if (valIsNull) {
            setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
          } else if (valIsSymbol) {
            setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
          } else if (othIsNull || othIsSymbol) {
            setLow = false;
          } else {
            setLow = retHighest ? computed2 <= value : computed2 < value;
          }
          if (setLow) {
            low = mid2 + 1;
          } else {
            high = mid2;
          }
        }
        return nativeMin(high, MAX_ARRAY_INDEX);
      }
      function baseSortedUniq(array, iteratee2) {
        var index2 = -1, length2 = array.length, resIndex = 0, result2 = [];
        while (++index2 < length2) {
          var value = array[index2], computed2 = iteratee2 ? iteratee2(value) : value;
          if (!index2 || !eq(computed2, seen)) {
            var seen = computed2;
            result2[resIndex++] = value === 0 ? 0 : value;
          }
        }
        return result2;
      }
      function baseToNumber(value) {
        if (typeof value == "number") {
          return value;
        }
        if (isSymbol2(value)) {
          return NAN;
        }
        return +value;
      }
      function baseToString2(value) {
        if (typeof value == "string") {
          return value;
        }
        if (isArray2(value)) {
          return arrayMap(value, baseToString2) + "";
        }
        if (isSymbol2(value)) {
          return symbolToString2 ? symbolToString2.call(value) : "";
        }
        var result2 = value + "";
        return result2 == "0" && 1 / value == -INFINITY2 ? "-0" : result2;
      }
      function baseUniq(array, iteratee2, comparator2) {
        var index2 = -1, includes2 = arrayIncludes, length2 = array.length, isCommon = true, result2 = [], seen = result2;
        if (comparator2) {
          isCommon = false;
          includes2 = arrayIncludesWith;
        } else if (length2 >= LARGE_ARRAY_SIZE) {
          var set4 = iteratee2 ? null : createSet(array);
          if (set4) {
            return setToArray(set4);
          }
          isCommon = false;
          includes2 = cacheHas;
          seen = new SetCache();
        } else {
          seen = iteratee2 ? [] : result2;
        }
        outer:
          while (++index2 < length2) {
            var value = array[index2], computed2 = iteratee2 ? iteratee2(value) : value;
            value = comparator2 || value !== 0 ? value : 0;
            if (isCommon && computed2 === computed2) {
              var seenIndex = seen.length;
              while (seenIndex--) {
                if (seen[seenIndex] === computed2) {
                  continue outer;
                }
              }
              if (iteratee2) {
                seen.push(computed2);
              }
              result2.push(value);
            } else if (!includes2(seen, computed2, comparator2)) {
              if (seen !== result2) {
                seen.push(computed2);
              }
              result2.push(value);
            }
          }
        return result2;
      }
      function baseUnset(object, path) {
        path = castPath(path, object);
        object = parent(object, path);
        return object == null || delete object[toKey(last(path))];
      }
      function baseUpdate(object, path, updater, customizer) {
        return baseSet(object, path, updater(baseGet(object, path)), customizer);
      }
      function baseWhile(array, predicate, isDrop, fromRight) {
        var length2 = array.length, index2 = fromRight ? length2 : -1;
        while ((fromRight ? index2-- : ++index2 < length2) && predicate(array[index2], index2, array)) {
        }
        return isDrop ? baseSlice2(array, fromRight ? 0 : index2, fromRight ? index2 + 1 : length2) : baseSlice2(array, fromRight ? index2 + 1 : 0, fromRight ? length2 : index2);
      }
      function baseWrapperValue(value, actions) {
        var result2 = value;
        if (result2 instanceof LazyWrapper) {
          result2 = result2.value();
        }
        return arrayReduce2(actions, function(result3, action) {
          return action.func.apply(action.thisArg, arrayPush([result3], action.args));
        }, result2);
      }
      function baseXor(arrays, iteratee2, comparator2) {
        var length2 = arrays.length;
        if (length2 < 2) {
          return length2 ? baseUniq(arrays[0]) : [];
        }
        var index2 = -1, result2 = Array2(length2);
        while (++index2 < length2) {
          var array = arrays[index2], othIndex = -1;
          while (++othIndex < length2) {
            if (othIndex != index2) {
              result2[index2] = baseDifference(result2[index2] || array, arrays[othIndex], iteratee2, comparator2);
            }
          }
        }
        return baseUniq(baseFlatten(result2, 1), iteratee2, comparator2);
      }
      function baseZipObject(props, values2, assignFunc) {
        var index2 = -1, length2 = props.length, valsLength = values2.length, result2 = {};
        while (++index2 < length2) {
          var value = index2 < valsLength ? values2[index2] : undefined$1;
          assignFunc(result2, props[index2], value);
        }
        return result2;
      }
      function castArrayLikeObject(value) {
        return isArrayLikeObject(value) ? value : [];
      }
      function castFunction(value) {
        return typeof value == "function" ? value : identity;
      }
      function castPath(value, object) {
        if (isArray2(value)) {
          return value;
        }
        return isKey(value, object) ? [value] : stringToPath(toString2(value));
      }
      var castRest = baseRest;
      function castSlice2(array, start, end) {
        var length2 = array.length;
        end = end === undefined$1 ? length2 : end;
        return !start && end >= length2 ? array : baseSlice2(array, start, end);
      }
      var clearTimeout2 = ctxClearTimeout || function(id2) {
        return root2.clearTimeout(id2);
      };
      function cloneBuffer(buffer2, isDeep) {
        if (isDeep) {
          return buffer2.slice();
        }
        var length2 = buffer2.length, result2 = allocUnsafe ? allocUnsafe(length2) : new buffer2.constructor(length2);
        buffer2.copy(result2);
        return result2;
      }
      function cloneArrayBuffer(arrayBuffer) {
        var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);
        new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));
        return result2;
      }
      function cloneDataView(dataView, isDeep) {
        var buffer2 = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
        return new dataView.constructor(buffer2, dataView.byteOffset, dataView.byteLength);
      }
      function cloneRegExp(regexp) {
        var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp));
        result2.lastIndex = regexp.lastIndex;
        return result2;
      }
      function cloneSymbol(symbol) {
        return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};
      }
      function cloneTypedArray(typedArray, isDeep) {
        var buffer2 = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
        return new typedArray.constructor(buffer2, typedArray.byteOffset, typedArray.length);
      }
      function compareAscending(value, other) {
        if (value !== other) {
          var valIsDefined = value !== undefined$1, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol2(value);
          var othIsDefined = other !== undefined$1, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol2(other);
          if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {
            return 1;
          }
          if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {
            return -1;
          }
        }
        return 0;
      }
      function compareMultiple(object, other, orders) {
        var index2 = -1, objCriteria = object.criteria, othCriteria = other.criteria, length2 = objCriteria.length, ordersLength = orders.length;
        while (++index2 < length2) {
          var result2 = compareAscending(objCriteria[index2], othCriteria[index2]);
          if (result2) {
            if (index2 >= ordersLength) {
              return result2;
            }
            var order2 = orders[index2];
            return result2 * (order2 == "desc" ? -1 : 1);
          }
        }
        return object.index - other.index;
      }
      function composeArgs(args, partials, holders, isCurried) {
        var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;
        while (++leftIndex < leftLength) {
          result2[leftIndex] = partials[leftIndex];
        }
        while (++argsIndex < holdersLength) {
          if (isUncurried || argsIndex < argsLength) {
            result2[holders[argsIndex]] = args[argsIndex];
          }
        }
        while (rangeLength--) {
          result2[leftIndex++] = args[argsIndex++];
        }
        return result2;
      }
      function composeArgsRight(args, partials, holders, isCurried) {
        var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;
        while (++argsIndex < rangeLength) {
          result2[argsIndex] = args[argsIndex];
        }
        var offset2 = argsIndex;
        while (++rightIndex < rightLength) {
          result2[offset2 + rightIndex] = partials[rightIndex];
        }
        while (++holdersIndex < holdersLength) {
          if (isUncurried || argsIndex < argsLength) {
            result2[offset2 + holders[holdersIndex]] = args[argsIndex++];
          }
        }
        return result2;
      }
      function copyArray(source, array) {
        var index2 = -1, length2 = source.length;
        array || (array = Array2(length2));
        while (++index2 < length2) {
          array[index2] = source[index2];
        }
        return array;
      }
      function copyObject(source, props, object, customizer) {
        var isNew = !object;
        object || (object = {});
        var index2 = -1, length2 = props.length;
        while (++index2 < length2) {
          var key = props[index2];
          var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined$1;
          if (newValue === undefined$1) {
            newValue = source[key];
          }
          if (isNew) {
            baseAssignValue(object, key, newValue);
          } else {
            assignValue(object, key, newValue);
          }
        }
        return object;
      }
      function copySymbols(source, object) {
        return copyObject(source, getSymbols(source), object);
      }
      function copySymbolsIn(source, object) {
        return copyObject(source, getSymbolsIn(source), object);
      }
      function createAggregator(setter, initializer) {
        return function(collection, iteratee2) {
          var func = isArray2(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
          return func(collection, setter, getIteratee(iteratee2, 2), accumulator);
        };
      }
      function createAssigner(assigner) {
        return baseRest(function(object, sources) {
          var index2 = -1, length2 = sources.length, customizer = length2 > 1 ? sources[length2 - 1] : undefined$1, guard = length2 > 2 ? sources[2] : undefined$1;
          customizer = assigner.length > 3 && typeof customizer == "function" ? (length2--, customizer) : undefined$1;
          if (guard && isIterateeCall(sources[0], sources[1], guard)) {
            customizer = length2 < 3 ? undefined$1 : customizer;
            length2 = 1;
          }
          object = Object2(object);
          while (++index2 < length2) {
            var source = sources[index2];
            if (source) {
              assigner(object, source, index2, customizer);
            }
          }
          return object;
        });
      }
      function createBaseEach(eachFunc, fromRight) {
        return function(collection, iteratee2) {
          if (collection == null) {
            return collection;
          }
          if (!isArrayLike(collection)) {
            return eachFunc(collection, iteratee2);
          }
          var length2 = collection.length, index2 = fromRight ? length2 : -1, iterable = Object2(collection);
          while (fromRight ? index2-- : ++index2 < length2) {
            if (iteratee2(iterable[index2], index2, iterable) === false) {
              break;
            }
          }
          return collection;
        };
      }
      function createBaseFor(fromRight) {
        return function(object, iteratee2, keysFunc) {
          var index2 = -1, iterable = Object2(object), props = keysFunc(object), length2 = props.length;
          while (length2--) {
            var key = props[fromRight ? length2 : ++index2];
            if (iteratee2(iterable[key], key, iterable) === false) {
              break;
            }
          }
          return object;
        };
      }
      function createBind(func, bitmask, thisArg) {
        var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
        function wrapper() {
          var fn = this && this !== root2 && this instanceof wrapper ? Ctor : func;
          return fn.apply(isBind ? thisArg : this, arguments);
        }
        return wrapper;
      }
      function createCaseFirst2(methodName) {
        return function(string) {
          string = toString2(string);
          var strSymbols = hasUnicode2(string) ? stringToArray2(string) : undefined$1;
          var chr = strSymbols ? strSymbols[0] : string.charAt(0);
          var trailing = strSymbols ? castSlice2(strSymbols, 1).join("") : string.slice(1);
          return chr[methodName]() + trailing;
        };
      }
      function createCompounder2(callback) {
        return function(string) {
          return arrayReduce2(words2(deburr2(string).replace(reApos2, "")), callback, "");
        };
      }
      function createCtor(Ctor) {
        return function() {
          var args = arguments;
          switch (args.length) {
            case 0:
              return new Ctor();
            case 1:
              return new Ctor(args[0]);
            case 2:
              return new Ctor(args[0], args[1]);
            case 3:
              return new Ctor(args[0], args[1], args[2]);
            case 4:
              return new Ctor(args[0], args[1], args[2], args[3]);
            case 5:
              return new Ctor(args[0], args[1], args[2], args[3], args[4]);
            case 6:
              return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
            case 7:
              return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
          }
          var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);
          return isObject2(result2) ? result2 : thisBinding;
        };
      }
      function createCurry(func, bitmask, arity) {
        var Ctor = createCtor(func);
        function wrapper() {
          var length2 = arguments.length, args = Array2(length2), index2 = length2, placeholder = getHolder(wrapper);
          while (index2--) {
            args[index2] = arguments[index2];
          }
          var holders = length2 < 3 && args[0] !== placeholder && args[length2 - 1] !== placeholder ? [] : replaceHolders(args, placeholder);
          length2 -= holders.length;
          if (length2 < arity) {
            return createRecurry(
              func,
              bitmask,
              createHybrid,
              wrapper.placeholder,
              undefined$1,
              args,
              holders,
              undefined$1,
              undefined$1,
              arity - length2
            );
          }
          var fn = this && this !== root2 && this instanceof wrapper ? Ctor : func;
          return apply2(fn, this, args);
        }
        return wrapper;
      }
      function createFind(findIndexFunc) {
        return function(collection, predicate, fromIndex) {
          var iterable = Object2(collection);
          if (!isArrayLike(collection)) {
            var iteratee2 = getIteratee(predicate, 3);
            collection = keys(collection);
            predicate = function(key) {
              return iteratee2(iterable[key], key, iterable);
            };
          }
          var index2 = findIndexFunc(collection, predicate, fromIndex);
          return index2 > -1 ? iterable[iteratee2 ? collection[index2] : index2] : undefined$1;
        };
      }
      function createFlow(fromRight) {
        return flatRest(function(funcs) {
          var length2 = funcs.length, index2 = length2, prereq = LodashWrapper.prototype.thru;
          if (fromRight) {
            funcs.reverse();
          }
          while (index2--) {
            var func = funcs[index2];
            if (typeof func != "function") {
              throw new TypeError2(FUNC_ERROR_TEXT);
            }
            if (prereq && !wrapper && getFuncName(func) == "wrapper") {
              var wrapper = new LodashWrapper([], true);
            }
          }
          index2 = wrapper ? index2 : length2;
          while (++index2 < length2) {
            func = funcs[index2];
            var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined$1;
            if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {
              wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
            } else {
              wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);
            }
          }
          return function() {
            var args = arguments, value = args[0];
            if (wrapper && args.length == 1 && isArray2(value)) {
              return wrapper.plant(value).value();
            }
            var index3 = 0, result2 = length2 ? funcs[index3].apply(this, args) : value;
            while (++index3 < length2) {
              result2 = funcs[index3].call(this, result2);
            }
            return result2;
          };
        });
      }
      function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {
        var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined$1 : createCtor(func);
        function wrapper() {
          var length2 = arguments.length, args = Array2(length2), index2 = length2;
          while (index2--) {
            args[index2] = arguments[index2];
          }
          if (isCurried) {
            var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);
          }
          if (partials) {
            args = composeArgs(args, partials, holders, isCurried);
          }
          if (partialsRight) {
            args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
          }
          length2 -= holdersCount;
          if (isCurried && length2 < arity) {
            var newHolders = replaceHolders(args, placeholder);
            return createRecurry(
              func,
              bitmask,
              createHybrid,
              wrapper.placeholder,
              thisArg,
              args,
              newHolders,
              argPos,
              ary2,
              arity - length2
            );
          }
          var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
          length2 = args.length;
          if (argPos) {
            args = reorder(args, argPos);
          } else if (isFlip && length2 > 1) {
            args.reverse();
          }
          if (isAry && ary2 < length2) {
            args.length = ary2;
          }
          if (this && this !== root2 && this instanceof wrapper) {
            fn = Ctor || createCtor(fn);
          }
          return fn.apply(thisBinding, args);
        }
        return wrapper;
      }
      function createInverter(setter, toIteratee) {
        return function(object, iteratee2) {
          return baseInverter(object, setter, toIteratee(iteratee2), {});
        };
      }
      function createMathOperation(operator, defaultValue) {
        return function(value, other) {
          var result2;
          if (value === undefined$1 && other === undefined$1) {
            return defaultValue;
          }
          if (value !== undefined$1) {
            result2 = value;
          }
          if (other !== undefined$1) {
            if (result2 === undefined$1) {
              return other;
            }
            if (typeof value == "string" || typeof other == "string") {
              value = baseToString2(value);
              other = baseToString2(other);
            } else {
              value = baseToNumber(value);
              other = baseToNumber(other);
            }
            result2 = operator(value, other);
          }
          return result2;
        };
      }
      function createOver(arrayFunc) {
        return flatRest(function(iteratees) {
          iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
          return baseRest(function(args) {
            var thisArg = this;
            return arrayFunc(iteratees, function(iteratee2) {
              return apply2(iteratee2, thisArg, args);
            });
          });
        });
      }
      function createPadding(length2, chars) {
        chars = chars === undefined$1 ? " " : baseToString2(chars);
        var charsLength = chars.length;
        if (charsLength < 2) {
          return charsLength ? baseRepeat(chars, length2) : chars;
        }
        var result2 = baseRepeat(chars, nativeCeil(length2 / stringSize(chars)));
        return hasUnicode2(chars) ? castSlice2(stringToArray2(result2), 0, length2).join("") : result2.slice(0, length2);
      }
      function createPartial(func, bitmask, thisArg, partials) {
        var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);
        function wrapper() {
          var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root2 && this instanceof wrapper ? Ctor : func;
          while (++leftIndex < leftLength) {
            args[leftIndex] = partials[leftIndex];
          }
          while (argsLength--) {
            args[leftIndex++] = arguments[++argsIndex];
          }
          return apply2(fn, isBind ? thisArg : this, args);
        }
        return wrapper;
      }
      function createRange(fromRight) {
        return function(start, end, step) {
          if (step && typeof step != "number" && isIterateeCall(start, end, step)) {
            end = step = undefined$1;
          }
          start = toFinite(start);
          if (end === undefined$1) {
            end = start;
            start = 0;
          } else {
            end = toFinite(end);
          }
          step = step === undefined$1 ? start < end ? 1 : -1 : toFinite(step);
          return baseRange(start, end, step, fromRight);
        };
      }
      function createRelationalOperation(operator) {
        return function(value, other) {
          if (!(typeof value == "string" && typeof other == "string")) {
            value = toNumber2(value);
            other = toNumber2(other);
          }
          return operator(value, other);
        };
      }
      function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {
        var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined$1, newHoldersRight = isCurry ? undefined$1 : holders, newPartials = isCurry ? partials : undefined$1, newPartialsRight = isCurry ? undefined$1 : partials;
        bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
        bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
        if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
          bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
        }
        var newData = [
          func,
          bitmask,
          thisArg,
          newPartials,
          newHolders,
          newPartialsRight,
          newHoldersRight,
          argPos,
          ary2,
          arity
        ];
        var result2 = wrapFunc.apply(undefined$1, newData);
        if (isLaziable(func)) {
          setData(result2, newData);
        }
        result2.placeholder = placeholder;
        return setWrapToString(result2, func, bitmask);
      }
      function createRound(methodName) {
        var func = Math2[methodName];
        return function(number2, precision) {
          number2 = toNumber2(number2);
          precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
          if (precision && nativeIsFinite(number2)) {
            var pair = (toString2(number2) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision));
            pair = (toString2(value) + "e").split("e");
            return +(pair[0] + "e" + (+pair[1] - precision));
          }
          return func(number2);
        };
      }
      var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY2) ? noop2 : function(values2) {
        return new Set2(values2);
      };
      function createToPairs(keysFunc) {
        return function(object) {
          var tag = getTag(object);
          if (tag == mapTag) {
            return mapToArray(object);
          }
          if (tag == setTag) {
            return setToPairs(object);
          }
          return baseToPairs(object, keysFunc(object));
        };
      }
      function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {
        var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
        if (!isBindKey && typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        var length2 = partials ? partials.length : 0;
        if (!length2) {
          bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
          partials = holders = undefined$1;
        }
        ary2 = ary2 === undefined$1 ? ary2 : nativeMax(toInteger(ary2), 0);
        arity = arity === undefined$1 ? arity : toInteger(arity);
        length2 -= holders ? holders.length : 0;
        if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
          var partialsRight = partials, holdersRight = holders;
          partials = holders = undefined$1;
        }
        var data = isBindKey ? undefined$1 : getData(func);
        var newData = [
          func,
          bitmask,
          thisArg,
          partials,
          holders,
          partialsRight,
          holdersRight,
          argPos,
          ary2,
          arity
        ];
        if (data) {
          mergeData(newData, data);
        }
        func = newData[0];
        bitmask = newData[1];
        thisArg = newData[2];
        partials = newData[3];
        holders = newData[4];
        arity = newData[9] = newData[9] === undefined$1 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length2, 0);
        if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
          bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
        }
        if (!bitmask || bitmask == WRAP_BIND_FLAG) {
          var result2 = createBind(func, bitmask, thisArg);
        } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
          result2 = createCurry(func, bitmask, arity);
        } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
          result2 = createPartial(func, bitmask, thisArg, partials);
        } else {
          result2 = createHybrid.apply(undefined$1, newData);
        }
        var setter = data ? baseSetData : setData;
        return setWrapToString(setter(result2, newData), func, bitmask);
      }
      function customDefaultsAssignIn(objValue, srcValue, key, object) {
        if (objValue === undefined$1 || eq(objValue, objectProto2[key]) && !hasOwnProperty2.call(object, key)) {
          return srcValue;
        }
        return objValue;
      }
      function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
        if (isObject2(objValue) && isObject2(srcValue)) {
          stack.set(srcValue, objValue);
          baseMerge(objValue, srcValue, undefined$1, customDefaultsMerge, stack);
          stack["delete"](srcValue);
        }
        return objValue;
      }
      function customOmitClone(value) {
        return isPlainObject2(value) ? undefined$1 : value;
      }
      function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;
        if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
          return false;
        }
        var arrStacked = stack.get(array);
        var othStacked = stack.get(other);
        if (arrStacked && othStacked) {
          return arrStacked == other && othStacked == array;
        }
        var index2 = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined$1;
        stack.set(array, other);
        stack.set(other, array);
        while (++index2 < arrLength) {
          var arrValue = array[index2], othValue = other[index2];
          if (customizer) {
            var compared = isPartial ? customizer(othValue, arrValue, index2, other, array, stack) : customizer(arrValue, othValue, index2, array, other, stack);
          }
          if (compared !== undefined$1) {
            if (compared) {
              continue;
            }
            result2 = false;
            break;
          }
          if (seen) {
            if (!arraySome(other, function(othValue2, othIndex) {
              if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
                return seen.push(othIndex);
              }
            })) {
              result2 = false;
              break;
            }
          } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
            result2 = false;
            break;
          }
        }
        stack["delete"](array);
        stack["delete"](other);
        return result2;
      }
      function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
        switch (tag) {
          case dataViewTag:
            if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
              return false;
            }
            object = object.buffer;
            other = other.buffer;
          case arrayBufferTag:
            if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
              return false;
            }
            return true;
          case boolTag:
          case dateTag:
          case numberTag:
            return eq(+object, +other);
          case errorTag:
            return object.name == other.name && object.message == other.message;
          case regexpTag:
          case stringTag:
            return object == other + "";
          case mapTag:
            var convert = mapToArray;
          case setTag:
            var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
            convert || (convert = setToArray);
            if (object.size != other.size && !isPartial) {
              return false;
            }
            var stacked = stack.get(object);
            if (stacked) {
              return stacked == other;
            }
            bitmask |= COMPARE_UNORDERED_FLAG;
            stack.set(object, other);
            var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
            stack["delete"](object);
            return result2;
          case symbolTag2:
            if (symbolValueOf) {
              return symbolValueOf.call(object) == symbolValueOf.call(other);
            }
        }
        return false;
      }
      function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
        if (objLength != othLength && !isPartial) {
          return false;
        }
        var index2 = objLength;
        while (index2--) {
          var key = objProps[index2];
          if (!(isPartial ? key in other : hasOwnProperty2.call(other, key))) {
            return false;
          }
        }
        var objStacked = stack.get(object);
        var othStacked = stack.get(other);
        if (objStacked && othStacked) {
          return objStacked == other && othStacked == object;
        }
        var result2 = true;
        stack.set(object, other);
        stack.set(other, object);
        var skipCtor = isPartial;
        while (++index2 < objLength) {
          key = objProps[index2];
          var objValue = object[key], othValue = other[key];
          if (customizer) {
            var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
          }
          if (!(compared === undefined$1 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
            result2 = false;
            break;
          }
          skipCtor || (skipCtor = key == "constructor");
        }
        if (result2 && !skipCtor) {
          var objCtor = object.constructor, othCtor = other.constructor;
          if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
            result2 = false;
          }
        }
        stack["delete"](object);
        stack["delete"](other);
        return result2;
      }
      function flatRest(func) {
        return setToString(overRest(func, undefined$1, flatten), func + "");
      }
      function getAllKeys(object) {
        return baseGetAllKeys(object, keys, getSymbols);
      }
      function getAllKeysIn(object) {
        return baseGetAllKeys(object, keysIn, getSymbolsIn);
      }
      var getData = !metaMap ? noop2 : function(func) {
        return metaMap.get(func);
      };
      function getFuncName(func) {
        var result2 = func.name + "", array = realNames[result2], length2 = hasOwnProperty2.call(realNames, result2) ? array.length : 0;
        while (length2--) {
          var data = array[length2], otherFunc = data.func;
          if (otherFunc == null || otherFunc == func) {
            return data.name;
          }
        }
        return result2;
      }
      function getHolder(func) {
        var object = hasOwnProperty2.call(lodash2, "placeholder") ? lodash2 : func;
        return object.placeholder;
      }
      function getIteratee() {
        var result2 = lodash2.iteratee || iteratee;
        result2 = result2 === iteratee ? baseIteratee : result2;
        return arguments.length ? result2(arguments[0], arguments[1]) : result2;
      }
      function getMapData(map3, key) {
        var data = map3.__data__;
        return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
      }
      function getMatchData(object) {
        var result2 = keys(object), length2 = result2.length;
        while (length2--) {
          var key = result2[length2], value = object[key];
          result2[length2] = [key, value, isStrictComparable(value)];
        }
        return result2;
      }
      function getNative(object, key) {
        var value = getValue2(object, key);
        return baseIsNative(value) ? value : undefined$1;
      }
      function getRawTag(value) {
        var isOwn = hasOwnProperty2.call(value, symToStringTag), tag = value[symToStringTag];
        try {
          value[symToStringTag] = undefined$1;
          var unmasked = true;
        } catch (e) {
        }
        var result2 = nativeObjectToString.call(value);
        if (unmasked) {
          if (isOwn) {
            value[symToStringTag] = tag;
          } else {
            delete value[symToStringTag];
          }
        }
        return result2;
      }
      var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
        if (object == null) {
          return [];
        }
        object = Object2(object);
        return arrayFilter(nativeGetSymbols(object), function(symbol) {
          return propertyIsEnumerable.call(object, symbol);
        });
      };
      var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
        var result2 = [];
        while (object) {
          arrayPush(result2, getSymbols(object));
          object = getPrototype(object);
        }
        return result2;
      };
      var getTag = baseGetTag;
      if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) {
        getTag = function(value) {
          var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined$1, ctorString = Ctor ? toSource(Ctor) : "";
          if (ctorString) {
            switch (ctorString) {
              case dataViewCtorString:
                return dataViewTag;
              case mapCtorString:
                return mapTag;
              case promiseCtorString:
                return promiseTag;
              case setCtorString:
                return setTag;
              case weakMapCtorString:
                return weakMapTag;
            }
          }
          return result2;
        };
      }
      function getView(start, end, transforms) {
        var index2 = -1, length2 = transforms.length;
        while (++index2 < length2) {
          var data = transforms[index2], size3 = data.size;
          switch (data.type) {
            case "drop":
              start += size3;
              break;
            case "dropRight":
              end -= size3;
              break;
            case "take":
              end = nativeMin(end, start + size3);
              break;
            case "takeRight":
              start = nativeMax(start, end - size3);
              break;
          }
        }
        return { "start": start, "end": end };
      }
      function getWrapDetails(source) {
        var match3 = source.match(reWrapDetails);
        return match3 ? match3[1].split(reSplitDetails) : [];
      }
      function hasPath(object, path, hasFunc) {
        path = castPath(path, object);
        var index2 = -1, length2 = path.length, result2 = false;
        while (++index2 < length2) {
          var key = toKey(path[index2]);
          if (!(result2 = object != null && hasFunc(object, key))) {
            break;
          }
          object = object[key];
        }
        if (result2 || ++index2 != length2) {
          return result2;
        }
        length2 = object == null ? 0 : object.length;
        return !!length2 && isLength(length2) && isIndex(key, length2) && (isArray2(object) || isArguments(object));
      }
      function initCloneArray(array) {
        var length2 = array.length, result2 = new array.constructor(length2);
        if (length2 && typeof array[0] == "string" && hasOwnProperty2.call(array, "index")) {
          result2.index = array.index;
          result2.input = array.input;
        }
        return result2;
      }
      function initCloneObject(object) {
        return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
      }
      function initCloneByTag(object, tag, isDeep) {
        var Ctor = object.constructor;
        switch (tag) {
          case arrayBufferTag:
            return cloneArrayBuffer(object);
          case boolTag:
          case dateTag:
            return new Ctor(+object);
          case dataViewTag:
            return cloneDataView(object, isDeep);
          case float32Tag:
          case float64Tag:
          case int8Tag:
          case int16Tag:
          case int32Tag:
          case uint8Tag:
          case uint8ClampedTag:
          case uint16Tag:
          case uint32Tag:
            return cloneTypedArray(object, isDeep);
          case mapTag:
            return new Ctor();
          case numberTag:
          case stringTag:
            return new Ctor(object);
          case regexpTag:
            return cloneRegExp(object);
          case setTag:
            return new Ctor();
          case symbolTag2:
            return cloneSymbol(object);
        }
      }
      function insertWrapDetails(source, details) {
        var length2 = details.length;
        if (!length2) {
          return source;
        }
        var lastIndex = length2 - 1;
        details[lastIndex] = (length2 > 1 ? "& " : "") + details[lastIndex];
        details = details.join(length2 > 2 ? ", " : " ");
        return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n");
      }
      function isFlattenable(value) {
        return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
      }
      function isIndex(value, length2) {
        var type2 = typeof value;
        length2 = length2 == null ? MAX_SAFE_INTEGER : length2;
        return !!length2 && (type2 == "number" || type2 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length2);
      }
      function isIterateeCall(value, index2, object) {
        if (!isObject2(object)) {
          return false;
        }
        var type2 = typeof index2;
        if (type2 == "number" ? isArrayLike(object) && isIndex(index2, object.length) : type2 == "string" && index2 in object) {
          return eq(object[index2], value);
        }
        return false;
      }
      function isKey(value, object) {
        if (isArray2(value)) {
          return false;
        }
        var type2 = typeof value;
        if (type2 == "number" || type2 == "symbol" || type2 == "boolean" || value == null || isSymbol2(value)) {
          return true;
        }
        return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);
      }
      function isKeyable(value) {
        var type2 = typeof value;
        return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value !== "__proto__" : value === null;
      }
      function isLaziable(func) {
        var funcName = getFuncName(func), other = lodash2[funcName];
        if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) {
          return false;
        }
        if (func === other) {
          return true;
        }
        var data = getData(other);
        return !!data && func === data[0];
      }
      function isMasked(func) {
        return !!maskSrcKey && maskSrcKey in func;
      }
      var isMaskable = coreJsData ? isFunction2 : stubFalse;
      function isPrototype(value) {
        var Ctor = value && value.constructor, proto2 = typeof Ctor == "function" && Ctor.prototype || objectProto2;
        return value === proto2;
      }
      function isStrictComparable(value) {
        return value === value && !isObject2(value);
      }
      function matchesStrictComparable(key, srcValue) {
        return function(object) {
          if (object == null) {
            return false;
          }
          return object[key] === srcValue && (srcValue !== undefined$1 || key in Object2(object));
        };
      }
      function memoizeCapped(func) {
        var result2 = memoize(func, function(key) {
          if (cache2.size === MAX_MEMOIZE_SIZE) {
            cache2.clear();
          }
          return key;
        });
        var cache2 = result2.cache;
        return result2;
      }
      function mergeData(data, source) {
        var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
        var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;
        if (!(isCommon || isCombo)) {
          return data;
        }
        if (srcBitmask & WRAP_BIND_FLAG) {
          data[2] = source[2];
          newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
        }
        var value = source[3];
        if (value) {
          var partials = data[3];
          data[3] = partials ? composeArgs(partials, value, source[4]) : value;
          data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
        }
        value = source[5];
        if (value) {
          partials = data[5];
          data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
          data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
        }
        value = source[7];
        if (value) {
          data[7] = value;
        }
        if (srcBitmask & WRAP_ARY_FLAG) {
          data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
        }
        if (data[9] == null) {
          data[9] = source[9];
        }
        data[0] = source[0];
        data[1] = newBitmask;
        return data;
      }
      function nativeKeysIn(object) {
        var result2 = [];
        if (object != null) {
          for (var key in Object2(object)) {
            result2.push(key);
          }
        }
        return result2;
      }
      function objectToString2(value) {
        return nativeObjectToString.call(value);
      }
      function overRest(func, start, transform2) {
        start = nativeMax(start === undefined$1 ? func.length - 1 : start, 0);
        return function() {
          var args = arguments, index2 = -1, length2 = nativeMax(args.length - start, 0), array = Array2(length2);
          while (++index2 < length2) {
            array[index2] = args[start + index2];
          }
          index2 = -1;
          var otherArgs = Array2(start + 1);
          while (++index2 < start) {
            otherArgs[index2] = args[index2];
          }
          otherArgs[start] = transform2(array);
          return apply2(func, this, otherArgs);
        };
      }
      function parent(object, path) {
        return path.length < 2 ? object : baseGet(object, baseSlice2(path, 0, -1));
      }
      function reorder(array, indexes) {
        var arrLength = array.length, length2 = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);
        while (length2--) {
          var index2 = indexes[length2];
          array[length2] = isIndex(index2, arrLength) ? oldArray[index2] : undefined$1;
        }
        return array;
      }
      function safeGet(object, key) {
        if (key === "constructor" && typeof object[key] === "function") {
          return;
        }
        if (key == "__proto__") {
          return;
        }
        return object[key];
      }
      var setData = shortOut(baseSetData);
      var setTimeout2 = ctxSetTimeout || function(func, wait) {
        return root2.setTimeout(func, wait);
      };
      var setToString = shortOut(baseSetToString);
      function setWrapToString(wrapper, reference3, bitmask) {
        var source = reference3 + "";
        return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
      }
      function shortOut(func) {
        var count = 0, lastCalled = 0;
        return function() {
          var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
          lastCalled = stamp;
          if (remaining > 0) {
            if (++count >= HOT_COUNT) {
              return arguments[0];
            }
          } else {
            count = 0;
          }
          return func.apply(undefined$1, arguments);
        };
      }
      function shuffleSelf(array, size3) {
        var index2 = -1, length2 = array.length, lastIndex = length2 - 1;
        size3 = size3 === undefined$1 ? length2 : size3;
        while (++index2 < size3) {
          var rand = baseRandom(index2, lastIndex), value = array[rand];
          array[rand] = array[index2];
          array[index2] = value;
        }
        array.length = size3;
        return array;
      }
      var stringToPath = memoizeCapped(function(string) {
        var result2 = [];
        if (string.charCodeAt(0) === 46) {
          result2.push("");
        }
        string.replace(rePropName, function(match3, number2, quote, subString) {
          result2.push(quote ? subString.replace(reEscapeChar, "$1") : number2 || match3);
        });
        return result2;
      });
      function toKey(value) {
        if (typeof value == "string" || isSymbol2(value)) {
          return value;
        }
        var result2 = value + "";
        return result2 == "0" && 1 / value == -INFINITY2 ? "-0" : result2;
      }
      function toSource(func) {
        if (func != null) {
          try {
            return funcToString.call(func);
          } catch (e) {
          }
          try {
            return func + "";
          } catch (e) {
          }
        }
        return "";
      }
      function updateWrapDetails(details, bitmask) {
        arrayEach(wrapFlags, function(pair) {
          var value = "_." + pair[0];
          if (bitmask & pair[1] && !arrayIncludes(details, value)) {
            details.push(value);
          }
        });
        return details.sort();
      }
      function wrapperClone(wrapper) {
        if (wrapper instanceof LazyWrapper) {
          return wrapper.clone();
        }
        var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
        result2.__actions__ = copyArray(wrapper.__actions__);
        result2.__index__ = wrapper.__index__;
        result2.__values__ = wrapper.__values__;
        return result2;
      }
      function chunk(array, size3, guard) {
        if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined$1) {
          size3 = 1;
        } else {
          size3 = nativeMax(toInteger(size3), 0);
        }
        var length2 = array == null ? 0 : array.length;
        if (!length2 || size3 < 1) {
          return [];
        }
        var index2 = 0, resIndex = 0, result2 = Array2(nativeCeil(length2 / size3));
        while (index2 < length2) {
          result2[resIndex++] = baseSlice2(array, index2, index2 += size3);
        }
        return result2;
      }
      function compact(array) {
        var index2 = -1, length2 = array == null ? 0 : array.length, resIndex = 0, result2 = [];
        while (++index2 < length2) {
          var value = array[index2];
          if (value) {
            result2[resIndex++] = value;
          }
        }
        return result2;
      }
      function concat() {
        var length2 = arguments.length;
        if (!length2) {
          return [];
        }
        var args = Array2(length2 - 1), array = arguments[0], index2 = length2;
        while (index2--) {
          args[index2 - 1] = arguments[index2];
        }
        return arrayPush(isArray2(array) ? copyArray(array) : [array], baseFlatten(args, 1));
      }
      var difference = baseRest(function(array, values2) {
        return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
      });
      var differenceBy = baseRest(function(array, values2) {
        var iteratee2 = last(values2);
        if (isArrayLikeObject(iteratee2)) {
          iteratee2 = undefined$1;
        }
        return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];
      });
      var differenceWith = baseRest(function(array, values2) {
        var comparator2 = last(values2);
        if (isArrayLikeObject(comparator2)) {
          comparator2 = undefined$1;
        }
        return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined$1, comparator2) : [];
      });
      function drop(array, n, guard) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        return baseSlice2(array, n < 0 ? 0 : n, length2);
      }
      function dropRight(array, n, guard) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        n = length2 - n;
        return baseSlice2(array, 0, n < 0 ? 0 : n);
      }
      function dropRightWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];
      }
      function dropWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];
      }
      function fill(array, value, start, end) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        if (start && typeof start != "number" && isIterateeCall(array, value, start)) {
          start = 0;
          end = length2;
        }
        return baseFill(array, value, start, end);
      }
      function findIndex(array, predicate, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = fromIndex == null ? 0 : toInteger(fromIndex);
        if (index2 < 0) {
          index2 = nativeMax(length2 + index2, 0);
        }
        return baseFindIndex(array, getIteratee(predicate, 3), index2);
      }
      function findLastIndex(array, predicate, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = length2 - 1;
        if (fromIndex !== undefined$1) {
          index2 = toInteger(fromIndex);
          index2 = fromIndex < 0 ? nativeMax(length2 + index2, 0) : nativeMin(index2, length2 - 1);
        }
        return baseFindIndex(array, getIteratee(predicate, 3), index2, true);
      }
      function flatten(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseFlatten(array, 1) : [];
      }
      function flattenDeep(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseFlatten(array, INFINITY2) : [];
      }
      function flattenDepth(array, depth) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        depth = depth === undefined$1 ? 1 : toInteger(depth);
        return baseFlatten(array, depth);
      }
      function fromPairs(pairs) {
        var index2 = -1, length2 = pairs == null ? 0 : pairs.length, result2 = {};
        while (++index2 < length2) {
          var pair = pairs[index2];
          result2[pair[0]] = pair[1];
        }
        return result2;
      }
      function head(array) {
        return array && array.length ? array[0] : undefined$1;
      }
      function indexOf2(array, value, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = fromIndex == null ? 0 : toInteger(fromIndex);
        if (index2 < 0) {
          index2 = nativeMax(length2 + index2, 0);
        }
        return baseIndexOf(array, value, index2);
      }
      function initial(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseSlice2(array, 0, -1) : [];
      }
      var intersection = baseRest(function(arrays) {
        var mapped = arrayMap(arrays, castArrayLikeObject);
        return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
      });
      var intersectionBy = baseRest(function(arrays) {
        var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
        if (iteratee2 === last(mapped)) {
          iteratee2 = undefined$1;
        } else {
          mapped.pop();
        }
        return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];
      });
      var intersectionWith = baseRest(function(arrays) {
        var comparator2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        if (comparator2) {
          mapped.pop();
        }
        return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined$1, comparator2) : [];
      });
      function join2(array, separator) {
        return array == null ? "" : nativeJoin.call(array, separator);
      }
      function last(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? array[length2 - 1] : undefined$1;
      }
      function lastIndexOf(array, value, fromIndex) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return -1;
        }
        var index2 = length2;
        if (fromIndex !== undefined$1) {
          index2 = toInteger(fromIndex);
          index2 = index2 < 0 ? nativeMax(length2 + index2, 0) : nativeMin(index2, length2 - 1);
        }
        return value === value ? strictLastIndexOf(array, value, index2) : baseFindIndex(array, baseIsNaN, index2, true);
      }
      function nth(array, n) {
        return array && array.length ? baseNth(array, toInteger(n)) : undefined$1;
      }
      var pull = baseRest(pullAll);
      function pullAll(array, values2) {
        return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array;
      }
      function pullAllBy(array, values2, iteratee2) {
        return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array;
      }
      function pullAllWith(array, values2, comparator2) {
        return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined$1, comparator2) : array;
      }
      var pullAt = flatRest(function(array, indexes) {
        var length2 = array == null ? 0 : array.length, result2 = baseAt(array, indexes);
        basePullAt(array, arrayMap(indexes, function(index2) {
          return isIndex(index2, length2) ? +index2 : index2;
        }).sort(compareAscending));
        return result2;
      });
      function remove2(array, predicate) {
        var result2 = [];
        if (!(array && array.length)) {
          return result2;
        }
        var index2 = -1, indexes = [], length2 = array.length;
        predicate = getIteratee(predicate, 3);
        while (++index2 < length2) {
          var value = array[index2];
          if (predicate(value, index2, array)) {
            result2.push(value);
            indexes.push(index2);
          }
        }
        basePullAt(array, indexes);
        return result2;
      }
      function reverse(array) {
        return array == null ? array : nativeReverse.call(array);
      }
      function slice(array, start, end) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        if (end && typeof end != "number" && isIterateeCall(array, start, end)) {
          start = 0;
          end = length2;
        } else {
          start = start == null ? 0 : toInteger(start);
          end = end === undefined$1 ? length2 : toInteger(end);
        }
        return baseSlice2(array, start, end);
      }
      function sortedIndex(array, value) {
        return baseSortedIndex(array, value);
      }
      function sortedIndexBy(array, value, iteratee2) {
        return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2));
      }
      function sortedIndexOf(array, value) {
        var length2 = array == null ? 0 : array.length;
        if (length2) {
          var index2 = baseSortedIndex(array, value);
          if (index2 < length2 && eq(array[index2], value)) {
            return index2;
          }
        }
        return -1;
      }
      function sortedLastIndex(array, value) {
        return baseSortedIndex(array, value, true);
      }
      function sortedLastIndexBy(array, value, iteratee2) {
        return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true);
      }
      function sortedLastIndexOf(array, value) {
        var length2 = array == null ? 0 : array.length;
        if (length2) {
          var index2 = baseSortedIndex(array, value, true) - 1;
          if (eq(array[index2], value)) {
            return index2;
          }
        }
        return -1;
      }
      function sortedUniq(array) {
        return array && array.length ? baseSortedUniq(array) : [];
      }
      function sortedUniqBy(array, iteratee2) {
        return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : [];
      }
      function tail(array) {
        var length2 = array == null ? 0 : array.length;
        return length2 ? baseSlice2(array, 1, length2) : [];
      }
      function take(array, n, guard) {
        if (!(array && array.length)) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        return baseSlice2(array, 0, n < 0 ? 0 : n);
      }
      function takeRight(array, n, guard) {
        var length2 = array == null ? 0 : array.length;
        if (!length2) {
          return [];
        }
        n = guard || n === undefined$1 ? 1 : toInteger(n);
        n = length2 - n;
        return baseSlice2(array, n < 0 ? 0 : n, length2);
      }
      function takeRightWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];
      }
      function takeWhile(array, predicate) {
        return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];
      }
      var union = baseRest(function(arrays) {
        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
      });
      var unionBy = baseRest(function(arrays) {
        var iteratee2 = last(arrays);
        if (isArrayLikeObject(iteratee2)) {
          iteratee2 = undefined$1;
        }
        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));
      });
      var unionWith = baseRest(function(arrays) {
        var comparator2 = last(arrays);
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined$1, comparator2);
      });
      function uniq(array) {
        return array && array.length ? baseUniq(array) : [];
      }
      function uniqBy(array, iteratee2) {
        return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : [];
      }
      function uniqWith(array, comparator2) {
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        return array && array.length ? baseUniq(array, undefined$1, comparator2) : [];
      }
      function unzip(array) {
        if (!(array && array.length)) {
          return [];
        }
        var length2 = 0;
        array = arrayFilter(array, function(group) {
          if (isArrayLikeObject(group)) {
            length2 = nativeMax(group.length, length2);
            return true;
          }
        });
        return baseTimes(length2, function(index2) {
          return arrayMap(array, baseProperty(index2));
        });
      }
      function unzipWith(array, iteratee2) {
        if (!(array && array.length)) {
          return [];
        }
        var result2 = unzip(array);
        if (iteratee2 == null) {
          return result2;
        }
        return arrayMap(result2, function(group) {
          return apply2(iteratee2, undefined$1, group);
        });
      }
      var without = baseRest(function(array, values2) {
        return isArrayLikeObject(array) ? baseDifference(array, values2) : [];
      });
      var xor = baseRest(function(arrays) {
        return baseXor(arrayFilter(arrays, isArrayLikeObject));
      });
      var xorBy = baseRest(function(arrays) {
        var iteratee2 = last(arrays);
        if (isArrayLikeObject(iteratee2)) {
          iteratee2 = undefined$1;
        }
        return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));
      });
      var xorWith = baseRest(function(arrays) {
        var comparator2 = last(arrays);
        comparator2 = typeof comparator2 == "function" ? comparator2 : undefined$1;
        return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined$1, comparator2);
      });
      var zip = baseRest(unzip);
      function zipObject(props, values2) {
        return baseZipObject(props || [], values2 || [], assignValue);
      }
      function zipObjectDeep(props, values2) {
        return baseZipObject(props || [], values2 || [], baseSet);
      }
      var zipWith = baseRest(function(arrays) {
        var length2 = arrays.length, iteratee2 = length2 > 1 ? arrays[length2 - 1] : undefined$1;
        iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined$1;
        return unzipWith(arrays, iteratee2);
      });
      function chain(value) {
        var result2 = lodash2(value);
        result2.__chain__ = true;
        return result2;
      }
      function tap(value, interceptor) {
        interceptor(value);
        return value;
      }
      function thru(value, interceptor) {
        return interceptor(value);
      }
      var wrapperAt = flatRest(function(paths) {
        var length2 = paths.length, start = length2 ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {
          return baseAt(object, paths);
        };
        if (length2 > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {
          return this.thru(interceptor);
        }
        value = value.slice(start, +start + (length2 ? 1 : 0));
        value.__actions__.push({
          "func": thru,
          "args": [interceptor],
          "thisArg": undefined$1
        });
        return new LodashWrapper(value, this.__chain__).thru(function(array) {
          if (length2 && !array.length) {
            array.push(undefined$1);
          }
          return array;
        });
      });
      function wrapperChain() {
        return chain(this);
      }
      function wrapperCommit() {
        return new LodashWrapper(this.value(), this.__chain__);
      }
      function wrapperNext() {
        if (this.__values__ === undefined$1) {
          this.__values__ = toArray2(this.value());
        }
        var done = this.__index__ >= this.__values__.length, value = done ? undefined$1 : this.__values__[this.__index__++];
        return { "done": done, "value": value };
      }
      function wrapperToIterator() {
        return this;
      }
      function wrapperPlant(value) {
        var result2, parent2 = this;
        while (parent2 instanceof baseLodash) {
          var clone3 = wrapperClone(parent2);
          clone3.__index__ = 0;
          clone3.__values__ = undefined$1;
          if (result2) {
            previous.__wrapped__ = clone3;
          } else {
            result2 = clone3;
          }
          var previous = clone3;
          parent2 = parent2.__wrapped__;
        }
        previous.__wrapped__ = value;
        return result2;
      }
      function wrapperReverse() {
        var value = this.__wrapped__;
        if (value instanceof LazyWrapper) {
          var wrapped = value;
          if (this.__actions__.length) {
            wrapped = new LazyWrapper(this);
          }
          wrapped = wrapped.reverse();
          wrapped.__actions__.push({
            "func": thru,
            "args": [reverse],
            "thisArg": undefined$1
          });
          return new LodashWrapper(wrapped, this.__chain__);
        }
        return this.thru(reverse);
      }
      function wrapperValue() {
        return baseWrapperValue(this.__wrapped__, this.__actions__);
      }
      var countBy = createAggregator(function(result2, value, key) {
        if (hasOwnProperty2.call(result2, key)) {
          ++result2[key];
        } else {
          baseAssignValue(result2, key, 1);
        }
      });
      function every(collection, predicate, guard) {
        var func = isArray2(collection) ? arrayEvery : baseEvery;
        if (guard && isIterateeCall(collection, predicate, guard)) {
          predicate = undefined$1;
        }
        return func(collection, getIteratee(predicate, 3));
      }
      function filter(collection, predicate) {
        var func = isArray2(collection) ? arrayFilter : baseFilter;
        return func(collection, getIteratee(predicate, 3));
      }
      var find = createFind(findIndex);
      var findLast = createFind(findLastIndex);
      function flatMap(collection, iteratee2) {
        return baseFlatten(map2(collection, iteratee2), 1);
      }
      function flatMapDeep(collection, iteratee2) {
        return baseFlatten(map2(collection, iteratee2), INFINITY2);
      }
      function flatMapDepth(collection, iteratee2, depth) {
        depth = depth === undefined$1 ? 1 : toInteger(depth);
        return baseFlatten(map2(collection, iteratee2), depth);
      }
      function forEach(collection, iteratee2) {
        var func = isArray2(collection) ? arrayEach : baseEach;
        return func(collection, getIteratee(iteratee2, 3));
      }
      function forEachRight(collection, iteratee2) {
        var func = isArray2(collection) ? arrayEachRight : baseEachRight;
        return func(collection, getIteratee(iteratee2, 3));
      }
      var groupBy = createAggregator(function(result2, value, key) {
        if (hasOwnProperty2.call(result2, key)) {
          result2[key].push(value);
        } else {
          baseAssignValue(result2, key, [value]);
        }
      });
      function includes(collection, value, fromIndex, guard) {
        collection = isArrayLike(collection) ? collection : values(collection);
        fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;
        var length2 = collection.length;
        if (fromIndex < 0) {
          fromIndex = nativeMax(length2 + fromIndex, 0);
        }
        return isString2(collection) ? fromIndex <= length2 && collection.indexOf(value, fromIndex) > -1 : !!length2 && baseIndexOf(collection, value, fromIndex) > -1;
      }
      var invokeMap = baseRest(function(collection, path, args) {
        var index2 = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
        baseEach(collection, function(value) {
          result2[++index2] = isFunc ? apply2(path, value, args) : baseInvoke(value, path, args);
        });
        return result2;
      });
      var keyBy = createAggregator(function(result2, value, key) {
        baseAssignValue(result2, key, value);
      });
      function map2(collection, iteratee2) {
        var func = isArray2(collection) ? arrayMap : baseMap;
        return func(collection, getIteratee(iteratee2, 3));
      }
      function orderBy(collection, iteratees, orders, guard) {
        if (collection == null) {
          return [];
        }
        if (!isArray2(iteratees)) {
          iteratees = iteratees == null ? [] : [iteratees];
        }
        orders = guard ? undefined$1 : orders;
        if (!isArray2(orders)) {
          orders = orders == null ? [] : [orders];
        }
        return baseOrderBy(collection, iteratees, orders);
      }
      var partition = createAggregator(function(result2, value, key) {
        result2[key ? 0 : 1].push(value);
      }, function() {
        return [[], []];
      });
      function reduce(collection, iteratee2, accumulator) {
        var func = isArray2(collection) ? arrayReduce2 : baseReduce, initAccum = arguments.length < 3;
        return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);
      }
      function reduceRight(collection, iteratee2, accumulator) {
        var func = isArray2(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;
        return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);
      }
      function reject(collection, predicate) {
        var func = isArray2(collection) ? arrayFilter : baseFilter;
        return func(collection, negate(getIteratee(predicate, 3)));
      }
      function sample(collection) {
        var func = isArray2(collection) ? arraySample : baseSample;
        return func(collection);
      }
      function sampleSize(collection, n, guard) {
        if (guard ? isIterateeCall(collection, n, guard) : n === undefined$1) {
          n = 1;
        } else {
          n = toInteger(n);
        }
        var func = isArray2(collection) ? arraySampleSize : baseSampleSize;
        return func(collection, n);
      }
      function shuffle(collection) {
        var func = isArray2(collection) ? arrayShuffle : baseShuffle;
        return func(collection);
      }
      function size2(collection) {
        if (collection == null) {
          return 0;
        }
        if (isArrayLike(collection)) {
          return isString2(collection) ? stringSize(collection) : collection.length;
        }
        var tag = getTag(collection);
        if (tag == mapTag || tag == setTag) {
          return collection.size;
        }
        return baseKeys(collection).length;
      }
      function some(collection, predicate, guard) {
        var func = isArray2(collection) ? arraySome : baseSome;
        if (guard && isIterateeCall(collection, predicate, guard)) {
          predicate = undefined$1;
        }
        return func(collection, getIteratee(predicate, 3));
      }
      var sortBy = baseRest(function(collection, iteratees) {
        if (collection == null) {
          return [];
        }
        var length2 = iteratees.length;
        if (length2 > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
          iteratees = [];
        } else if (length2 > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
          iteratees = [iteratees[0]];
        }
        return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
      });
      var now = ctxNow || function() {
        return root2.Date.now();
      };
      function after(n, func) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        n = toInteger(n);
        return function() {
          if (--n < 1) {
            return func.apply(this, arguments);
          }
        };
      }
      function ary(func, n, guard) {
        n = guard ? undefined$1 : n;
        n = func && n == null ? func.length : n;
        return createWrap(func, WRAP_ARY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, n);
      }
      function before(n, func) {
        var result2;
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        n = toInteger(n);
        return function() {
          if (--n > 0) {
            result2 = func.apply(this, arguments);
          }
          if (n <= 1) {
            func = undefined$1;
          }
          return result2;
        };
      }
      var bind = baseRest(function(func, thisArg, partials) {
        var bitmask = WRAP_BIND_FLAG;
        if (partials.length) {
          var holders = replaceHolders(partials, getHolder(bind));
          bitmask |= WRAP_PARTIAL_FLAG;
        }
        return createWrap(func, bitmask, thisArg, partials, holders);
      });
      var bindKey = baseRest(function(object, key, partials) {
        var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
        if (partials.length) {
          var holders = replaceHolders(partials, getHolder(bindKey));
          bitmask |= WRAP_PARTIAL_FLAG;
        }
        return createWrap(key, bitmask, object, partials, holders);
      });
      function curry(func, arity, guard) {
        arity = guard ? undefined$1 : arity;
        var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity);
        result2.placeholder = curry.placeholder;
        return result2;
      }
      function curryRight(func, arity, guard) {
        arity = guard ? undefined$1 : arity;
        var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined$1, undefined$1, undefined$1, undefined$1, undefined$1, arity);
        result2.placeholder = curryRight.placeholder;
        return result2;
      }
      function debounce(func, wait, options2) {
        var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        wait = toNumber2(wait) || 0;
        if (isObject2(options2)) {
          leading = !!options2.leading;
          maxing = "maxWait" in options2;
          maxWait = maxing ? nativeMax(toNumber2(options2.maxWait) || 0, wait) : maxWait;
          trailing = "trailing" in options2 ? !!options2.trailing : trailing;
        }
        function invokeFunc(time) {
          var args = lastArgs, thisArg = lastThis;
          lastArgs = lastThis = undefined$1;
          lastInvokeTime = time;
          result2 = func.apply(thisArg, args);
          return result2;
        }
        function leadingEdge(time) {
          lastInvokeTime = time;
          timerId = setTimeout2(timerExpired, wait);
          return leading ? invokeFunc(time) : result2;
        }
        function remainingWait(time) {
          var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
          return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
        }
        function shouldInvoke(time) {
          var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
          return lastCallTime === undefined$1 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
        }
        function timerExpired() {
          var time = now();
          if (shouldInvoke(time)) {
            return trailingEdge(time);
          }
          timerId = setTimeout2(timerExpired, remainingWait(time));
        }
        function trailingEdge(time) {
          timerId = undefined$1;
          if (trailing && lastArgs) {
            return invokeFunc(time);
          }
          lastArgs = lastThis = undefined$1;
          return result2;
        }
        function cancel() {
          if (timerId !== undefined$1) {
            clearTimeout2(timerId);
          }
          lastInvokeTime = 0;
          lastArgs = lastCallTime = lastThis = timerId = undefined$1;
        }
        function flush() {
          return timerId === undefined$1 ? result2 : trailingEdge(now());
        }
        function debounced() {
          var time = now(), isInvoking = shouldInvoke(time);
          lastArgs = arguments;
          lastThis = this;
          lastCallTime = time;
          if (isInvoking) {
            if (timerId === undefined$1) {
              return leadingEdge(lastCallTime);
            }
            if (maxing) {
              clearTimeout2(timerId);
              timerId = setTimeout2(timerExpired, wait);
              return invokeFunc(lastCallTime);
            }
          }
          if (timerId === undefined$1) {
            timerId = setTimeout2(timerExpired, wait);
          }
          return result2;
        }
        debounced.cancel = cancel;
        debounced.flush = flush;
        return debounced;
      }
      var defer = baseRest(function(func, args) {
        return baseDelay(func, 1, args);
      });
      var delay = baseRest(function(func, wait, args) {
        return baseDelay(func, toNumber2(wait) || 0, args);
      });
      function flip2(func) {
        return createWrap(func, WRAP_FLIP_FLAG);
      }
      function memoize(func, resolver) {
        if (typeof func != "function" || resolver != null && typeof resolver != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        var memoized = function() {
          var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache;
          if (cache2.has(key)) {
            return cache2.get(key);
          }
          var result2 = func.apply(this, args);
          memoized.cache = cache2.set(key, result2) || cache2;
          return result2;
        };
        memoized.cache = new (memoize.Cache || MapCache)();
        return memoized;
      }
      memoize.Cache = MapCache;
      function negate(predicate) {
        if (typeof predicate != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        return function() {
          var args = arguments;
          switch (args.length) {
            case 0:
              return !predicate.call(this);
            case 1:
              return !predicate.call(this, args[0]);
            case 2:
              return !predicate.call(this, args[0], args[1]);
            case 3:
              return !predicate.call(this, args[0], args[1], args[2]);
          }
          return !predicate.apply(this, args);
        };
      }
      function once(func) {
        return before(2, func);
      }
      var overArgs = castRest(function(func, transforms) {
        transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
        var funcsLength = transforms.length;
        return baseRest(function(args) {
          var index2 = -1, length2 = nativeMin(args.length, funcsLength);
          while (++index2 < length2) {
            args[index2] = transforms[index2].call(this, args[index2]);
          }
          return apply2(func, this, args);
        });
      });
      var partial = baseRest(function(func, partials) {
        var holders = replaceHolders(partials, getHolder(partial));
        return createWrap(func, WRAP_PARTIAL_FLAG, undefined$1, partials, holders);
      });
      var partialRight = baseRest(function(func, partials) {
        var holders = replaceHolders(partials, getHolder(partialRight));
        return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined$1, partials, holders);
      });
      var rearg = flatRest(function(func, indexes) {
        return createWrap(func, WRAP_REARG_FLAG, undefined$1, undefined$1, undefined$1, indexes);
      });
      function rest(func, start) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        start = start === undefined$1 ? start : toInteger(start);
        return baseRest(func, start);
      }
      function spread(func, start) {
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        start = start == null ? 0 : nativeMax(toInteger(start), 0);
        return baseRest(function(args) {
          var array = args[start], otherArgs = castSlice2(args, 0, start);
          if (array) {
            arrayPush(otherArgs, array);
          }
          return apply2(func, this, otherArgs);
        });
      }
      function throttle(func, wait, options2) {
        var leading = true, trailing = true;
        if (typeof func != "function") {
          throw new TypeError2(FUNC_ERROR_TEXT);
        }
        if (isObject2(options2)) {
          leading = "leading" in options2 ? !!options2.leading : leading;
          trailing = "trailing" in options2 ? !!options2.trailing : trailing;
        }
        return debounce(func, wait, {
          "leading": leading,
          "maxWait": wait,
          "trailing": trailing
        });
      }
      function unary(func) {
        return ary(func, 1);
      }
      function wrap2(value, wrapper) {
        return partial(castFunction(wrapper), value);
      }
      function castArray() {
        if (!arguments.length) {
          return [];
        }
        var value = arguments[0];
        return isArray2(value) ? value : [value];
      }
      function clone2(value) {
        return baseClone(value, CLONE_SYMBOLS_FLAG);
      }
      function cloneWith(value, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
      }
      function cloneDeep(value) {
        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
      }
      function cloneDeepWith(value, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
      }
      function conformsTo(object, source) {
        return source == null || baseConformsTo(object, source, keys(source));
      }
      function eq(value, other) {
        return value === other || value !== value && other !== other;
      }
      var gt2 = createRelationalOperation(baseGt);
      var gte = createRelationalOperation(function(value, other) {
        return value >= other;
      });
      var isArguments = baseIsArguments(function() {
        return arguments;
      }()) ? baseIsArguments : function(value) {
        return isObjectLike2(value) && hasOwnProperty2.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
      };
      var isArray2 = Array2.isArray;
      var isArrayBuffer2 = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
      function isArrayLike(value) {
        return value != null && isLength(value.length) && !isFunction2(value);
      }
      function isArrayLikeObject(value) {
        return isObjectLike2(value) && isArrayLike(value);
      }
      function isBoolean2(value) {
        return value === true || value === false || isObjectLike2(value) && baseGetTag(value) == boolTag;
      }
      var isBuffer = nativeIsBuffer || stubFalse;
      var isDate2 = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
      function isElement2(value) {
        return isObjectLike2(value) && value.nodeType === 1 && !isPlainObject2(value);
      }
      function isEmpty2(value) {
        if (value == null) {
          return true;
        }
        if (isArrayLike(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {
          return !value.length;
        }
        var tag = getTag(value);
        if (tag == mapTag || tag == setTag) {
          return !value.size;
        }
        if (isPrototype(value)) {
          return !baseKeys(value).length;
        }
        for (var key in value) {
          if (hasOwnProperty2.call(value, key)) {
            return false;
          }
        }
        return true;
      }
      function isEqual(value, other) {
        return baseIsEqual(value, other);
      }
      function isEqualWith(value, other, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        var result2 = customizer ? customizer(value, other) : undefined$1;
        return result2 === undefined$1 ? baseIsEqual(value, other, undefined$1, customizer) : !!result2;
      }
      function isError(value) {
        if (!isObjectLike2(value)) {
          return false;
        }
        var tag = baseGetTag(value);
        return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject2(value);
      }
      function isFinite2(value) {
        return typeof value == "number" && nativeIsFinite(value);
      }
      function isFunction2(value) {
        if (!isObject2(value)) {
          return false;
        }
        var tag = baseGetTag(value);
        return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
      }
      function isInteger(value) {
        return typeof value == "number" && value == toInteger(value);
      }
      function isLength(value) {
        return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
      }
      function isObject2(value) {
        var type2 = typeof value;
        return value != null && (type2 == "object" || type2 == "function");
      }
      function isObjectLike2(value) {
        return value != null && typeof value == "object";
      }
      var isMap2 = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
      function isMatch(object, source) {
        return object === source || baseIsMatch(object, source, getMatchData(source));
      }
      function isMatchWith(object, source, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return baseIsMatch(object, source, getMatchData(source), customizer);
      }
      function isNaN2(value) {
        return isNumber2(value) && value != +value;
      }
      function isNative(value) {
        if (isMaskable(value)) {
          throw new Error2(CORE_ERROR_TEXT);
        }
        return baseIsNative(value);
      }
      function isNull(value) {
        return value === null;
      }
      function isNil(value) {
        return value == null;
      }
      function isNumber2(value) {
        return typeof value == "number" || isObjectLike2(value) && baseGetTag(value) == numberTag;
      }
      function isPlainObject2(value) {
        if (!isObjectLike2(value) || baseGetTag(value) != objectTag) {
          return false;
        }
        var proto2 = getPrototype(value);
        if (proto2 === null) {
          return true;
        }
        var Ctor = hasOwnProperty2.call(proto2, "constructor") && proto2.constructor;
        return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
      }
      var isRegExp2 = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
      function isSafeInteger(value) {
        return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
      }
      var isSet2 = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
      function isString2(value) {
        return typeof value == "string" || !isArray2(value) && isObjectLike2(value) && baseGetTag(value) == stringTag;
      }
      function isSymbol2(value) {
        return typeof value == "symbol" || isObjectLike2(value) && baseGetTag(value) == symbolTag2;
      }
      var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
      function isUndefined2(value) {
        return value === undefined$1;
      }
      function isWeakMap(value) {
        return isObjectLike2(value) && getTag(value) == weakMapTag;
      }
      function isWeakSet(value) {
        return isObjectLike2(value) && baseGetTag(value) == weakSetTag;
      }
      var lt2 = createRelationalOperation(baseLt);
      var lte = createRelationalOperation(function(value, other) {
        return value <= other;
      });
      function toArray2(value) {
        if (!value) {
          return [];
        }
        if (isArrayLike(value)) {
          return isString2(value) ? stringToArray2(value) : copyArray(value);
        }
        if (symIterator && value[symIterator]) {
          return iteratorToArray(value[symIterator]());
        }
        var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;
        return func(value);
      }
      function toFinite(value) {
        if (!value) {
          return value === 0 ? value : 0;
        }
        value = toNumber2(value);
        if (value === INFINITY2 || value === -INFINITY2) {
          var sign = value < 0 ? -1 : 1;
          return sign * MAX_INTEGER;
        }
        return value === value ? value : 0;
      }
      function toInteger(value) {
        var result2 = toFinite(value), remainder = result2 % 1;
        return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;
      }
      function toLength(value) {
        return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH2) : 0;
      }
      function toNumber2(value) {
        if (typeof value == "number") {
          return value;
        }
        if (isSymbol2(value)) {
          return NAN;
        }
        if (isObject2(value)) {
          var other = typeof value.valueOf == "function" ? value.valueOf() : value;
          value = isObject2(other) ? other + "" : other;
        }
        if (typeof value != "string") {
          return value === 0 ? value : +value;
        }
        value = baseTrim(value);
        var isBinary2 = reIsBinary.test(value);
        return isBinary2 || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary2 ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
      }
      function toPlainObject(value) {
        return copyObject(value, keysIn(value));
      }
      function toSafeInteger(value) {
        return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;
      }
      function toString2(value) {
        return value == null ? "" : baseToString2(value);
      }
      var assign2 = createAssigner(function(object, source) {
        if (isPrototype(source) || isArrayLike(source)) {
          copyObject(source, keys(source), object);
          return;
        }
        for (var key in source) {
          if (hasOwnProperty2.call(source, key)) {
            assignValue(object, key, source[key]);
          }
        }
      });
      var assignIn = createAssigner(function(object, source) {
        copyObject(source, keysIn(source), object);
      });
      var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
        copyObject(source, keysIn(source), object, customizer);
      });
      var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
        copyObject(source, keys(source), object, customizer);
      });
      var at = flatRest(baseAt);
      function create(prototype, properties) {
        var result2 = baseCreate(prototype);
        return properties == null ? result2 : baseAssign(result2, properties);
      }
      var defaults = baseRest(function(object, sources) {
        object = Object2(object);
        var index2 = -1;
        var length2 = sources.length;
        var guard = length2 > 2 ? sources[2] : undefined$1;
        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
          length2 = 1;
        }
        while (++index2 < length2) {
          var source = sources[index2];
          var props = keysIn(source);
          var propsIndex = -1;
          var propsLength = props.length;
          while (++propsIndex < propsLength) {
            var key = props[propsIndex];
            var value = object[key];
            if (value === undefined$1 || eq(value, objectProto2[key]) && !hasOwnProperty2.call(object, key)) {
              object[key] = source[key];
            }
          }
        }
        return object;
      });
      var defaultsDeep = baseRest(function(args) {
        args.push(undefined$1, customDefaultsMerge);
        return apply2(mergeWith, undefined$1, args);
      });
      function findKey(object, predicate) {
        return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
      }
      function findLastKey(object, predicate) {
        return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
      }
      function forIn(object, iteratee2) {
        return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn);
      }
      function forInRight(object, iteratee2) {
        return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn);
      }
      function forOwn(object, iteratee2) {
        return object && baseForOwn(object, getIteratee(iteratee2, 3));
      }
      function forOwnRight(object, iteratee2) {
        return object && baseForOwnRight(object, getIteratee(iteratee2, 3));
      }
      function functions(object) {
        return object == null ? [] : baseFunctions(object, keys(object));
      }
      function functionsIn(object) {
        return object == null ? [] : baseFunctions(object, keysIn(object));
      }
      function get2(object, path, defaultValue) {
        var result2 = object == null ? undefined$1 : baseGet(object, path);
        return result2 === undefined$1 ? defaultValue : result2;
      }
      function has2(object, path) {
        return object != null && hasPath(object, path, baseHas);
      }
      function hasIn(object, path) {
        return object != null && hasPath(object, path, baseHasIn);
      }
      var invert = createInverter(function(result2, value, key) {
        if (value != null && typeof value.toString != "function") {
          value = nativeObjectToString.call(value);
        }
        result2[value] = key;
      }, constant(identity));
      var invertBy = createInverter(function(result2, value, key) {
        if (value != null && typeof value.toString != "function") {
          value = nativeObjectToString.call(value);
        }
        if (hasOwnProperty2.call(result2, value)) {
          result2[value].push(key);
        } else {
          result2[value] = [key];
        }
      }, getIteratee);
      var invoke = baseRest(baseInvoke);
      function keys(object) {
        return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
      }
      function keysIn(object) {
        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
      }
      function mapKeys(object, iteratee2) {
        var result2 = {};
        iteratee2 = getIteratee(iteratee2, 3);
        baseForOwn(object, function(value, key, object2) {
          baseAssignValue(result2, iteratee2(value, key, object2), value);
        });
        return result2;
      }
      function mapValues(object, iteratee2) {
        var result2 = {};
        iteratee2 = getIteratee(iteratee2, 3);
        baseForOwn(object, function(value, key, object2) {
          baseAssignValue(result2, key, iteratee2(value, key, object2));
        });
        return result2;
      }
      var merge = createAssigner(function(object, source, srcIndex) {
        baseMerge(object, source, srcIndex);
      });
      var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
        baseMerge(object, source, srcIndex, customizer);
      });
      var omit2 = flatRest(function(object, paths) {
        var result2 = {};
        if (object == null) {
          return result2;
        }
        var isDeep = false;
        paths = arrayMap(paths, function(path) {
          path = castPath(path, object);
          isDeep || (isDeep = path.length > 1);
          return path;
        });
        copyObject(object, getAllKeysIn(object), result2);
        if (isDeep) {
          result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
        }
        var length2 = paths.length;
        while (length2--) {
          baseUnset(result2, paths[length2]);
        }
        return result2;
      });
      function omitBy(object, predicate) {
        return pickBy(object, negate(getIteratee(predicate)));
      }
      var pick2 = flatRest(function(object, paths) {
        return object == null ? {} : basePick(object, paths);
      });
      function pickBy(object, predicate) {
        if (object == null) {
          return {};
        }
        var props = arrayMap(getAllKeysIn(object), function(prop2) {
          return [prop2];
        });
        predicate = getIteratee(predicate);
        return basePickBy(object, props, function(value, path) {
          return predicate(value, path[0]);
        });
      }
      function result(object, path, defaultValue) {
        path = castPath(path, object);
        var index2 = -1, length2 = path.length;
        if (!length2) {
          length2 = 1;
          object = undefined$1;
        }
        while (++index2 < length2) {
          var value = object == null ? undefined$1 : object[toKey(path[index2])];
          if (value === undefined$1) {
            index2 = length2;
            value = defaultValue;
          }
          object = isFunction2(value) ? value.call(object) : value;
        }
        return object;
      }
      function set3(object, path, value) {
        return object == null ? object : baseSet(object, path, value);
      }
      function setWith(object, path, value, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return object == null ? object : baseSet(object, path, value, customizer);
      }
      var toPairs = createToPairs(keys);
      var toPairsIn = createToPairs(keysIn);
      function transform(object, iteratee2, accumulator) {
        var isArr = isArray2(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);
        iteratee2 = getIteratee(iteratee2, 4);
        if (accumulator == null) {
          var Ctor = object && object.constructor;
          if (isArrLike) {
            accumulator = isArr ? new Ctor() : [];
          } else if (isObject2(object)) {
            accumulator = isFunction2(Ctor) ? baseCreate(getPrototype(object)) : {};
          } else {
            accumulator = {};
          }
        }
        (isArrLike ? arrayEach : baseForOwn)(object, function(value, index2, object2) {
          return iteratee2(accumulator, value, index2, object2);
        });
        return accumulator;
      }
      function unset(object, path) {
        return object == null ? true : baseUnset(object, path);
      }
      function update(object, path, updater) {
        return object == null ? object : baseUpdate(object, path, castFunction(updater));
      }
      function updateWith(object, path, updater, customizer) {
        customizer = typeof customizer == "function" ? customizer : undefined$1;
        return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
      }
      function values(object) {
        return object == null ? [] : baseValues(object, keys(object));
      }
      function valuesIn(object) {
        return object == null ? [] : baseValues(object, keysIn(object));
      }
      function clamp(number2, lower, upper) {
        if (upper === undefined$1) {
          upper = lower;
          lower = undefined$1;
        }
        if (upper !== undefined$1) {
          upper = toNumber2(upper);
          upper = upper === upper ? upper : 0;
        }
        if (lower !== undefined$1) {
          lower = toNumber2(lower);
          lower = lower === lower ? lower : 0;
        }
        return baseClamp(toNumber2(number2), lower, upper);
      }
      function inRange(number2, start, end) {
        start = toFinite(start);
        if (end === undefined$1) {
          end = start;
          start = 0;
        } else {
          end = toFinite(end);
        }
        number2 = toNumber2(number2);
        return baseInRange(number2, start, end);
      }
      function random(lower, upper, floating) {
        if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) {
          upper = floating = undefined$1;
        }
        if (floating === undefined$1) {
          if (typeof upper == "boolean") {
            floating = upper;
            upper = undefined$1;
          } else if (typeof lower == "boolean") {
            floating = lower;
            lower = undefined$1;
          }
        }
        if (lower === undefined$1 && upper === undefined$1) {
          lower = 0;
          upper = 1;
        } else {
          lower = toFinite(lower);
          if (upper === undefined$1) {
            upper = lower;
            lower = 0;
          } else {
            upper = toFinite(upper);
          }
        }
        if (lower > upper) {
          var temp = lower;
          lower = upper;
          upper = temp;
        }
        if (floating || lower % 1 || upper % 1) {
          var rand = nativeRandom();
          return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper);
        }
        return baseRandom(lower, upper);
      }
      var camelCase2 = createCompounder2(function(result2, word, index2) {
        word = word.toLowerCase();
        return result2 + (index2 ? capitalize2(word) : word);
      });
      function capitalize2(string) {
        return upperFirst2(toString2(string).toLowerCase());
      }
      function deburr2(string) {
        string = toString2(string);
        return string && string.replace(reLatin2, deburrLetter2).replace(reComboMark2, "");
      }
      function endsWith(string, target2, position) {
        string = toString2(string);
        target2 = baseToString2(target2);
        var length2 = string.length;
        position = position === undefined$1 ? length2 : baseClamp(toInteger(position), 0, length2);
        var end = position;
        position -= target2.length;
        return position >= 0 && string.slice(position, end) == target2;
      }
      function escape2(string) {
        string = toString2(string);
        return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;
      }
      function escapeRegExp(string) {
        string = toString2(string);
        return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string;
      }
      var kebabCase = createCompounder2(function(result2, word, index2) {
        return result2 + (index2 ? "-" : "") + word.toLowerCase();
      });
      var lowerCase = createCompounder2(function(result2, word, index2) {
        return result2 + (index2 ? " " : "") + word.toLowerCase();
      });
      var lowerFirst = createCaseFirst2("toLowerCase");
      function pad(string, length2, chars) {
        string = toString2(string);
        length2 = toInteger(length2);
        var strLength = length2 ? stringSize(string) : 0;
        if (!length2 || strLength >= length2) {
          return string;
        }
        var mid2 = (length2 - strLength) / 2;
        return createPadding(nativeFloor(mid2), chars) + string + createPadding(nativeCeil(mid2), chars);
      }
      function padEnd(string, length2, chars) {
        string = toString2(string);
        length2 = toInteger(length2);
        var strLength = length2 ? stringSize(string) : 0;
        return length2 && strLength < length2 ? string + createPadding(length2 - strLength, chars) : string;
      }
      function padStart(string, length2, chars) {
        string = toString2(string);
        length2 = toInteger(length2);
        var strLength = length2 ? stringSize(string) : 0;
        return length2 && strLength < length2 ? createPadding(length2 - strLength, chars) + string : string;
      }
      function parseInt2(string, radix, guard) {
        if (guard || radix == null) {
          radix = 0;
        } else if (radix) {
          radix = +radix;
        }
        return nativeParseInt(toString2(string).replace(reTrimStart, ""), radix || 0);
      }
      function repeat(string, n, guard) {
        if (guard ? isIterateeCall(string, n, guard) : n === undefined$1) {
          n = 1;
        } else {
          n = toInteger(n);
        }
        return baseRepeat(toString2(string), n);
      }
      function replace2() {
        var args = arguments, string = toString2(args[0]);
        return args.length < 3 ? string : string.replace(args[1], args[2]);
      }
      var snakeCase = createCompounder2(function(result2, word, index2) {
        return result2 + (index2 ? "_" : "") + word.toLowerCase();
      });
      function split(string, separator, limit) {
        if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) {
          separator = limit = undefined$1;
        }
        limit = limit === undefined$1 ? MAX_ARRAY_LENGTH2 : limit >>> 0;
        if (!limit) {
          return [];
        }
        string = toString2(string);
        if (string && (typeof separator == "string" || separator != null && !isRegExp2(separator))) {
          separator = baseToString2(separator);
          if (!separator && hasUnicode2(string)) {
            return castSlice2(stringToArray2(string), 0, limit);
          }
        }
        return string.split(separator, limit);
      }
      var startCase = createCompounder2(function(result2, word, index2) {
        return result2 + (index2 ? " " : "") + upperFirst2(word);
      });
      function startsWith(string, target2, position) {
        string = toString2(string);
        position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);
        target2 = baseToString2(target2);
        return string.slice(position, position + target2.length) == target2;
      }
      function template(string, options2, guard) {
        var settings = lodash2.templateSettings;
        if (guard && isIterateeCall(string, options2, guard)) {
          options2 = undefined$1;
        }
        string = toString2(string);
        options2 = assignInWith({}, options2, settings, customDefaultsAssignIn);
        var imports = assignInWith({}, options2.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);
        var isEscaping, isEvaluating, index2 = 0, interpolate = options2.interpolate || reNoMatch, source = "__p += '";
        var reDelimiters = RegExp2(
          (options2.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options2.evaluate || reNoMatch).source + "|$",
          "g"
        );
        var sourceURL = "//# sourceURL=" + (hasOwnProperty2.call(options2, "sourceURL") ? (options2.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n";
        string.replace(reDelimiters, function(match3, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) {
          interpolateValue || (interpolateValue = esTemplateValue);
          source += string.slice(index2, offset2).replace(reUnescapedString, escapeStringChar);
          if (escapeValue) {
            isEscaping = true;
            source += "' +\n__e(" + escapeValue + ") +\n'";
          }
          if (evaluateValue) {
            isEvaluating = true;
            source += "';\n" + evaluateValue + ";\n__p += '";
          }
          if (interpolateValue) {
            source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
          }
          index2 = offset2 + match3.length;
          return match3;
        });
        source += "';\n";
        var variable = hasOwnProperty2.call(options2, "variable") && options2.variable;
        if (!variable) {
          source = "with (obj) {\n" + source + "\n}\n";
        } else if (reForbiddenIdentifierChars.test(variable)) {
          throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT);
        }
        source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;");
        source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}";
        var result2 = attempt(function() {
          return Function2(importsKeys, sourceURL + "return " + source).apply(undefined$1, importsValues);
        });
        result2.source = source;
        if (isError(result2)) {
          throw result2;
        }
        return result2;
      }
      function toLower(value) {
        return toString2(value).toLowerCase();
      }
      function toUpper(value) {
        return toString2(value).toUpperCase();
      }
      function trim2(string, chars, guard) {
        string = toString2(string);
        if (string && (guard || chars === undefined$1)) {
          return baseTrim(string);
        }
        if (!string || !(chars = baseToString2(chars))) {
          return string;
        }
        var strSymbols = stringToArray2(string), chrSymbols = stringToArray2(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1;
        return castSlice2(strSymbols, start, end).join("");
      }
      function trimEnd(string, chars, guard) {
        string = toString2(string);
        if (string && (guard || chars === undefined$1)) {
          return string.slice(0, trimmedEndIndex(string) + 1);
        }
        if (!string || !(chars = baseToString2(chars))) {
          return string;
        }
        var strSymbols = stringToArray2(string), end = charsEndIndex(strSymbols, stringToArray2(chars)) + 1;
        return castSlice2(strSymbols, 0, end).join("");
      }
      function trimStart(string, chars, guard) {
        string = toString2(string);
        if (string && (guard || chars === undefined$1)) {
          return string.replace(reTrimStart, "");
        }
        if (!string || !(chars = baseToString2(chars))) {
          return string;
        }
        var strSymbols = stringToArray2(string), start = charsStartIndex(strSymbols, stringToArray2(chars));
        return castSlice2(strSymbols, start).join("");
      }
      function truncate(string, options2) {
        var length2 = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
        if (isObject2(options2)) {
          var separator = "separator" in options2 ? options2.separator : separator;
          length2 = "length" in options2 ? toInteger(options2.length) : length2;
          omission = "omission" in options2 ? baseToString2(options2.omission) : omission;
        }
        string = toString2(string);
        var strLength = string.length;
        if (hasUnicode2(string)) {
          var strSymbols = stringToArray2(string);
          strLength = strSymbols.length;
        }
        if (length2 >= strLength) {
          return string;
        }
        var end = length2 - stringSize(omission);
        if (end < 1) {
          return omission;
        }
        var result2 = strSymbols ? castSlice2(strSymbols, 0, end).join("") : string.slice(0, end);
        if (separator === undefined$1) {
          return result2 + omission;
        }
        if (strSymbols) {
          end += result2.length - end;
        }
        if (isRegExp2(separator)) {
          if (string.slice(end).search(separator)) {
            var match3, substring = result2;
            if (!separator.global) {
              separator = RegExp2(separator.source, toString2(reFlags.exec(separator)) + "g");
            }
            separator.lastIndex = 0;
            while (match3 = separator.exec(substring)) {
              var newEnd = match3.index;
            }
            result2 = result2.slice(0, newEnd === undefined$1 ? end : newEnd);
          }
        } else if (string.indexOf(baseToString2(separator), end) != end) {
          var index2 = result2.lastIndexOf(separator);
          if (index2 > -1) {
            result2 = result2.slice(0, index2);
          }
        }
        return result2 + omission;
      }
      function unescape2(string) {
        string = toString2(string);
        return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;
      }
      var upperCase = createCompounder2(function(result2, word, index2) {
        return result2 + (index2 ? " " : "") + word.toUpperCase();
      });
      var upperFirst2 = createCaseFirst2("toUpperCase");
      function words2(string, pattern, guard) {
        string = toString2(string);
        pattern = guard ? undefined$1 : pattern;
        if (pattern === undefined$1) {
          return hasUnicodeWord2(string) ? unicodeWords2(string) : asciiWords2(string);
        }
        return string.match(pattern) || [];
      }
      var attempt = baseRest(function(func, args) {
        try {
          return apply2(func, undefined$1, args);
        } catch (e) {
          return isError(e) ? e : new Error2(e);
        }
      });
      var bindAll = flatRest(function(object, methodNames) {
        arrayEach(methodNames, function(key) {
          key = toKey(key);
          baseAssignValue(object, key, bind(object[key], object));
        });
        return object;
      });
      function cond(pairs) {
        var length2 = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();
        pairs = !length2 ? [] : arrayMap(pairs, function(pair) {
          if (typeof pair[1] != "function") {
            throw new TypeError2(FUNC_ERROR_TEXT);
          }
          return [toIteratee(pair[0]), pair[1]];
        });
        return baseRest(function(args) {
          var index2 = -1;
          while (++index2 < length2) {
            var pair = pairs[index2];
            if (apply2(pair[0], this, args)) {
              return apply2(pair[1], this, args);
            }
          }
        });
      }
      function conforms(source) {
        return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
      }
      function constant(value) {
        return function() {
          return value;
        };
      }
      function defaultTo(value, defaultValue) {
        return value == null || value !== value ? defaultValue : value;
      }
      var flow = createFlow();
      var flowRight = createFlow(true);
      function identity(value) {
        return value;
      }
      function iteratee(func) {
        return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG));
      }
      function matches2(source) {
        return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
      }
      function matchesProperty(path, srcValue) {
        return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
      }
      var method = baseRest(function(path, args) {
        return function(object) {
          return baseInvoke(object, path, args);
        };
      });
      var methodOf = baseRest(function(object, args) {
        return function(path) {
          return baseInvoke(object, path, args);
        };
      });
      function mixin(object, source, options2) {
        var props = keys(source), methodNames = baseFunctions(source, props);
        if (options2 == null && !(isObject2(source) && (methodNames.length || !props.length))) {
          options2 = source;
          source = object;
          object = this;
          methodNames = baseFunctions(source, keys(source));
        }
        var chain2 = !(isObject2(options2) && "chain" in options2) || !!options2.chain, isFunc = isFunction2(object);
        arrayEach(methodNames, function(methodName) {
          var func = source[methodName];
          object[methodName] = func;
          if (isFunc) {
            object.prototype[methodName] = function() {
              var chainAll = this.__chain__;
              if (chain2 || chainAll) {
                var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__);
                actions.push({ "func": func, "args": arguments, "thisArg": object });
                result2.__chain__ = chainAll;
                return result2;
              }
              return func.apply(object, arrayPush([this.value()], arguments));
            };
          }
        });
        return object;
      }
      function noConflict() {
        if (root2._ === this) {
          root2._ = oldDash;
        }
        return this;
      }
      function noop2() {
      }
      function nthArg(n) {
        n = toInteger(n);
        return baseRest(function(args) {
          return baseNth(args, n);
        });
      }
      var over = createOver(arrayMap);
      var overEvery = createOver(arrayEvery);
      var overSome = createOver(arraySome);
      function property(path) {
        return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
      }
      function propertyOf(object) {
        return function(path) {
          return object == null ? undefined$1 : baseGet(object, path);
        };
      }
      var range2 = createRange();
      var rangeRight = createRange(true);
      function stubArray() {
        return [];
      }
      function stubFalse() {
        return false;
      }
      function stubObject() {
        return {};
      }
      function stubString() {
        return "";
      }
      function stubTrue() {
        return true;
      }
      function times2(n, iteratee2) {
        n = toInteger(n);
        if (n < 1 || n > MAX_SAFE_INTEGER) {
          return [];
        }
        var index2 = MAX_ARRAY_LENGTH2, length2 = nativeMin(n, MAX_ARRAY_LENGTH2);
        iteratee2 = getIteratee(iteratee2);
        n -= MAX_ARRAY_LENGTH2;
        var result2 = baseTimes(length2, iteratee2);
        while (++index2 < n) {
          iteratee2(index2);
        }
        return result2;
      }
      function toPath(value) {
        if (isArray2(value)) {
          return arrayMap(value, toKey);
        }
        return isSymbol2(value) ? [value] : copyArray(stringToPath(toString2(value)));
      }
      function uniqueId(prefix) {
        var id2 = ++idCounter;
        return toString2(prefix) + id2;
      }
      var add3 = createMathOperation(function(augend, addend) {
        return augend + addend;
      }, 0);
      var ceil = createRound("ceil");
      var divide2 = createMathOperation(function(dividend, divisor) {
        return dividend / divisor;
      }, 1);
      var floor2 = createRound("floor");
      function max2(array) {
        return array && array.length ? baseExtremum(array, identity, baseGt) : undefined$1;
      }
      function maxBy(array, iteratee2) {
        return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined$1;
      }
      function mean(array) {
        return baseMean(array, identity);
      }
      function meanBy(array, iteratee2) {
        return baseMean(array, getIteratee(iteratee2, 2));
      }
      function min2(array) {
        return array && array.length ? baseExtremum(array, identity, baseLt) : undefined$1;
      }
      function minBy(array, iteratee2) {
        return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined$1;
      }
      var multiply = createMathOperation(function(multiplier, multiplicand) {
        return multiplier * multiplicand;
      }, 1);
      var round2 = createRound("round");
      var subtract = createMathOperation(function(minuend, subtrahend) {
        return minuend - subtrahend;
      }, 0);
      function sum2(array) {
        return array && array.length ? baseSum(array, identity) : 0;
      }
      function sumBy(array, iteratee2) {
        return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0;
      }
      lodash2.after = after;
      lodash2.ary = ary;
      lodash2.assign = assign2;
      lodash2.assignIn = assignIn;
      lodash2.assignInWith = assignInWith;
      lodash2.assignWith = assignWith;
      lodash2.at = at;
      lodash2.before = before;
      lodash2.bind = bind;
      lodash2.bindAll = bindAll;
      lodash2.bindKey = bindKey;
      lodash2.castArray = castArray;
      lodash2.chain = chain;
      lodash2.chunk = chunk;
      lodash2.compact = compact;
      lodash2.concat = concat;
      lodash2.cond = cond;
      lodash2.conforms = conforms;
      lodash2.constant = constant;
      lodash2.countBy = countBy;
      lodash2.create = create;
      lodash2.curry = curry;
      lodash2.curryRight = curryRight;
      lodash2.debounce = debounce;
      lodash2.defaults = defaults;
      lodash2.defaultsDeep = defaultsDeep;
      lodash2.defer = defer;
      lodash2.delay = delay;
      lodash2.difference = difference;
      lodash2.differenceBy = differenceBy;
      lodash2.differenceWith = differenceWith;
      lodash2.drop = drop;
      lodash2.dropRight = dropRight;
      lodash2.dropRightWhile = dropRightWhile;
      lodash2.dropWhile = dropWhile;
      lodash2.fill = fill;
      lodash2.filter = filter;
      lodash2.flatMap = flatMap;
      lodash2.flatMapDeep = flatMapDeep;
      lodash2.flatMapDepth = flatMapDepth;
      lodash2.flatten = flatten;
      lodash2.flattenDeep = flattenDeep;
      lodash2.flattenDepth = flattenDepth;
      lodash2.flip = flip2;
      lodash2.flow = flow;
      lodash2.flowRight = flowRight;
      lodash2.fromPairs = fromPairs;
      lodash2.functions = functions;
      lodash2.functionsIn = functionsIn;
      lodash2.groupBy = groupBy;
      lodash2.initial = initial;
      lodash2.intersection = intersection;
      lodash2.intersectionBy = intersectionBy;
      lodash2.intersectionWith = intersectionWith;
      lodash2.invert = invert;
      lodash2.invertBy = invertBy;
      lodash2.invokeMap = invokeMap;
      lodash2.iteratee = iteratee;
      lodash2.keyBy = keyBy;
      lodash2.keys = keys;
      lodash2.keysIn = keysIn;
      lodash2.map = map2;
      lodash2.mapKeys = mapKeys;
      lodash2.mapValues = mapValues;
      lodash2.matches = matches2;
      lodash2.matchesProperty = matchesProperty;
      lodash2.memoize = memoize;
      lodash2.merge = merge;
      lodash2.mergeWith = mergeWith;
      lodash2.method = method;
      lodash2.methodOf = methodOf;
      lodash2.mixin = mixin;
      lodash2.negate = negate;
      lodash2.nthArg = nthArg;
      lodash2.omit = omit2;
      lodash2.omitBy = omitBy;
      lodash2.once = once;
      lodash2.orderBy = orderBy;
      lodash2.over = over;
      lodash2.overArgs = overArgs;
      lodash2.overEvery = overEvery;
      lodash2.overSome = overSome;
      lodash2.partial = partial;
      lodash2.partialRight = partialRight;
      lodash2.partition = partition;
      lodash2.pick = pick2;
      lodash2.pickBy = pickBy;
      lodash2.property = property;
      lodash2.propertyOf = propertyOf;
      lodash2.pull = pull;
      lodash2.pullAll = pullAll;
      lodash2.pullAllBy = pullAllBy;
      lodash2.pullAllWith = pullAllWith;
      lodash2.pullAt = pullAt;
      lodash2.range = range2;
      lodash2.rangeRight = rangeRight;
      lodash2.rearg = rearg;
      lodash2.reject = reject;
      lodash2.remove = remove2;
      lodash2.rest = rest;
      lodash2.reverse = reverse;
      lodash2.sampleSize = sampleSize;
      lodash2.set = set3;
      lodash2.setWith = setWith;
      lodash2.shuffle = shuffle;
      lodash2.slice = slice;
      lodash2.sortBy = sortBy;
      lodash2.sortedUniq = sortedUniq;
      lodash2.sortedUniqBy = sortedUniqBy;
      lodash2.split = split;
      lodash2.spread = spread;
      lodash2.tail = tail;
      lodash2.take = take;
      lodash2.takeRight = takeRight;
      lodash2.takeRightWhile = takeRightWhile;
      lodash2.takeWhile = takeWhile;
      lodash2.tap = tap;
      lodash2.throttle = throttle;
      lodash2.thru = thru;
      lodash2.toArray = toArray2;
      lodash2.toPairs = toPairs;
      lodash2.toPairsIn = toPairsIn;
      lodash2.toPath = toPath;
      lodash2.toPlainObject = toPlainObject;
      lodash2.transform = transform;
      lodash2.unary = unary;
      lodash2.union = union;
      lodash2.unionBy = unionBy;
      lodash2.unionWith = unionWith;
      lodash2.uniq = uniq;
      lodash2.uniqBy = uniqBy;
      lodash2.uniqWith = uniqWith;
      lodash2.unset = unset;
      lodash2.unzip = unzip;
      lodash2.unzipWith = unzipWith;
      lodash2.update = update;
      lodash2.updateWith = updateWith;
      lodash2.values = values;
      lodash2.valuesIn = valuesIn;
      lodash2.without = without;
      lodash2.words = words2;
      lodash2.wrap = wrap2;
      lodash2.xor = xor;
      lodash2.xorBy = xorBy;
      lodash2.xorWith = xorWith;
      lodash2.zip = zip;
      lodash2.zipObject = zipObject;
      lodash2.zipObjectDeep = zipObjectDeep;
      lodash2.zipWith = zipWith;
      lodash2.entries = toPairs;
      lodash2.entriesIn = toPairsIn;
      lodash2.extend = assignIn;
      lodash2.extendWith = assignInWith;
      mixin(lodash2, lodash2);
      lodash2.add = add3;
      lodash2.attempt = attempt;
      lodash2.camelCase = camelCase2;
      lodash2.capitalize = capitalize2;
      lodash2.ceil = ceil;
      lodash2.clamp = clamp;
      lodash2.clone = clone2;
      lodash2.cloneDeep = cloneDeep;
      lodash2.cloneDeepWith = cloneDeepWith;
      lodash2.cloneWith = cloneWith;
      lodash2.conformsTo = conformsTo;
      lodash2.deburr = deburr2;
      lodash2.defaultTo = defaultTo;
      lodash2.divide = divide2;
      lodash2.endsWith = endsWith;
      lodash2.eq = eq;
      lodash2.escape = escape2;
      lodash2.escapeRegExp = escapeRegExp;
      lodash2.every = every;
      lodash2.find = find;
      lodash2.findIndex = findIndex;
      lodash2.findKey = findKey;
      lodash2.findLast = findLast;
      lodash2.findLastIndex = findLastIndex;
      lodash2.findLastKey = findLastKey;
      lodash2.floor = floor2;
      lodash2.forEach = forEach;
      lodash2.forEachRight = forEachRight;
      lodash2.forIn = forIn;
      lodash2.forInRight = forInRight;
      lodash2.forOwn = forOwn;
      lodash2.forOwnRight = forOwnRight;
      lodash2.get = get2;
      lodash2.gt = gt2;
      lodash2.gte = gte;
      lodash2.has = has2;
      lodash2.hasIn = hasIn;
      lodash2.head = head;
      lodash2.identity = identity;
      lodash2.includes = includes;
      lodash2.indexOf = indexOf2;
      lodash2.inRange = inRange;
      lodash2.invoke = invoke;
      lodash2.isArguments = isArguments;
      lodash2.isArray = isArray2;
      lodash2.isArrayBuffer = isArrayBuffer2;
      lodash2.isArrayLike = isArrayLike;
      lodash2.isArrayLikeObject = isArrayLikeObject;
      lodash2.isBoolean = isBoolean2;
      lodash2.isBuffer = isBuffer;
      lodash2.isDate = isDate2;
      lodash2.isElement = isElement2;
      lodash2.isEmpty = isEmpty2;
      lodash2.isEqual = isEqual;
      lodash2.isEqualWith = isEqualWith;
      lodash2.isError = isError;
      lodash2.isFinite = isFinite2;
      lodash2.isFunction = isFunction2;
      lodash2.isInteger = isInteger;
      lodash2.isLength = isLength;
      lodash2.isMap = isMap2;
      lodash2.isMatch = isMatch;
      lodash2.isMatchWith = isMatchWith;
      lodash2.isNaN = isNaN2;
      lodash2.isNative = isNative;
      lodash2.isNil = isNil;
      lodash2.isNull = isNull;
      lodash2.isNumber = isNumber2;
      lodash2.isObject = isObject2;
      lodash2.isObjectLike = isObjectLike2;
      lodash2.isPlainObject = isPlainObject2;
      lodash2.isRegExp = isRegExp2;
      lodash2.isSafeInteger = isSafeInteger;
      lodash2.isSet = isSet2;
      lodash2.isString = isString2;
      lodash2.isSymbol = isSymbol2;
      lodash2.isTypedArray = isTypedArray;
      lodash2.isUndefined = isUndefined2;
      lodash2.isWeakMap = isWeakMap;
      lodash2.isWeakSet = isWeakSet;
      lodash2.join = join2;
      lodash2.kebabCase = kebabCase;
      lodash2.last = last;
      lodash2.lastIndexOf = lastIndexOf;
      lodash2.lowerCase = lowerCase;
      lodash2.lowerFirst = lowerFirst;
      lodash2.lt = lt2;
      lodash2.lte = lte;
      lodash2.max = max2;
      lodash2.maxBy = maxBy;
      lodash2.mean = mean;
      lodash2.meanBy = meanBy;
      lodash2.min = min2;
      lodash2.minBy = minBy;
      lodash2.stubArray = stubArray;
      lodash2.stubFalse = stubFalse;
      lodash2.stubObject = stubObject;
      lodash2.stubString = stubString;
      lodash2.stubTrue = stubTrue;
      lodash2.multiply = multiply;
      lodash2.nth = nth;
      lodash2.noConflict = noConflict;
      lodash2.noop = noop2;
      lodash2.now = now;
      lodash2.pad = pad;
      lodash2.padEnd = padEnd;
      lodash2.padStart = padStart;
      lodash2.parseInt = parseInt2;
      lodash2.random = random;
      lodash2.reduce = reduce;
      lodash2.reduceRight = reduceRight;
      lodash2.repeat = repeat;
      lodash2.replace = replace2;
      lodash2.result = result;
      lodash2.round = round2;
      lodash2.runInContext = runInContext2;
      lodash2.sample = sample;
      lodash2.size = size2;
      lodash2.snakeCase = snakeCase;
      lodash2.some = some;
      lodash2.sortedIndex = sortedIndex;
      lodash2.sortedIndexBy = sortedIndexBy;
      lodash2.sortedIndexOf = sortedIndexOf;
      lodash2.sortedLastIndex = sortedLastIndex;
      lodash2.sortedLastIndexBy = sortedLastIndexBy;
      lodash2.sortedLastIndexOf = sortedLastIndexOf;
      lodash2.startCase = startCase;
      lodash2.startsWith = startsWith;
      lodash2.subtract = subtract;
      lodash2.sum = sum2;
      lodash2.sumBy = sumBy;
      lodash2.template = template;
      lodash2.times = times2;
      lodash2.toFinite = toFinite;
      lodash2.toInteger = toInteger;
      lodash2.toLength = toLength;
      lodash2.toLower = toLower;
      lodash2.toNumber = toNumber2;
      lodash2.toSafeInteger = toSafeInteger;
      lodash2.toString = toString2;
      lodash2.toUpper = toUpper;
      lodash2.trim = trim2;
      lodash2.trimEnd = trimEnd;
      lodash2.trimStart = trimStart;
      lodash2.truncate = truncate;
      lodash2.unescape = unescape2;
      lodash2.uniqueId = uniqueId;
      lodash2.upperCase = upperCase;
      lodash2.upperFirst = upperFirst2;
      lodash2.each = forEach;
      lodash2.eachRight = forEachRight;
      lodash2.first = head;
      mixin(lodash2, function() {
        var source = {};
        baseForOwn(lodash2, function(func, methodName) {
          if (!hasOwnProperty2.call(lodash2.prototype, methodName)) {
            source[methodName] = func;
          }
        });
        return source;
      }(), { "chain": false });
      lodash2.VERSION = VERSION2;
      arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) {
        lodash2[methodName].placeholder = lodash2;
      });
      arrayEach(["drop", "take"], function(methodName, index2) {
        LazyWrapper.prototype[methodName] = function(n) {
          n = n === undefined$1 ? 1 : nativeMax(toInteger(n), 0);
          var result2 = this.__filtered__ && !index2 ? new LazyWrapper(this) : this.clone();
          if (result2.__filtered__) {
            result2.__takeCount__ = nativeMin(n, result2.__takeCount__);
          } else {
            result2.__views__.push({
              "size": nativeMin(n, MAX_ARRAY_LENGTH2),
              "type": methodName + (result2.__dir__ < 0 ? "Right" : "")
            });
          }
          return result2;
        };
        LazyWrapper.prototype[methodName + "Right"] = function(n) {
          return this.reverse()[methodName](n).reverse();
        };
      });
      arrayEach(["filter", "map", "takeWhile"], function(methodName, index2) {
        var type2 = index2 + 1, isFilter = type2 == LAZY_FILTER_FLAG || type2 == LAZY_WHILE_FLAG;
        LazyWrapper.prototype[methodName] = function(iteratee2) {
          var result2 = this.clone();
          result2.__iteratees__.push({
            "iteratee": getIteratee(iteratee2, 3),
            "type": type2
          });
          result2.__filtered__ = result2.__filtered__ || isFilter;
          return result2;
        };
      });
      arrayEach(["head", "last"], function(methodName, index2) {
        var takeName = "take" + (index2 ? "Right" : "");
        LazyWrapper.prototype[methodName] = function() {
          return this[takeName](1).value()[0];
        };
      });
      arrayEach(["initial", "tail"], function(methodName, index2) {
        var dropName = "drop" + (index2 ? "" : "Right");
        LazyWrapper.prototype[methodName] = function() {
          return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
        };
      });
      LazyWrapper.prototype.compact = function() {
        return this.filter(identity);
      };
      LazyWrapper.prototype.find = function(predicate) {
        return this.filter(predicate).head();
      };
      LazyWrapper.prototype.findLast = function(predicate) {
        return this.reverse().find(predicate);
      };
      LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
        if (typeof path == "function") {
          return new LazyWrapper(this);
        }
        return this.map(function(value) {
          return baseInvoke(value, path, args);
        });
      });
      LazyWrapper.prototype.reject = function(predicate) {
        return this.filter(negate(getIteratee(predicate)));
      };
      LazyWrapper.prototype.slice = function(start, end) {
        start = toInteger(start);
        var result2 = this;
        if (result2.__filtered__ && (start > 0 || end < 0)) {
          return new LazyWrapper(result2);
        }
        if (start < 0) {
          result2 = result2.takeRight(-start);
        } else if (start) {
          result2 = result2.drop(start);
        }
        if (end !== undefined$1) {
          end = toInteger(end);
          result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start);
        }
        return result2;
      };
      LazyWrapper.prototype.takeRightWhile = function(predicate) {
        return this.reverse().takeWhile(predicate).reverse();
      };
      LazyWrapper.prototype.toArray = function() {
        return this.take(MAX_ARRAY_LENGTH2);
      };
      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
        var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash2[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);
        if (!lodashFunc) {
          return;
        }
        lodash2.prototype[methodName] = function() {
          var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value);
          var interceptor = function(value2) {
            var result3 = lodashFunc.apply(lodash2, arrayPush([value2], args));
            return isTaker && chainAll ? result3[0] : result3;
          };
          if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) {
            isLazy = useLazy = false;
          }
          var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;
          if (!retUnwrapped && useLazy) {
            value = onlyLazy ? value : new LazyWrapper(this);
            var result2 = func.apply(value, args);
            result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined$1 });
            return new LodashWrapper(result2, chainAll);
          }
          if (isUnwrapped && onlyLazy) {
            return func.apply(this, args);
          }
          result2 = this.thru(interceptor);
          return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;
        };
      });
      arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) {
        var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName);
        lodash2.prototype[methodName] = function() {
          var args = arguments;
          if (retUnwrapped && !this.__chain__) {
            var value = this.value();
            return func.apply(isArray2(value) ? value : [], args);
          }
          return this[chainName](function(value2) {
            return func.apply(isArray2(value2) ? value2 : [], args);
          });
        };
      });
      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
        var lodashFunc = lodash2[methodName];
        if (lodashFunc) {
          var key = lodashFunc.name + "";
          if (!hasOwnProperty2.call(realNames, key)) {
            realNames[key] = [];
          }
          realNames[key].push({ "name": methodName, "func": lodashFunc });
        }
      });
      realNames[createHybrid(undefined$1, WRAP_BIND_KEY_FLAG).name] = [{
        "name": "wrapper",
        "func": undefined$1
      }];
      LazyWrapper.prototype.clone = lazyClone;
      LazyWrapper.prototype.reverse = lazyReverse;
      LazyWrapper.prototype.value = lazyValue;
      lodash2.prototype.at = wrapperAt;
      lodash2.prototype.chain = wrapperChain;
      lodash2.prototype.commit = wrapperCommit;
      lodash2.prototype.next = wrapperNext;
      lodash2.prototype.plant = wrapperPlant;
      lodash2.prototype.reverse = wrapperReverse;
      lodash2.prototype.toJSON = lodash2.prototype.valueOf = lodash2.prototype.value = wrapperValue;
      lodash2.prototype.first = lodash2.prototype.head;
      if (symIterator) {
        lodash2.prototype[symIterator] = wrapperToIterator;
      }
      return lodash2;
    };
    var _2 = runInContext();
    if (freeModule) {
      (freeModule.exports = _2)._ = _2;
      freeExports._ = _2;
    } else {
      root2._ = _2;
    }
  }).call(commonjsGlobal$1);
})(lodash, lodashExports);
const _$1 = lodashExports;
const _hoisted_1$1$ = { class: "relative" };
const _hoisted_2$1M = { class: "flex inset-y-0 absolute items-center" };
const _hoisted_3$1s = { key: 0 };
const _hoisted_4$U = { class: "flex pr-3 inset-y-0 right-0 absolute items-center" };
const _hoisted_5$w = ["data-cy"];
const _hoisted_6$j = { class: "flex inset-y-0 absolute items-center" };
const _hoisted_7$f = { class: "flex text-sm pr-3 inset-y-0 right-0 absolute items-center" };
const _hoisted_8$e = {
  key: 0,
  class: "flex pr-3 right-0 text-jade-400 absolute items-center"
};
const __default__$2 = {
  inheritAttrs: true
};
const _sfc_main$1p = /* @__PURE__ */ defineComponent({
  ...__default__$2,
  __name: "Select",
  props: {
    options: null,
    modelValue: { default: void 0 },
    placeholder: { default: "" },
    label: { default: "" },
    itemValue: { default: "value" },
    itemKey: { default: "key" },
    error: { type: Boolean }
  },
  emits: ["update:modelValue"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const isSelectedOption = (option) => {
      const optionKey = lodashExports.get(option, props.itemKey);
      return optionKey && optionKey === lodashExports.get(props.modelValue, props.itemKey);
    };
    const handleUpdate = (value) => {
      emit2("update:modelValue", value);
    };
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_down = __unplugin_components_0$k;
      const _component_i_mdi_check = __unplugin_components_1$7;
      return openBlock(), createBlock(unref(Listbox), {
        value: props.modelValue,
        as: "div",
        "onUpdate:modelValue": handleUpdate
      }, {
        default: withCtx(({ open }) => [
          createVNode(unref(ListboxLabel), { class: "font-medium text-sm text-gray-800 block" }, {
            default: withCtx(() => [
              __props.label ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                createTextVNode(toDisplayString$1(__props.label), 1)
              ], 64)) : renderSlot(_ctx.$slots, "label", {
                key: 1,
                open
              })
            ]),
            _: 2
          }, 1024),
          createBaseVNode("div", _hoisted_1$1$, [
            createVNode(unref(ListboxButton), {
              class: normalizeClass(["bg-white border rounded text-left w-full py-2 px-4 text-gray-800 hocus-default group relative sm:text-sm", open ? "cursor-default default-ring" : "cursor-pointer border-gray-100"])
            }, {
              default: withCtx(() => [
                createBaseVNode("span", _hoisted_2$1M, [
                  renderSlot(_ctx.$slots, "input-prefix", {
                    value: __props.modelValue,
                    open
                  })
                ]),
                createBaseVNode("span", {
                  class: normalizeClass([
                    "pr-[24px] text-[16px] leading-[24px]",
                    {
                      "pl-[24px]": _ctx.$slots["input-prefix"]
                    }
                  ])
                }, [
                  !__props.modelValue ? (openBlock(), createElementBlock("span", _hoisted_3$1s, toDisplayString$1(__props.placeholder ? __props.placeholder : unref(t2)("components.select.placeholder")), 1)) : renderSlot(_ctx.$slots, "selected", { key: 1 }, () => [
                    createTextVNode(toDisplayString$1(unref(lodashExports.get)(__props.modelValue, __props.itemValue || "")), 1)
                  ])
                ], 2),
                createBaseVNode("span", _hoisted_4$U, [
                  renderSlot(_ctx.$slots, "input-suffix", {
                    value: __props.modelValue,
                    open
                  }, () => [
                    createVNode(_component_i_cy_chevron_down, {
                      "data-testid": "icon-caret",
                      class: normalizeClass([{
                        "rotate-180 icon-dark-indigo-600": open,
                        "rotate-0 icon-dark-gray-500": !open
                      }, "max-w-[16px] transform transition duration-250 group-hocus:icon-dark-indigo-600"])
                    }, null, 8, ["class"])
                  ])
                ])
              ]),
              _: 2
            }, 1032, ["class"]),
            createVNode(Transition, {
              "leave-active-class": "transition ease-in duration-100",
              "leave-from-class": "opacity-100",
              "leave-to-class": "opacity-0"
            }, {
              default: withCtx(() => [
                createVNode(unref(ListboxOptions), { class: "bg-white rounded shadow-lg ring-black mt-1 text-base w-full max-h-60 ring-1 ring-opacity-5 z-10 absolute overflow-auto sm:text-sm focus:outline-none" }, {
                  default: withCtx(() => [
                    (openBlock(true), createElementBlock(Fragment, null, renderList(props.options, (option) => {
                      return openBlock(), createBlock(unref(ListboxOption), {
                        key: unref(lodashExports.get)(option, __props.itemKey),
                        as: "ul",
                        value: option,
                        disabled: option.disabled || false
                      }, {
                        default: withCtx(({ active, selected }) => [
                          createBaseVNode("li", {
                            class: normalizeClass(["border-transparent cursor-pointer border py-2 pr-8 pl-4 block truncate select-none relative", [{
                              "font-medium bg-jade-50": isSelectedOption(option),
                              "bg-gray-50": active,
                              "text-gray-800": !isSelectedOption(option) && !active,
                              "text-opacity-40": option.disabled || false
                            }]]),
                            "data-cy": unref(lodashExports.get)(option, __props.itemKey)
                          }, [
                            createBaseVNode("span", _hoisted_6$j, [
                              renderSlot(_ctx.$slots, "item-prefix", {
                                selected,
                                active,
                                value: option
                              })
                            ]),
                            createBaseVNode("span", {
                              class: normalizeClass(["inline-block", {
                                "pl-8": _ctx.$slots["item-prefix"],
                                "pr-6": _ctx.$slots["item-suffix"]
                              }])
                            }, [
                              renderSlot(_ctx.$slots, "item-body", {
                                selected: isSelectedOption(option),
                                active,
                                value: option
                              }, () => [
                                createTextVNode(toDisplayString$1(unref(lodashExports.get)(option, __props.itemValue || "")), 1)
                              ])
                            ], 2),
                            createBaseVNode("span", _hoisted_7$f, [
                              renderSlot(_ctx.$slots, "item-suffix", {
                                selected: isSelectedOption(option),
                                active,
                                value: option
                              }, () => [
                                isSelectedOption(option) ? (openBlock(), createElementBlock("span", _hoisted_8$e, [
                                  createVNode(_component_i_mdi_check, {
                                    class: "h-[16px] w-[16px]",
                                    "data-testid": "icon-check",
                                    "aria-hidden": "true"
                                  })
                                ])) : createCommentVNode("", true)
                              ])
                            ])
                          ], 10, _hoisted_5$w)
                        ]),
                        _: 2
                      }, 1032, ["value", "disabled"]);
                    }), 128)),
                    renderSlot(_ctx.$slots, "footer")
                  ]),
                  _: 3
                })
              ]),
              _: 3
            })
          ])
        ]),
        _: 3
      }, 8, ["value"]);
    };
  }
});
const _hoisted_1$1_ = { class: "text-warning-600 bg-warning-50 border-warning-300 border border-transparent rounded p-[2px] ml-[4px] pr-[3px]" };
const _hoisted_2$1L = /* @__PURE__ */ createBaseVNode("span", { class: "sr-only" }, " Support is in ", -1);
const _sfc_main$1o = /* @__PURE__ */ defineComponent({
  __name: "AlphaLabel",
  setup(__props) {
    const { t: t2 } = useI18n$1();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("span", _hoisted_1$1_, [
        _hoisted_2$1L,
        createTextVNode(" " + toDisplayString$1(unref(t2)("versions.alpha")), 1)
      ]);
    };
  }
});
const _hoisted_1$1Z = { class: "text-jade-600 bg-jade-50 border-jade-300 border rounded p-[2px] ml-[4px] pr-[3px]" };
const _hoisted_2$1K = { class: "sr-only" };
const _sfc_main$1n = /* @__PURE__ */ defineComponent({
  __name: "CommunityLabel",
  setup(__props) {
    const { t: t2 } = useI18n$1();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("span", _hoisted_1$1Z, [
        createBaseVNode("span", _hoisted_2$1K, toDisplayString$1(unref(t2)("versions.communityNote")), 1),
        createTextVNode(" " + toDisplayString$1(unref(t2)("versions.community")), 1)
      ]);
    };
  }
});
const ICON_COLOR_PROP_NAMES = ["focus-within-fill-color", "focusWithinFillColor", "focus-within-stroke-color", "focusWithinStrokeColor", "focus-within-secondary-fill-color", "focusWithinSecondaryFillColor", "focus-within-secondary-stroke-color", "focusWithinSecondaryStrokeColor", "hover-fill-color", "hoverFillColor", "hover-stroke-color", "hoverStrokeColor", "hover-secondary-fill-color", "hoverSecondaryFillColor", "hover-secondary-stroke-color", "hoverSecondaryStrokeColor", "focus-fill-color", "focusFillColor", "focus-stroke-color", "focusStrokeColor", "focus-secondary-fill-color", "focusSecondaryFillColor", "focus-secondary-stroke-color", "focusSecondaryStrokeColor", "hocus-fill-color", "hocusFillColor", "hocus-stroke-color", "hocusStrokeColor", "hocus-secondary-fill-color", "hocusSecondaryFillColor", "hocus-secondary-stroke-color", "hocusSecondaryStrokeColor", "fill-color", "fillColor", "stroke-color", "strokeColor", "secondary-fill-color", "secondaryFillColor", "secondary-stroke-color", "secondaryStrokeColor"];
var iconsMetadata = {
  "action-add-large": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-add-medium": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-add-small": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-add-xsmall": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-add": {
    availableSizes: ["8"],
    hasStrokeColor: ["8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-delete-circle": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-delete-large": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-delete-medium": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-delete-xlarge": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-delete": {
    availableSizes: ["12"],
    hasStrokeColor: ["12"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-disable-circle-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-export": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-next": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-play-large": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-play-small": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-play-video": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-power": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-question-mark-circle": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-question-mark-default": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-question-mark-outline": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-record": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-refresh": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-restart": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "action-stop": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-bottom-right": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-collapse": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-down": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-expand": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-left": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-outline-down": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-right-large": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-right": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-square-down": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-top-right": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "arrow-up": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-chrome-beta": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-chrome-canary": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-chrome": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-edge": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-electron-dark": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-electron-light": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-mozilla-firefox": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-safari": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "browser-webkit": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "checkmark-outline": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "checkmark-small": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "checkmark-solid": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "checkmark": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-down-double": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-down-large": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-down-medium": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-down-small": {
    availableSizes: ["8", "16"],
    hasStrokeColor: ["16", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-left-double": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-left-large": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-left-small": {
    availableSizes: ["8", "16"],
    hasStrokeColor: ["16", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-right-double": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-right-large": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-right-small": {
    availableSizes: ["8", "16"],
    hasStrokeColor: ["16", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-up-double": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-up-large": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "chevron-up-small": {
    availableSizes: ["8", "16"],
    hasStrokeColor: ["16", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "currency-eur": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "currency-gbp": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "currency-inr": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "currency-rub": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "currency-usd": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "device-laptop": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "device-smartphone": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-added-square-plus": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-added": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-blank": {
    availableSizes: ["16", "24", "48"],
    hasStrokeColor: ["16", "24", "48"],
    hasFillColor: ["16", "24", "48"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-code": {
    availableSizes: ["24", "48"],
    hasStrokeColor: ["24", "48"],
    hasFillColor: ["24", "48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "document-deleted": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-download": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-minus": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-modified-square-dot": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-modified": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-plus-minus": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-plus": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-script": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-sheet": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-star": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "document-text": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "dot-outline-large": {
    availableSizes: ["8"],
    hasStrokeColor: ["8"],
    hasFillColor: ["8"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "dot-outline-small": {
    availableSizes: ["8"],
    hasStrokeColor: ["8"],
    hasFillColor: ["8"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "file-changes-added": {
    availableSizes: ["24"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "file-changes-error": {
    availableSizes: ["24"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "file-changes-skipped": {
    availableSizes: ["24"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "file-changes-warning": {
    availableSizes: ["24"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-1X": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-chat-bubble": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-clipboard": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-command-key": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-crosshairs": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-earth": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-eye-closed": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-eye-open": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-globe": {
    availableSizes: ["16", "48"],
    hasStrokeColor: ["16", "48"],
    hasFillColor: ["16", "48"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-grid-2x2-medium": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-grid-2x2-small": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-grid-2x2": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-handle-vertical": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-life-ring": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-office-building": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-placeholder": {
    availableSizes: ["12", "16", "24", "48"],
    hasStrokeColor: ["12", "16", "24", "48"],
    hasFillColor: ["12", "16", "24", "48"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "general-rocket": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "loading": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "menu-dots-vertical": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "menu-expand-left": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "menu-expand-right": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "menu-hamburger": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "number-1": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "number-2": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "number-3": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "number-4": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "number-5": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "number-octothorpe": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-book-code": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "object-book": {
    availableSizes: ["16", "24", "48"],
    hasStrokeColor: ["16", "24", "48"],
    hasFillColor: ["16", "24", "48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "object-bookmark": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-box-open": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "object-box": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-briefcase": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-bug": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-chain-link": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-folder-dark-small": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-folder-dark": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-folder-light": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-gear": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-graduation-cap": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-letter": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-magic-wand-dark-mode": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-magnifying-glass": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-odometer": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-paper-airplane": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-pin-modern": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-ruler": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-sliders-round": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-tag": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "object-tassel": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: ["16"],
    hasSecondaryFillColor: false
  },
  "os-apple": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "os-generic": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "os-linux": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "os-windows": {
    availableSizes: ["16"],
    hasStrokeColor: false,
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "security-key": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "security-lock-locked": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "security-shield-cross": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "shape-heart": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "shape-lightning-bolt": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "shape-moon-crescent": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "shape-star": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "shape-sun-long": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "social-discord-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "social-email": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "social-facebook-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "social-github-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "social-linkedin-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "social-twitter-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "social-youtube-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-cancelled-outline": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-cancelled-simple": {
    availableSizes: ["4", "8"],
    hasStrokeColor: ["4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-cancelled-solid": {
    availableSizes: ["12", "16", "24"],
    hasStrokeColor: ["12"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-errored-outline": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-errored-simple": {
    availableSizes: ["4", "8"],
    hasStrokeColor: ["4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-errored-solid": {
    availableSizes: ["12", "16", "24"],
    hasStrokeColor: ["12", "16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-failed-outline": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-failed-simple": {
    availableSizes: ["4", "8", "12", "16", "24"],
    hasStrokeColor: ["12", "16", "24", "4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-failed-solid": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-flaky": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-passed-outline": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-passed-simple": {
    availableSizes: ["4", "8", "12", "16", "24"],
    hasStrokeColor: ["12", "16", "24", "4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-passed-solid": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-pending-outline": {
    availableSizes: ["12", "16", "24"],
    hasStrokeColor: ["12", "16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-pending-simple": {
    availableSizes: ["4", "8"],
    hasStrokeColor: ["4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-placeholder-simple": {
    availableSizes: ["4", "8"],
    hasStrokeColor: ["4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-placeholder-solid": {
    availableSizes: ["12", "16", "24"],
    hasStrokeColor: ["12", "16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-queued-outline": {
    availableSizes: ["12", "16", "24"],
    hasStrokeColor: ["12", "16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-queued-simple": {
    availableSizes: ["4", "8"],
    hasStrokeColor: ["4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-running-outline": {
    availableSizes: ["12", "16", "24"],
    hasStrokeColor: ["12", "16", "24"],
    hasFillColor: ["12", "16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-running-simple": {
    availableSizes: ["4", "8"],
    hasStrokeColor: ["4", "8"],
    hasFillColor: ["4", "8"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-skipped-outline": {
    availableSizes: ["12", "16", "24"],
    hasStrokeColor: ["12", "16", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "status-skipped-simple": {
    availableSizes: ["4", "8"],
    hasStrokeColor: ["4", "8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-branch-h-tall": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-branch-h": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-browser-dark": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-browser-light": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-browser-testing-2": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "technology-code-editor": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-command-line-error": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "technology-command-line": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-cypress": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-dashboard-checkmark": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-dashboard-fail": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "technology-dashboard-running": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "technology-debugger": {
    availableSizes: ["24"],
    hasStrokeColor: ["24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-dollar": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-drag-project": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: false
  },
  "technology-element-selector": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-image-screenshot": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-infinity-loop": {
    availableSizes: ["16", "20", "24"],
    hasStrokeColor: ["16", "20", "24"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-locked-project": {
    availableSizes: ["48"],
    hasStrokeColor: ["48"],
    hasFillColor: ["48"],
    hasSecondaryStrokeColor: ["48"],
    hasSecondaryFillColor: ["48"]
  },
  "technology-octothorpe": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-pull-request": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-server": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-terminal-log": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-terminal": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "technology-test-results": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "testing-type-component-solid": {
    availableSizes: ["24", "64"],
    hasStrokeColor: ["24", "64"],
    hasFillColor: ["24", "64"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "testing-type-component": {
    availableSizes: ["16", "24", "64"],
    hasStrokeColor: ["16", "24", "64"],
    hasFillColor: ["24", "64"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "testing-type-e2e-solid": {
    availableSizes: ["24", "64"],
    hasStrokeColor: ["24", "64"],
    hasFillColor: ["24", "64"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "testing-type-e2e": {
    availableSizes: ["16", "24", "64"],
    hasStrokeColor: ["16", "24", "64"],
    hasFillColor: ["16", "24", "64"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "time-calendar-day": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "time-stopwatch": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "user-general-outline": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "user-general-solid": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: ["16"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "view-list": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "view-pie-chart": {
    availableSizes: ["16", "24"],
    hasStrokeColor: ["16", "24"],
    hasFillColor: ["16", "24"],
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "view-tree-alt": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "warning-circle": {
    availableSizes: ["16"],
    hasStrokeColor: ["16"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  },
  "warning": {
    availableSizes: ["8"],
    hasStrokeColor: ["8"],
    hasFillColor: false,
    hasSecondaryStrokeColor: false,
    hasSecondaryFillColor: false
  }
};
function __rest(s2, e) {
  var t2 = {};
  for (var p2 in s2)
    if (Object.prototype.hasOwnProperty.call(s2, p2) && e.indexOf(p2) < 0)
      t2[p2] = s2[p2];
  if (s2 != null && typeof Object.getOwnPropertySymbols === "function")
    for (var i2 = 0, p2 = Object.getOwnPropertySymbols(s2); i2 < p2.length; i2++) {
      if (e.indexOf(p2[i2]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p2[i2]))
        t2[p2[i2]] = s2[p2[i2]];
    }
  return t2;
}
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x2) {
  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
}
var INFINITY = 1 / 0;
var symbolTag = "[object Symbol]";
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f\\ufe20-\\ufe23", rsComboSymbolsRange = "\\u20d0-\\u20f0", rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
var rsApos = "['’]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboMarksRange + rsComboSymbolsRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
var rsLowerMisc = "(?:" + rsLower + "|" + rsMisc + ")", rsUpperMisc = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptLowerContr = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptUpperContr = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
var reApos = RegExp(rsApos, "g");
var reComboMark = RegExp(rsCombo, "g");
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
var reUnicodeWord = RegExp([
  rsUpper + "?" + rsLower + "+" + rsOptLowerContr + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
  rsUpperMisc + "+" + rsOptUpperContr + "(?=" + [rsBreak, rsUpper + rsLowerMisc, "$"].join("|") + ")",
  rsUpper + "?" + rsLowerMisc + "+" + rsOptLowerContr,
  rsUpper + "+" + rsOptUpperContr,
  rsDigits,
  rsEmoji
].join("|"), "g");
var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + "]");
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
var deburredLetters = {
  // Latin-1 Supplement block.
  "À": "A",
  "Á": "A",
  "Â": "A",
  "Ã": "A",
  "Ä": "A",
  "Å": "A",
  "à": "a",
  "á": "a",
  "â": "a",
  "ã": "a",
  "ä": "a",
  "å": "a",
  "Ç": "C",
  "ç": "c",
  "Ð": "D",
  "ð": "d",
  "È": "E",
  "É": "E",
  "Ê": "E",
  "Ë": "E",
  "è": "e",
  "é": "e",
  "ê": "e",
  "ë": "e",
  "Ì": "I",
  "Í": "I",
  "Î": "I",
  "Ï": "I",
  "ì": "i",
  "í": "i",
  "î": "i",
  "ï": "i",
  "Ñ": "N",
  "ñ": "n",
  "Ò": "O",
  "Ó": "O",
  "Ô": "O",
  "Õ": "O",
  "Ö": "O",
  "Ø": "O",
  "ò": "o",
  "ó": "o",
  "ô": "o",
  "õ": "o",
  "ö": "o",
  "ø": "o",
  "Ù": "U",
  "Ú": "U",
  "Û": "U",
  "Ü": "U",
  "ù": "u",
  "ú": "u",
  "û": "u",
  "ü": "u",
  "Ý": "Y",
  "ý": "y",
  "ÿ": "y",
  "Æ": "Ae",
  "æ": "ae",
  "Þ": "Th",
  "þ": "th",
  "ß": "ss",
  // Latin Extended-A block.
  "Ā": "A",
  "Ă": "A",
  "Ą": "A",
  "ā": "a",
  "ă": "a",
  "ą": "a",
  "Ć": "C",
  "Ĉ": "C",
  "Ċ": "C",
  "Č": "C",
  "ć": "c",
  "ĉ": "c",
  "ċ": "c",
  "č": "c",
  "Ď": "D",
  "Đ": "D",
  "ď": "d",
  "đ": "d",
  "Ē": "E",
  "Ĕ": "E",
  "Ė": "E",
  "Ę": "E",
  "Ě": "E",
  "ē": "e",
  "ĕ": "e",
  "ė": "e",
  "ę": "e",
  "ě": "e",
  "Ĝ": "G",
  "Ğ": "G",
  "Ġ": "G",
  "Ģ": "G",
  "ĝ": "g",
  "ğ": "g",
  "ġ": "g",
  "ģ": "g",
  "Ĥ": "H",
  "Ħ": "H",
  "ĥ": "h",
  "ħ": "h",
  "Ĩ": "I",
  "Ī": "I",
  "Ĭ": "I",
  "Į": "I",
  "İ": "I",
  "ĩ": "i",
  "ī": "i",
  "ĭ": "i",
  "į": "i",
  "ı": "i",
  "Ĵ": "J",
  "ĵ": "j",
  "Ķ": "K",
  "ķ": "k",
  "ĸ": "k",
  "Ĺ": "L",
  "Ļ": "L",
  "Ľ": "L",
  "Ŀ": "L",
  "Ł": "L",
  "ĺ": "l",
  "ļ": "l",
  "ľ": "l",
  "ŀ": "l",
  "ł": "l",
  "Ń": "N",
  "Ņ": "N",
  "Ň": "N",
  "Ŋ": "N",
  "ń": "n",
  "ņ": "n",
  "ň": "n",
  "ŋ": "n",
  "Ō": "O",
  "Ŏ": "O",
  "Ő": "O",
  "ō": "o",
  "ŏ": "o",
  "ő": "o",
  "Ŕ": "R",
  "Ŗ": "R",
  "Ř": "R",
  "ŕ": "r",
  "ŗ": "r",
  "ř": "r",
  "Ś": "S",
  "Ŝ": "S",
  "Ş": "S",
  "Š": "S",
  "ś": "s",
  "ŝ": "s",
  "ş": "s",
  "š": "s",
  "Ţ": "T",
  "Ť": "T",
  "Ŧ": "T",
  "ţ": "t",
  "ť": "t",
  "ŧ": "t",
  "Ũ": "U",
  "Ū": "U",
  "Ŭ": "U",
  "Ů": "U",
  "Ű": "U",
  "Ų": "U",
  "ũ": "u",
  "ū": "u",
  "ŭ": "u",
  "ů": "u",
  "ű": "u",
  "ų": "u",
  "Ŵ": "W",
  "ŵ": "w",
  "Ŷ": "Y",
  "ŷ": "y",
  "Ÿ": "Y",
  "Ź": "Z",
  "Ż": "Z",
  "Ž": "Z",
  "ź": "z",
  "ż": "z",
  "ž": "z",
  "Ĳ": "IJ",
  "ĳ": "ij",
  "Œ": "Oe",
  "œ": "oe",
  "ŉ": "'n",
  "ſ": "ss"
};
var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
function arrayReduce(array, iteratee, accumulator, initAccum) {
  var index2 = -1, length2 = array ? array.length : 0;
  if (initAccum && length2) {
    accumulator = array[++index2];
  }
  while (++index2 < length2) {
    accumulator = iteratee(accumulator, array[index2], index2, array);
  }
  return accumulator;
}
function asciiToArray(string) {
  return string.split("");
}
function asciiWords(string) {
  return string.match(reAsciiWord) || [];
}
function basePropertyOf(object) {
  return function(key) {
    return object == null ? void 0 : object[key];
  };
}
var deburrLetter = basePropertyOf(deburredLetters);
function hasUnicode(string) {
  return reHasUnicode.test(string);
}
function hasUnicodeWord(string) {
  return reHasUnicodeWord.test(string);
}
function stringToArray(string) {
  return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
}
function unicodeToArray(string) {
  return string.match(reUnicode) || [];
}
function unicodeWords(string) {
  return string.match(reUnicodeWord) || [];
}
var objectProto = Object.prototype;
var objectToString = objectProto.toString;
var Symbol$1 = root.Symbol;
var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;
function baseSlice(array, start, end) {
  var index2 = -1, length2 = array.length;
  if (start < 0) {
    start = -start > length2 ? 0 : length2 + start;
  }
  end = end > length2 ? length2 : end;
  if (end < 0) {
    end += length2;
  }
  length2 = start > end ? 0 : end - start >>> 0;
  start >>>= 0;
  var result = Array(length2);
  while (++index2 < length2) {
    result[index2] = array[index2 + start];
  }
  return result;
}
function baseToString(value) {
  if (typeof value == "string") {
    return value;
  }
  if (isSymbol(value)) {
    return symbolToString ? symbolToString.call(value) : "";
  }
  var result = value + "";
  return result == "0" && 1 / value == -INFINITY ? "-0" : result;
}
function castSlice(array, start, end) {
  var length2 = array.length;
  end = end === void 0 ? length2 : end;
  return !start && end >= length2 ? array : baseSlice(array, start, end);
}
function createCaseFirst(methodName) {
  return function(string) {
    string = toString$2(string);
    var strSymbols = hasUnicode(string) ? stringToArray(string) : void 0;
    var chr = strSymbols ? strSymbols[0] : string.charAt(0);
    var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
    return chr[methodName]() + trailing;
  };
}
function createCompounder(callback) {
  return function(string) {
    return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
  };
}
function isObjectLike(value) {
  return !!value && typeof value == "object";
}
function isSymbol(value) {
  return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
}
function toString$2(value) {
  return value == null ? "" : baseToString(value);
}
var camelCase = createCompounder(function(result, word, index2) {
  word = word.toLowerCase();
  return result + (index2 ? capitalize(word) : word);
});
function capitalize(string) {
  return upperFirst(toString$2(string).toLowerCase());
}
function deburr(string) {
  string = toString$2(string);
  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
}
var upperFirst = createCaseFirst("toUpperCase");
function words(string, pattern, guard) {
  string = toString$2(string);
  pattern = guard ? void 0 : pattern;
  if (pattern === void 0) {
    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
  }
  return string.match(pattern) || [];
}
var lodash_camelcase = camelCase;
var camelCase$1 = /* @__PURE__ */ getDefaultExportFromCjs(lodash_camelcase);
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var __assign = function() {
  __assign = Object.assign || function __assign2(t2) {
    for (var s2, i2 = 1, n = arguments.length; i2 < n; i2++) {
      s2 = arguments[i2];
      for (var p2 in s2)
        if (Object.prototype.hasOwnProperty.call(s2, p2))
          t2[p2] = s2[p2];
    }
    return t2;
  };
  return __assign.apply(this, arguments);
};
function __spreadArray(to, from, pack) {
  if (pack || arguments.length === 2)
    for (var i2 = 0, l2 = from.length, ar; i2 < l2; i2++) {
      if (ar || !(i2 in from)) {
        if (!ar)
          ar = Array.prototype.slice.call(from, 0, i2);
        ar[i2] = from[i2];
      }
    }
  return to.concat(ar || Array.prototype.slice.call(from));
}
var Console = (
  /** @class */
  function() {
    function Console2() {
    }
    Console2.log = function() {
      var message = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        message[_i] = arguments[_i];
      }
      console.log.apply(console, message);
    };
    Console2.error = function() {
      var message = [];
      for (var _i = 0; _i < arguments.length; _i++) {
        message[_i] = arguments[_i];
      }
      console.error.apply(console, message);
    };
    Console2.time = function(label) {
      console.time(label);
    };
    Console2.timeEnd = function(label) {
      console.timeEnd(label);
    };
    return Console2;
  }()
);
var sky = {
  50: "#f0f9ff",
  100: "#e0f2fe",
  200: "#bae6fd",
  300: "#7dd3fc",
  400: "#38bdf8",
  500: "#0ea5e9",
  600: "#0284c7",
  700: "#0369a1",
  800: "#075985",
  900: "#0c4a6e"
};
var neutral = {
  50: "#fafafa",
  100: "#f5f5f5",
  200: "#e5e5e5",
  300: "#d4d4d4",
  400: "#a3a3a3",
  500: "#737373",
  600: "#525252",
  700: "#404040",
  800: "#262626",
  900: "#171717"
};
var stone = {
  50: "#fafaf9",
  100: "#f5f5f4",
  200: "#e7e5e4",
  300: "#d6d3d1",
  400: "#a8a29e",
  500: "#78716c",
  600: "#57534e",
  700: "#44403c",
  800: "#292524",
  900: "#1c1917"
};
var slate = {
  50: "#f8fafc",
  100: "#f1f5f9",
  200: "#e2e8f0",
  300: "#cbd5e1",
  400: "#94A3B8",
  500: "#64748B",
  600: "#475569",
  700: "#334155",
  800: "#1E293B",
  900: "#0F172A"
};
var zinc = {
  50: "#fafafa",
  100: "#f4f4f5",
  200: "#e4e4e7",
  300: "#d4d4d8",
  400: "#a1a1aa",
  500: "#71717A",
  600: "#52525B",
  700: "#3F3F46",
  800: "#27272A",
  900: "#18181B"
};
var gray = {
  50: "#f9fafb",
  100: "#f3f4f6",
  200: "#e5e7eb",
  300: "#d1d5db",
  400: "#9ca3af",
  500: "#6b7280",
  600: "#4b5563",
  700: "#374151",
  800: "#1f2937",
  900: "#111827"
};
var warned = false;
function color_warn(from, to) {
  if (!warned) {
    Console.log("warn - '".concat(from, "' has been renamed to '").concat(to, "'."));
    Console.log("warn - Please update your color palette to eliminate this warning.");
    warned = true;
  }
}
var colors$1 = {
  inherit: "inherit",
  current: "currentColor",
  transparent: "transparent",
  black: "#000",
  white: "#fff",
  rose: {
    50: "#fff1f2",
    100: "#ffe4e6",
    200: "#fecdd3",
    300: "#fda4af",
    400: "#fb7185",
    500: "#f43f5e",
    600: "#e11d48",
    700: "#be123c",
    800: "#9f1239",
    900: "#881337"
  },
  pink: {
    50: "#fdf2f8",
    100: "#fce7f3",
    200: "#fbcfe8",
    300: "#f9a8d4",
    400: "#f472b6",
    500: "#ec4899",
    600: "#db2777",
    700: "#be185d",
    800: "#9d174d",
    900: "#831843"
  },
  fuchsia: {
    50: "#fdf4ff",
    100: "#fae8ff",
    200: "#f5d0fe",
    300: "#f0abfc",
    400: "#e879f9",
    500: "#d946ef",
    600: "#c026d3",
    700: "#a21caf",
    800: "#86198f",
    900: "#701a75"
  },
  purple: {
    50: "#faf5ff",
    100: "#f3e8ff",
    200: "#e9d5ff",
    300: "#d8b4fe",
    400: "#c084fc",
    500: "#a855f7",
    600: "#9333ea",
    700: "#7e22ce",
    800: "#6b21a8",
    900: "#581c87"
  },
  violet: {
    50: "#f5f3ff",
    100: "#ede9fe",
    200: "#ddd6fe",
    300: "#c4b5fd",
    400: "#a78bfa",
    500: "#8b5cf6",
    600: "#7c3aed",
    700: "#6d28d9",
    800: "#5b21b6",
    900: "#4c1d95"
  },
  indigo: {
    50: "#eef2ff",
    100: "#e0e7ff",
    200: "#c7d2fe",
    300: "#a5b4fc",
    400: "#818cf8",
    500: "#6366f1",
    600: "#4f46e5",
    700: "#4338ca",
    800: "#3730a3",
    900: "#312e81"
  },
  blue: {
    50: "#eff6ff",
    100: "#dbeafe",
    200: "#bfdbfe",
    300: "#93c5fd",
    400: "#60a5fa",
    500: "#3b82f6",
    600: "#2563eb",
    700: "#1d4ed8",
    800: "#1e40af",
    900: "#1e3a8a"
  },
  sky,
  get lightBlue() {
    color_warn("lightBlue", "sky");
    return sky;
  },
  cyan: {
    50: "#ecfeff",
    100: "#cffafe",
    200: "#a5f3fc",
    300: "#67e8f9",
    400: "#22d3ee",
    500: "#06b6d4",
    600: "#0891b2",
    700: "#0e7490",
    800: "#155e75",
    900: "#164e63"
  },
  teal: {
    50: "#f0fdfa",
    100: "#ccfbf1",
    200: "#99f6e4",
    300: "#5eead4",
    400: "#2dd4bf",
    500: "#14b8a6",
    600: "#0d9488",
    700: "#0f766e",
    800: "#115e59",
    900: "#134e4a"
  },
  emerald: {
    50: "#ecfdf5",
    100: "#d1fae5",
    200: "#a7f3d0",
    300: "#6ee7b7",
    400: "#34d399",
    500: "#10b981",
    600: "#059669",
    700: "#047857",
    800: "#065f46",
    900: "#064e3b"
  },
  green: {
    50: "#f0fdf4",
    100: "#dcfce7",
    200: "#bbf7d0",
    300: "#86efac",
    400: "#4ade80",
    500: "#22c55e",
    600: "#16a34a",
    700: "#15803d",
    800: "#166534",
    900: "#14532d"
  },
  lime: {
    50: "#f7fee7",
    100: "#ecfccb",
    200: "#d9f99d",
    300: "#bef264",
    400: "#a3e635",
    500: "#84cc16",
    600: "#65a30d",
    700: "#4d7c0f",
    800: "#3f6212",
    900: "#365314"
  },
  yellow: {
    50: "#fefce8",
    100: "#fef9c3",
    200: "#fef08a",
    300: "#fde047",
    400: "#facc15",
    500: "#eab308",
    600: "#ca8a04",
    700: "#a16207",
    800: "#854d0e",
    900: "#713f12"
  },
  amber: {
    50: "#fffbeb",
    100: "#fef3c7",
    200: "#fde68a",
    300: "#fcd34d",
    400: "#fbbf24",
    500: "#f59e0b",
    600: "#d97706",
    700: "#b45309",
    800: "#92400e",
    900: "#78350f"
  },
  orange: {
    50: "#fff7ed",
    100: "#ffedd5",
    200: "#fed7aa",
    300: "#fdba74",
    400: "#fb923c",
    500: "#f97316",
    600: "#ea580c",
    700: "#c2410c",
    800: "#9a3412",
    900: "#7c2d12"
  },
  red: {
    50: "#fef2f2",
    100: "#fee2e2",
    200: "#fecaca",
    300: "#fca5a5",
    400: "#f87171",
    500: "#ef4444",
    600: "#dc2626",
    700: "#b91c1c",
    800: "#991b1b",
    900: "#7f1d1d"
  },
  get warmGray() {
    color_warn("warmGray", "stone");
    return stone;
  },
  get trueGray() {
    color_warn("trueGray", "neutral");
    return neutral;
  },
  gray,
  get coolGray() {
    color_warn("coolGray", "gray");
    return gray;
  },
  get blueGray() {
    color_warn("blueGray", "slate");
    return slate;
  },
  slate,
  zinc,
  get zink() {
    color_warn("zink", "zinc");
    return zinc;
  },
  neutral,
  stone,
  light: {
    50: "#fdfdfd",
    100: "#fcfcfc",
    200: "#fafafa",
    300: "#f8f9fa",
    400: "#f6f6f6",
    500: "#f2f2f2",
    600: "#f1f3f5",
    700: "#e9ecef",
    800: "#dee2e6",
    900: "#dde1e3"
  },
  dark: {
    50: "#4a4a4a",
    100: "#3c3c3c",
    200: "#323232",
    300: "#2d2d2d",
    400: "#222222",
    500: "#1f1f1f",
    600: "#1c1c1e",
    700: "#1b1b1b",
    800: "#181818",
    900: "#0f0f0f"
  }
};
var keyframes = {
  spin: {
    from: {
      transform: "rotate(0deg)"
    },
    to: {
      transform: "rotate(360deg)"
    }
  },
  ping: {
    "0%": {
      transform: "scale(1)",
      opacity: "1"
    },
    "75%, 100%": {
      transform: "scale(2)",
      opacity: "0"
    }
  },
  pulse: {
    "0%, 100%": {
      opacity: "1"
    },
    "50%": {
      opacity: ".5"
    }
  },
  bounce: {
    "0%, 100%": {
      transform: "translateY(-25%)",
      animationTimingFunction: "cubic-bezier(0.8,0,1,1)"
    },
    "50%": {
      transform: "translateY(0)",
      animationTimingFunction: "cubic-bezier(0,0,0.2,1)"
    }
  },
  shock: {
    "from, 20%, 53%, 80%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)",
      transform: "translate3d(0, 0, 0)"
    },
    "40%, 43%": {
      animationTimingFunction: "cubic-bezier(0.755, 0.05, 0.855, 0.06)",
      transform: "translate3d(0, -30px, 0)"
    },
    "70%": {
      animationTimingFunction: "cubic-bezier(0.755, 0.05, 0.855, 0.06)",
      transform: "translate3d(0, -15px, 0)"
    },
    "90%": {
      transform: "translate3d(0, -4px, 0)"
    }
  },
  flash: {
    "from, 50%, to": {
      opacity: "1"
    },
    "25%, 75%": {
      opacity: "0"
    }
  },
  bubble: {
    "from": {
      transform: "scale3d(1, 1, 1)"
    },
    "50%": {
      transform: "scale3d(1.05, 1.05, 1.05)"
    },
    "to": {
      transform: "scale3d(1, 1, 1)"
    }
  },
  rubberBand: {
    "from": {
      transform: "scale3d(1, 1, 1)"
    },
    "30%": {
      transform: "scale3d(1.25, 0.75, 1)"
    },
    "40%": {
      transform: "scale3d(0.75, 1.25, 1)"
    },
    "50%": {
      transform: "scale3d(1.15, 0.85, 1)"
    },
    "65%": {
      transform: "scale3d(0.95, 1.05, 1)"
    },
    "75%": {
      transform: "scale3d(1.05, 0.95, 1)"
    },
    "to": {
      transform: "scale3d(1, 1, 1)"
    }
  },
  shakeX: {
    "from, to": {
      transform: "translate3d(0, 0, 0)"
    },
    "10%, 30%, 50%, 70%, 90%": {
      transform: "translate3d(-10px, 0, 0)"
    },
    "20%, 40%, 60%, 80%": {
      transform: "translate3d(10px, 0, 0)"
    }
  },
  shakeY: {
    "from, to": {
      transform: "translate3d(0, 0, 0)"
    },
    "10%, 30%, 50%, 70%, 90%": {
      transform: "translate3d(0, -10px, 0)"
    },
    "20%, 40%, 60%, 80%": {
      transform: "translate3d(0, 10px, 0)"
    }
  },
  headShake: {
    "0%": {
      transform: "translateX(0)"
    },
    "6.5%": {
      transform: "translateX(-6px) rotateY(-9deg)"
    },
    "18.5%": {
      transform: "translateX(5px) rotateY(7deg)"
    },
    "31.5%": {
      transform: "translateX(-3px) rotateY(-5deg)"
    },
    "43.5%": {
      transform: "translateX(2px) rotateY(3deg)"
    },
    "50%": {
      transform: "translateX(0)"
    }
  },
  swing: {
    "20%": {
      transform: "rotate3d(0, 0, 1, 15deg)"
    },
    "40%": {
      transform: "rotate3d(0, 0, 1, -10deg)"
    },
    "60%": {
      transform: "rotate3d(0, 0, 1, 5deg)"
    },
    "80%": {
      transform: "rotate3d(0, 0, 1, -5deg)"
    },
    "to": {
      transform: "rotate3d(0, 0, 1, 0deg)"
    }
  },
  tada: {
    "from": {
      transform: "scale3d(1, 1, 1)"
    },
    "10%, 20%": {
      transform: "scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg)"
    },
    "30%, 50%, 70%, 90%": {
      transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)"
    },
    "40%, 60%, 80%": {
      transform: "scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)"
    },
    "to": {
      transform: "scale3d(1, 1, 1)"
    }
  },
  wobble: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "15%": {
      transform: "translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg)"
    },
    "30%": {
      transform: "translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)"
    },
    "45%": {
      transform: "translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)"
    },
    "60%": {
      transform: "translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)"
    },
    "75%": {
      transform: "translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  jello: {
    "from, 11.1% to": {
      transform: "translate3d(0, 0, 0)"
    },
    "22.2%": {
      transform: "skewX(-12.5deg) skewY(-12.5deg)"
    },
    "33.3%": {
      transform: "skewX(6.25deg) skewY(6.25deg)"
    },
    "44.4%": {
      transform: "skewX(-3.125deg) skewY(-3.125deg)"
    },
    "55.5%": {
      transform: "skewX(1.5625deg) skewY(1.5625deg)"
    },
    "66.6%": {
      transform: "skewX(-0.78125deg) skewY(-0.78125deg)"
    },
    "77.7%": {
      transform: "skewX(0.390625deg) skewY(0.390625deg)"
    },
    "88.8%": {
      transform: "skewX(-0.1953125deg) skewY(-0.1953125deg)"
    }
  },
  heartBeat: {
    "0%": {
      transform: "scale(1)"
    },
    "14%": {
      transform: "scale(1.3)"
    },
    "28%": {
      transform: "scale(1)"
    },
    "42%": {
      transform: "scale(1.3)"
    },
    "70%": {
      transform: "scale(1)"
    }
  },
  hinge: {
    "0%": {
      transformOrigin: "top left",
      animationTimingFunction: "ease-in-out"
    },
    "20%, 60%": {
      transform: "rotate3d(0, 0, 1, 80deg)",
      transformOrigin: "top left",
      animationTimingFunction: "ease-in-out"
    },
    "40%, 80%": {
      transform: "rotate3d(0, 0, 1, 60deg)",
      transformOrigin: "top left",
      animationTimingFunction: "ease-in-out"
    },
    "to": {
      transform: "translate3d(0, 700px, 0)",
      opacity: "0"
    }
  },
  jackInTheBox: {
    "from": {
      opacity: "0",
      transformOrigin: "center bottom",
      transform: "scale(0.1) rotate(30deg)"
    },
    "50%": {
      transform: "rotate(-10deg)"
    },
    "70%": {
      transform: "rotate(3deg)"
    },
    "to": {
      transform: "scale(1)"
    }
  },
  // light speed
  lightSpeedInRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(-30deg)"
    },
    "60%": {
      opacity: "1",
      transform: "skewX(20deg)"
    },
    "80%": {
      transform: "skewX(-5deg)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  lightSpeedInLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(-30deg)"
    },
    "60%": {
      opacity: "1",
      transform: "skewX(20deg)"
    },
    "80%": {
      transform: "skewX(-5deg)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  lightSpeedOutLeft: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(30deg)"
    }
  },
  lightSpeedOutRight: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) skewX(30deg)"
    }
  },
  // flip
  flip: {
    "from": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg)",
      animationTimingFunction: "ease-out"
    },
    "40%": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg)",
      animationTimingFunction: "ease-out"
    },
    "50%": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg)",
      animationTimingFunction: "ease-in"
    },
    "80%": {
      transform: "perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg)",
      animationTimingFunction: "ease-in"
    },
    "to": {
      transform: "perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg)",
      animationTimingFunction: "ease-in"
    }
  },
  flipInX: {
    "from": {
      transform: "perspective(400px) rotate3d(1, 0, 0, 90deg)",
      animationTimingFunction: "ease-in",
      opacity: "0"
    },
    "40%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, -20deg)",
      animationTimingFunction: "ease-in"
    },
    "60%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, 10deg)",
      opacity: "1"
    },
    "80%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, -5deg)"
    },
    "to": {
      transform: "perspective(400px)"
    }
  },
  flipInY: {
    "from": {
      transform: "perspective(400px) rotate3d(0, 1, 0, 90deg)",
      animationTimingFunction: "ease-in",
      opacity: "0"
    },
    "40%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, -20deg)",
      animationTimingFunction: "ease-in"
    },
    "60%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, 10deg)",
      opacity: "1"
    },
    "80%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, -5deg)"
    },
    "to": {
      transform: "perspective(400px)"
    }
  },
  flipOutX: {
    "from": {
      transform: "perspective(400px)"
    },
    "30%": {
      transform: "perspective(400px) rotate3d(1, 0, 0, -20deg)",
      opacity: "1"
    },
    "to": {
      transform: "perspective(400px) rotate3d(1, 0, 0, 90deg)",
      opacity: "0"
    }
  },
  flipOutY: {
    "from": {
      transform: "perspective(400px)"
    },
    "30%": {
      transform: "perspective(400px) rotate3d(0, 1, 0, -15deg)",
      opacity: "1"
    },
    "to": {
      transform: "perspective(400px) rotate3d(0, 1, 0, 90deg)",
      opacity: "0"
    }
  },
  // rotate in
  rotateIn: {
    "from": {
      transformOrigin: "center",
      transform: "rotate3d(0, 0, 1, -200deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "center",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInDownLeft: {
    "from": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, -45deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInDownRight: {
    "from": {
      transformOrigin: "right bottom",
      transform: "rotate3d(0, 0, 1, 45deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "right bottom",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInUpLeft: {
    "from": {
      transformOrigin: "left top",
      transform: "rotate3d(0, 0, 1, 45deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "left top",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateInUpRight: {
    "from": {
      transformOrigin: "right bottom",
      transform: "rotate3d(0, 0, 1, -90deg)",
      opacity: "0"
    },
    "to": {
      transformOrigin: "right bottom",
      transform: "translate3d(0, 0, 0)",
      opacity: "1"
    }
  },
  rotateOut: {
    "from": {
      transformOrigin: "center",
      opacity: "1"
    },
    "to": {
      transformOrigin: "center",
      transform: "rotate3d(0, 0, 1, 200deg)",
      opacity: "0"
    }
  },
  rotateOutDownLeft: {
    "from": {
      transformOrigin: "left bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, 45deg)",
      opacity: "0"
    }
  },
  rotateOutDownRight: {
    "from": {
      transformOrigin: "right bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "right bottom",
      transform: "rotate3d(0, 0, 1, -45deg)",
      opacity: "0"
    }
  },
  rotateOutUpLeft: {
    "from": {
      transformOrigin: "left bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, -45deg)",
      opacity: "0"
    }
  },
  rotateOutUpRight: {
    "from": {
      transformOrigin: "right bottom",
      opacity: "1"
    },
    "to": {
      transformOrigin: "left bottom",
      transform: "rotate3d(0, 0, 1, 90deg)",
      opacity: "0"
    }
  },
  // roll
  rollIn: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  rollOut: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg)"
    }
  },
  // zoom in
  zoomIn: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    },
    "50%": {
      opacity: "1"
    }
  },
  zoomInDown: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomInLeft: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomInRight: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomInUp: {
    "from": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "60%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0)",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  // bounce in
  bounceIn: {
    "from, 20%, 40%, 60%, 80%, to": {
      animationTimingFunction: "ease-in-out"
    },
    "0%": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    },
    "20%": {
      transform: "scale3d(1.1, 1.1, 1.1)"
    },
    "40%": {
      transform: "scale3d(0.9, 0.9, 0.9)"
    },
    "60%": {
      transform: "scale3d(1.03, 1.03, 1.03)",
      opacity: "1"
    },
    "80%": {
      transform: "scale3d(0.97, 0.97, 0.97)"
    },
    "to": {
      opacity: "1",
      transform: "scale3d(1, 1, 1)"
    }
  },
  bounceInDown: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(0, -3000px, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(0, 25px, 0)"
    },
    "75%": {
      transform: "translate3d(0, -10px, 0)"
    },
    "90%": {
      transform: "translate3d(0, 5px, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  bounceInLeft: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(-3000px, 0, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(25px, 0, 0)"
    },
    "75%": {
      transform: "translate3d(-10px, 0, 0)"
    },
    "90%": {
      transform: "translate3d(5px, 0, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  bounceInRight: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(3000px, 0, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(-25px, 0, 0)"
    },
    "75%": {
      transform: "translate3d(10px, 0, 0)"
    },
    "90%": {
      transform: "translate3d(-5px, 0, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  bounceInUp: {
    "from, 60%, 75%, 90%, to": {
      animationTimingFunction: "cubic-bezier(0.215, 0.61, 0.355, 1)"
    },
    "0%": {
      opacity: "0",
      transform: "translate3d(0, 3000px, 0)"
    },
    "60%": {
      opacity: "1",
      transform: "translate3d(0, -20px, 0)"
    },
    "75%": {
      transform: "translate3d(0, 10px, 0)"
    },
    "90%": {
      transform: "translate3d(0, -5px, 0)"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  // bounce out
  bounceOut: {
    "20%": {
      transform: "scale3d(0.9, 0.9, 0.9)"
    },
    "50%, 55%": {
      opacity: "1",
      transform: "scale3d(1.1, 1.1, 1.1)"
    },
    "to": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    }
  },
  bounceOutDown: {
    "20%": {
      transform: "translate3d(0, 10px, 0)"
    },
    "40%, 45%": {
      opacity: "1",
      transform: "translate3d(0, -20px, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, 2000px, 0)"
    }
  },
  bounceOutLeft: {
    "20%": {
      opacity: "1",
      transform: "translate3d(20px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-2000px, 0, 0)"
    }
  },
  bounceOutRight: {
    "20%": {
      opacity: "1",
      transform: "translate3d(-20px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(2000px, 0, 0)"
    }
  },
  bounceOutUp: {
    "20%": {
      transform: "translate3d(0, -10px, 0)"
    },
    "40%, 45%": {
      opacity: "1",
      transform: "translate3d(0, 20px, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, -2000px, 0)"
    }
  },
  // zoom out
  zoomOut: {
    "from": {
      opacity: "1"
    },
    "50%": {
      opacity: "0",
      transform: "scale3d(0.3, 0.3, 0.3)"
    },
    "to": {
      opacity: "0"
    }
  },
  zoomOutDown: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "to": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0)",
      transformOrigin: "center bottom",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  zoomOutLeft: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "scale(0.1) translate3d(-2000px, 0, 0)",
      transformOrigin: "left center"
    }
  },
  zoomOutRight: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "scale(0.1) translate3d(2000px, 0, 0)",
      transformOrigin: "right center"
    }
  },
  zoomOutUp: {
    "40%": {
      opacity: "1",
      transform: "scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0)",
      animationTimingFunction: "cubic-bezier(0.55, 0.055, 0.675, 0.19)"
    },
    "to": {
      opacity: "0",
      transform: "scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0)",
      transformOrigin: "center bottom",
      animationTimingFunction: "cubic-bezier(0.175, 0.885, 0.32, 1)"
    }
  },
  // slide in
  slideInDown: {
    "from": {
      transform: "translate3d(0, -100%, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  slideInLeft: {
    "from": {
      transform: "translate3d(-100%, 0, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  slideInRight: {
    "from": {
      transform: "translate3d(100%, 0, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  slideInUp: {
    "from": {
      transform: "translate3d(0, 100%, 0)",
      visibility: "visible"
    },
    "to": {
      transform: "translate3d(0, 0, 0)"
    }
  },
  // slide out
  slideOutDown: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(0, 100%, 0)"
    }
  },
  slideOutLeft: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(-100%, 0, 0)"
    }
  },
  slideOutRight: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(100%, 0, 0)"
    }
  },
  slideOutUp: {
    "from": {
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      visibility: "hidden",
      transform: "translate3d(0, -100%, 0)"
    }
  },
  // fade in
  fadeIn: {
    "from": {
      opacity: "0"
    },
    "to": {
      opacity: "1"
    }
  },
  fadeInDown: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, -100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInDownBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, -2000px, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInLeftBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(-2000px, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInRightBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(2000px, 0, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInUp: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, 100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInUpBig: {
    "from": {
      opacity: "0",
      transform: "translate3d(0, 2000px, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInTopLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, -100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInTopRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, -100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInBottomLeft: {
    "from": {
      opacity: "0",
      transform: "translate3d(-100%, 100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  fadeInBottomRight: {
    "from": {
      opacity: "0",
      transform: "translate3d(100%, 100%, 0)"
    },
    "to": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    }
  },
  // fade out
  fadeOut: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0"
    }
  },
  fadeOutDown: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, 100%, 0)"
    }
  },
  fadeOutDownBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, 2000px, 0)"
    }
  },
  fadeOutLeft: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-100%, 0, 0)"
    }
  },
  fadeOutLeftBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-2000px, 0, 0)"
    }
  },
  fadeOutRight: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 0, 0)"
    }
  },
  fadeOutRightBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(2000px, 0, 0)"
    }
  },
  fadeOutUp: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, -100%, 0)"
    }
  },
  fadeOutUpBig: {
    "from": {
      opacity: "1"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(0, -2000px, 0)"
    }
  },
  fadeOutTopLeft: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-100%, -100%, 0)"
    }
  },
  fadeOutTopRight: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, -100%, 0)"
    }
  },
  fadeOutBottomLeft: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(-100%, 100%, 0)"
    }
  },
  fadeOutBottomRight: {
    "from": {
      opacity: "1",
      transform: "translate3d(0, 0, 0)"
    },
    "to": {
      opacity: "0",
      transform: "translate3d(100%, 100%, 0)"
    }
  },
  // back in
  backInUp: {
    "0%": {
      opacity: "0.7",
      transform: "translateY(1200px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  backInDown: {
    "0%": {
      opacity: "0.7",
      transform: "translateY(-1200px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  backInLeft: {
    "0%": {
      opacity: "0.7",
      transform: "translateX(-2000px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateX(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  backInRight: {
    "0%": {
      opacity: "0.7",
      transform: "translateX(2000px) scale(0.7)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "1",
      transform: "scale(1)"
    }
  },
  // back out
  backOutUp: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateY(-700px) scale(0.7)"
    }
  },
  backOutDown: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateY(700px) scale(0.7)"
    }
  },
  backOutLeft: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateX(-2000px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateY(-700px) scale(0.7)"
    }
  },
  backOutRight: {
    "0%": {
      opacity: "1",
      transform: "scale(1)"
    },
    "80%": {
      opacity: "0.7",
      transform: "translateY(0px) scale(0.7)"
    },
    "100%": {
      opacity: "0.7",
      transform: "translateX(2000px) scale(0.7)"
    }
  }
};
var pseudoClassNames = [
  "hover",
  "focus",
  "active",
  "visited",
  "link",
  "target",
  "focus-visible",
  "focus-within",
  "checked",
  "default",
  "disabled",
  "enabled",
  "indeterminate",
  "invalid",
  "valid",
  "optional",
  "required",
  "placeholder-shown",
  "read-only",
  "read-write",
  "first-of-type",
  "last-of-type",
  "only-child",
  "only-of-type",
  "root",
  "empty"
];
var variantOrder = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], pseudoClassNames, true), [
  "not-checked",
  "not-disabled",
  "not-first-of-type",
  "not-last-of-type",
  "first",
  "not-first",
  "last",
  "not-last",
  "not-only-child",
  "not-only-of-type",
  "even",
  "odd",
  "even-of-type",
  "odd-of-type",
  "before",
  "after",
  "first-letter",
  "first-line",
  "file-selector-button",
  "file",
  "selection",
  "marker",
  "svg",
  "all",
  "children",
  "siblings",
  "sibling",
  "ltr",
  "rtl"
], false), pseudoClassNames.map(function(pseudoClassName) {
  return "group-".concat(pseudoClassName);
}), true), [
  "motion-safe",
  "motion-reduce"
], false), pseudoClassNames.map(function(pseudoClassName) {
  return "peer-".concat(pseudoClassName);
}), true), pseudoClassNames.map(function(pseudoClassName) {
  return "peer-not-".concat(pseudoClassName);
}), true);
var layerOrder;
(function(layerOrder2) {
  layerOrder2[layerOrder2["base"] = 10] = "base";
  layerOrder2[layerOrder2["components"] = 150] = "components";
  layerOrder2[layerOrder2["shortcuts"] = 160] = "shortcuts";
  layerOrder2[layerOrder2["utilities"] = 2e4] = "utilities";
})(layerOrder || (layerOrder = {}));
var pluginOrder;
(function(pluginOrder2) {
  pluginOrder2[pluginOrder2["columns"] = 80] = "columns";
  pluginOrder2[pluginOrder2["container"] = 100] = "container";
  pluginOrder2[pluginOrder2["space"] = 200] = "space";
  pluginOrder2[pluginOrder2["divideWidth"] = 300] = "divideWidth";
  pluginOrder2[pluginOrder2["divideColor"] = 400] = "divideColor";
  pluginOrder2[pluginOrder2["divideStyle"] = 500] = "divideStyle";
  pluginOrder2[pluginOrder2["divideOpacity"] = 600] = "divideOpacity";
  pluginOrder2[pluginOrder2["accessibility"] = 700] = "accessibility";
  pluginOrder2[pluginOrder2["appearance"] = 800] = "appearance";
  pluginOrder2[pluginOrder2["backgroundAttachment"] = 900] = "backgroundAttachment";
  pluginOrder2[pluginOrder2["backgroundClip"] = 1e3] = "backgroundClip";
  pluginOrder2[pluginOrder2["backgroundColor"] = 1100] = "backgroundColor";
  pluginOrder2[pluginOrder2["backgroundImage"] = 1200] = "backgroundImage";
  pluginOrder2[pluginOrder2["gradientColorStops"] = 1300] = "gradientColorStops";
  pluginOrder2[pluginOrder2["backgroundOpacity"] = 1400] = "backgroundOpacity";
  pluginOrder2[pluginOrder2["backgroundPosition"] = 1500] = "backgroundPosition";
  pluginOrder2[pluginOrder2["backgroundRepeat"] = 1600] = "backgroundRepeat";
  pluginOrder2[pluginOrder2["backgroundSize"] = 1700] = "backgroundSize";
  pluginOrder2[pluginOrder2["backgroundOrigin"] = 1750] = "backgroundOrigin";
  pluginOrder2[pluginOrder2["borderCollapse"] = 1800] = "borderCollapse";
  pluginOrder2[pluginOrder2["borderColor"] = 1900] = "borderColor";
  pluginOrder2[pluginOrder2["borderOpacity"] = 2e3] = "borderOpacity";
  pluginOrder2[pluginOrder2["borderRadius"] = 2100] = "borderRadius";
  pluginOrder2[pluginOrder2["borderStyle"] = 2200] = "borderStyle";
  pluginOrder2[pluginOrder2["borderWidth"] = 2300] = "borderWidth";
  pluginOrder2[pluginOrder2["boxDecorationBreak"] = 2350] = "boxDecorationBreak";
  pluginOrder2[pluginOrder2["boxSizing"] = 2400] = "boxSizing";
  pluginOrder2[pluginOrder2["cursor"] = 2500] = "cursor";
  pluginOrder2[pluginOrder2["captionSide"] = 2550] = "captionSide";
  pluginOrder2[pluginOrder2["emptyCells"] = 2560] = "emptyCells";
  pluginOrder2[pluginOrder2["display"] = 2600] = "display";
  pluginOrder2[pluginOrder2["flexBasis"] = 2699] = "flexBasis";
  pluginOrder2[pluginOrder2["flexDirection"] = 2700] = "flexDirection";
  pluginOrder2[pluginOrder2["flexWrap"] = 2800] = "flexWrap";
  pluginOrder2[pluginOrder2["placeItems"] = 2900] = "placeItems";
  pluginOrder2[pluginOrder2["placeContent"] = 3e3] = "placeContent";
  pluginOrder2[pluginOrder2["placeSelf"] = 3100] = "placeSelf";
  pluginOrder2[pluginOrder2["alignItems"] = 3200] = "alignItems";
  pluginOrder2[pluginOrder2["alignContent"] = 3300] = "alignContent";
  pluginOrder2[pluginOrder2["alignSelf"] = 3400] = "alignSelf";
  pluginOrder2[pluginOrder2["justifyItems"] = 3500] = "justifyItems";
  pluginOrder2[pluginOrder2["justifyContent"] = 3600] = "justifyContent";
  pluginOrder2[pluginOrder2["justifySelf"] = 3700] = "justifySelf";
  pluginOrder2[pluginOrder2["flex"] = 3800] = "flex";
  pluginOrder2[pluginOrder2["flexGrow"] = 3900] = "flexGrow";
  pluginOrder2[pluginOrder2["flexShrink"] = 4e3] = "flexShrink";
  pluginOrder2[pluginOrder2["order"] = 4100] = "order";
  pluginOrder2[pluginOrder2["float"] = 4200] = "float";
  pluginOrder2[pluginOrder2["clear"] = 4300] = "clear";
  pluginOrder2[pluginOrder2["fontFamily"] = 4400] = "fontFamily";
  pluginOrder2[pluginOrder2["fontWeight"] = 4500] = "fontWeight";
  pluginOrder2[pluginOrder2["height"] = 4600] = "height";
  pluginOrder2[pluginOrder2["fontSize"] = 4700] = "fontSize";
  pluginOrder2[pluginOrder2["lineHeight"] = 4800] = "lineHeight";
  pluginOrder2[pluginOrder2["listStylePosition"] = 4900] = "listStylePosition";
  pluginOrder2[pluginOrder2["listStyleType"] = 5e3] = "listStyleType";
  pluginOrder2[pluginOrder2["margin"] = 5100] = "margin";
  pluginOrder2[pluginOrder2["maxHeight"] = 5200] = "maxHeight";
  pluginOrder2[pluginOrder2["maxWidth"] = 5300] = "maxWidth";
  pluginOrder2[pluginOrder2["minHeight"] = 5400] = "minHeight";
  pluginOrder2[pluginOrder2["minWidth"] = 5500] = "minWidth";
  pluginOrder2[pluginOrder2["objectFit"] = 5600] = "objectFit";
  pluginOrder2[pluginOrder2["objectPosition"] = 5700] = "objectPosition";
  pluginOrder2[pluginOrder2["opacity"] = 5800] = "opacity";
  pluginOrder2[pluginOrder2["outline"] = 5900] = "outline";
  pluginOrder2[pluginOrder2["overflow"] = 6e3] = "overflow";
  pluginOrder2[pluginOrder2["overscrollBehavior"] = 6100] = "overscrollBehavior";
  pluginOrder2[pluginOrder2["padding"] = 6200] = "padding";
  pluginOrder2[pluginOrder2["placeholderColor"] = 6300] = "placeholderColor";
  pluginOrder2[pluginOrder2["placeholderOpacity"] = 6400] = "placeholderOpacity";
  pluginOrder2[pluginOrder2["caretColor"] = 6450] = "caretColor";
  pluginOrder2[pluginOrder2["caretOpacity"] = 6460] = "caretOpacity";
  pluginOrder2[pluginOrder2["tabSize"] = 6470] = "tabSize";
  pluginOrder2[pluginOrder2["pointerEvents"] = 6500] = "pointerEvents";
  pluginOrder2[pluginOrder2["position"] = 6600] = "position";
  pluginOrder2[pluginOrder2["inset"] = 6700] = "inset";
  pluginOrder2[pluginOrder2["resize"] = 6800] = "resize";
  pluginOrder2[pluginOrder2["boxShadow"] = 6900] = "boxShadow";
  pluginOrder2[pluginOrder2["boxShadowColor"] = 6950] = "boxShadowColor";
  pluginOrder2[pluginOrder2["ringWidth"] = 7e3] = "ringWidth";
  pluginOrder2[pluginOrder2["ringOffsetColor"] = 7100] = "ringOffsetColor";
  pluginOrder2[pluginOrder2["ringOffsetWidth"] = 7200] = "ringOffsetWidth";
  pluginOrder2[pluginOrder2["ringColor"] = 7300] = "ringColor";
  pluginOrder2[pluginOrder2["ringOpacity"] = 7400] = "ringOpacity";
  pluginOrder2[pluginOrder2["fill"] = 7500] = "fill";
  pluginOrder2[pluginOrder2["stroke"] = 7600] = "stroke";
  pluginOrder2[pluginOrder2["strokeWidth"] = 7700] = "strokeWidth";
  pluginOrder2[pluginOrder2["strokeDashArray"] = 7750] = "strokeDashArray";
  pluginOrder2[pluginOrder2["strokeDashOffset"] = 7760] = "strokeDashOffset";
  pluginOrder2[pluginOrder2["tableLayout"] = 7800] = "tableLayout";
  pluginOrder2[pluginOrder2["textAlign"] = 7900] = "textAlign";
  pluginOrder2[pluginOrder2["textColor"] = 8e3] = "textColor";
  pluginOrder2[pluginOrder2["textOpacity"] = 8100] = "textOpacity";
  pluginOrder2[pluginOrder2["textOverflow"] = 8200] = "textOverflow";
  pluginOrder2[pluginOrder2["textShadow"] = 8250] = "textShadow";
  pluginOrder2[pluginOrder2["fontStyle"] = 8300] = "fontStyle";
  pluginOrder2[pluginOrder2["textTransform"] = 8400] = "textTransform";
  pluginOrder2[pluginOrder2["textDecorationStyle"] = 8450] = "textDecorationStyle";
  pluginOrder2[pluginOrder2["textDecorationLength"] = 8455] = "textDecorationLength";
  pluginOrder2[pluginOrder2["textDecorationColor"] = 8460] = "textDecorationColor";
  pluginOrder2[pluginOrder2["textDecorationOpacity"] = 8470] = "textDecorationOpacity";
  pluginOrder2[pluginOrder2["textDecorationOffset"] = 8480] = "textDecorationOffset";
  pluginOrder2[pluginOrder2["textDecorationThickness"] = 8490] = "textDecorationThickness";
  pluginOrder2[pluginOrder2["textDecoration"] = 8500] = "textDecoration";
  pluginOrder2[pluginOrder2["textIndent"] = 8550] = "textIndent";
  pluginOrder2[pluginOrder2["textStrokeColor"] = 8560] = "textStrokeColor";
  pluginOrder2[pluginOrder2["textStrokeWidth"] = 8570] = "textStrokeWidth";
  pluginOrder2[pluginOrder2["content"] = 8580] = "content";
  pluginOrder2[pluginOrder2["fontSmoothing"] = 8600] = "fontSmoothing";
  pluginOrder2[pluginOrder2["fontVariantNumeric"] = 8700] = "fontVariantNumeric";
  pluginOrder2[pluginOrder2["letterSpacing"] = 8800] = "letterSpacing";
  pluginOrder2[pluginOrder2["userSelect"] = 8900] = "userSelect";
  pluginOrder2[pluginOrder2["verticalAlign"] = 9e3] = "verticalAlign";
  pluginOrder2[pluginOrder2["visibility"] = 9100] = "visibility";
  pluginOrder2[pluginOrder2["backfaceVisibility"] = 9150] = "backfaceVisibility";
  pluginOrder2[pluginOrder2["whitespace"] = 9200] = "whitespace";
  pluginOrder2[pluginOrder2["wordBreak"] = 9300] = "wordBreak";
  pluginOrder2[pluginOrder2["writingMode"] = 9340] = "writingMode";
  pluginOrder2[pluginOrder2["hyphens"] = 9350] = "hyphens";
  pluginOrder2[pluginOrder2["width"] = 9400] = "width";
  pluginOrder2[pluginOrder2["zIndex"] = 9500] = "zIndex";
  pluginOrder2[pluginOrder2["isolation"] = 9550] = "isolation";
  pluginOrder2[pluginOrder2["gap"] = 9600] = "gap";
  pluginOrder2[pluginOrder2["gridAutoFlow"] = 9700] = "gridAutoFlow";
  pluginOrder2[pluginOrder2["gridTemplateColumns"] = 9800] = "gridTemplateColumns";
  pluginOrder2[pluginOrder2["gridAutoColumns"] = 9900] = "gridAutoColumns";
  pluginOrder2[pluginOrder2["gridColumn"] = 1e4] = "gridColumn";
  pluginOrder2[pluginOrder2["gridColumnStart"] = 10100] = "gridColumnStart";
  pluginOrder2[pluginOrder2["gridColumnEnd"] = 10200] = "gridColumnEnd";
  pluginOrder2[pluginOrder2["gridTemplateRows"] = 10300] = "gridTemplateRows";
  pluginOrder2[pluginOrder2["gridAutoRows"] = 10400] = "gridAutoRows";
  pluginOrder2[pluginOrder2["gridRow"] = 10500] = "gridRow";
  pluginOrder2[pluginOrder2["gridRowStart"] = 10600] = "gridRowStart";
  pluginOrder2[pluginOrder2["gridRowEnd"] = 10700] = "gridRowEnd";
  pluginOrder2[pluginOrder2["transform"] = 10800] = "transform";
  pluginOrder2[pluginOrder2["transformOrigin"] = 10900] = "transformOrigin";
  pluginOrder2[pluginOrder2["scale"] = 11e3] = "scale";
  pluginOrder2[pluginOrder2["rotate"] = 11100] = "rotate";
  pluginOrder2[pluginOrder2["translate"] = 11200] = "translate";
  pluginOrder2[pluginOrder2["skew"] = 11300] = "skew";
  pluginOrder2[pluginOrder2["perspective"] = 11350] = "perspective";
  pluginOrder2[pluginOrder2["perspectiveOrigin"] = 11360] = "perspectiveOrigin";
  pluginOrder2[pluginOrder2["transitionProperty"] = 11400] = "transitionProperty";
  pluginOrder2[pluginOrder2["transitionTimingFunction"] = 11500] = "transitionTimingFunction";
  pluginOrder2[pluginOrder2["transitionDuration"] = 11600] = "transitionDuration";
  pluginOrder2[pluginOrder2["transitionDelay"] = 11700] = "transitionDelay";
  pluginOrder2[pluginOrder2["keyframes"] = 11800] = "keyframes";
  pluginOrder2[pluginOrder2["animation"] = 11900] = "animation";
  pluginOrder2[pluginOrder2["imageRendering"] = 11950] = "imageRendering";
  pluginOrder2[pluginOrder2["mixBlendMode"] = 12e3] = "mixBlendMode";
  pluginOrder2[pluginOrder2["backgroundBlendMode"] = 12100] = "backgroundBlendMode";
  pluginOrder2[pluginOrder2["filter"] = 12200] = "filter";
  pluginOrder2[pluginOrder2["blur"] = 12300] = "blur";
  pluginOrder2[pluginOrder2["brightness"] = 12400] = "brightness";
  pluginOrder2[pluginOrder2["contrast"] = 12500] = "contrast";
  pluginOrder2[pluginOrder2["dropShadow"] = 12600] = "dropShadow";
  pluginOrder2[pluginOrder2["grayscale"] = 12700] = "grayscale";
  pluginOrder2[pluginOrder2["hueRotate"] = 12800] = "hueRotate";
  pluginOrder2[pluginOrder2["invert"] = 12900] = "invert";
  pluginOrder2[pluginOrder2["saturate"] = 13e3] = "saturate";
  pluginOrder2[pluginOrder2["sepia"] = 13100] = "sepia";
  pluginOrder2[pluginOrder2["backdropFilter"] = 13200] = "backdropFilter";
  pluginOrder2[pluginOrder2["backdropBlur"] = 13300] = "backdropBlur";
  pluginOrder2[pluginOrder2["backdropBrightness"] = 13400] = "backdropBrightness";
  pluginOrder2[pluginOrder2["backdropContrast"] = 13500] = "backdropContrast";
  pluginOrder2[pluginOrder2["backdropGrayscale"] = 13600] = "backdropGrayscale";
  pluginOrder2[pluginOrder2["backdropHueRotate"] = 13700] = "backdropHueRotate";
  pluginOrder2[pluginOrder2["backdropInvert"] = 13800] = "backdropInvert";
  pluginOrder2[pluginOrder2["backdropOpacity"] = 13900] = "backdropOpacity";
  pluginOrder2[pluginOrder2["backdropSaturate"] = 14e3] = "backdropSaturate";
  pluginOrder2[pluginOrder2["backdropSepia"] = 14100] = "backdropSepia";
  pluginOrder2[pluginOrder2["willChange"] = 14200] = "willChange";
  pluginOrder2[pluginOrder2["touchAction"] = 14300] = "touchAction";
  pluginOrder2[pluginOrder2["scrollBehavior"] = 14400] = "scrollBehavior";
  pluginOrder2[pluginOrder2["accentColor"] = 14500] = "accentColor";
})(pluginOrder || (pluginOrder = {}));
var createPlugin = function(plugin, config2) {
  return {
    handler: plugin,
    config: config2
  };
};
createPlugin.withOptions = function(pluginFunction, configFunction) {
  if (configFunction === void 0) {
    configFunction = function() {
      return {};
    };
  }
  var optionsFunction = function(options2) {
    if (options2 === void 0) {
      options2 = {};
    }
    return {
      __options: options2,
      handler: pluginFunction(options2),
      config: configFunction(options2)
    };
  };
  optionsFunction.__isOptionsFunction = true;
  optionsFunction.__pluginFunction = pluginFunction;
  optionsFunction.__configFunction = configFunction;
  return optionsFunction;
};
var defaultColors = {
  transparent: "transparent",
  current: "currentColor",
  inherit: "inherit",
  light: colors$1.light,
  dark: colors$1.dark,
  black: colors$1.black,
  white: colors$1.white,
  slate: colors$1.slate,
  gray: colors$1.gray,
  zinc: colors$1.zinc,
  neutral: colors$1.neutral,
  stone: colors$1.stone,
  red: colors$1.red,
  yellow: colors$1.amber,
  green: colors$1.emerald,
  blue: colors$1.blue,
  indigo: colors$1.indigo,
  purple: colors$1.violet,
  pink: colors$1.pink,
  rose: colors$1.rose,
  fuchsia: colors$1.fuchsia,
  violet: colors$1.violet,
  cyan: colors$1.cyan,
  teal: colors$1.teal,
  emerald: colors$1.emerald,
  lime: colors$1.lime,
  amber: colors$1.amber,
  orange: colors$1.orange,
  sky: colors$1.sky,
  "light-blue": colors$1.sky,
  "warm-gray": colors$1.stone,
  "true-gray": colors$1.neutral,
  "cool-gray": colors$1.gray,
  "blue-gray": colors$1.slate
};
var tShirtScale = {
  "xs": "20rem",
  "sm": "24rem",
  "md": "28rem",
  "lg": "32rem",
  "xl": "36rem",
  "2xl": "42rem",
  "3xl": "48rem",
  "4xl": "56rem",
  "5xl": "64rem",
  "6xl": "72rem",
  "7xl": "80rem"
};
({
  // purge: [],
  presets: [],
  prefixer: true,
  attributify: false,
  darkMode: "class",
  theme: {
    orientation: {
      portrait: "portrait",
      landscape: "landscape"
    },
    screens: {
      sm: "640px",
      md: "768px",
      lg: "1024px",
      xl: "1280px",
      "2xl": "1536px"
    },
    colors: defaultColors,
    spacing: {
      px: "1px",
      0: "0px",
      0.5: "0.125rem",
      1: "0.25rem",
      1.5: "0.375rem",
      2: "0.5rem",
      2.5: "0.625rem",
      3: "0.75rem",
      3.5: "0.875rem",
      4: "1rem",
      5: "1.25rem",
      6: "1.5rem",
      7: "1.75rem",
      8: "2rem",
      9: "2.25rem",
      10: "2.5rem",
      11: "2.75rem",
      12: "3rem",
      14: "3.5rem",
      16: "4rem",
      20: "5rem",
      24: "6rem",
      28: "7rem",
      32: "8rem",
      36: "9rem",
      40: "10rem",
      44: "11rem",
      48: "12rem",
      52: "13rem",
      56: "14rem",
      60: "15rem",
      64: "16rem",
      72: "18rem",
      80: "20rem",
      96: "24rem"
      // float -> float/4 rem
    },
    animation: {
      none: "none",
      spin: "spin 1s linear infinite",
      ping: "ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",
      pulse: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
      bounce: "bounce 1s infinite",
      "shock": {
        animation: "shock",
        transformOrigin: "center bottom"
      },
      "flash": "flash",
      "bubble": "bubble",
      "rubber-band": "rubberBand",
      "shake-x": "shakeX",
      "shake-y": "shakeY",
      "head-shake": "headShake 1s ease-in-out",
      "swing": {
        animation: "swing",
        transformOrigin: "top center"
      },
      "tada": "tada",
      "wobble": "wobble",
      "jello": "jello",
      "heart-beat": "heartBeat 1s ease-in-out",
      "hinge": "hinge 2s",
      "jack-in": "jackInTheBox",
      "light-speed-in-left": "lightSpeedInLeft",
      "light-speed-in-right": "lightSpeedInRight",
      "light-speed-out-left": "lightSpeedOutLeft",
      "light-speed-out-right": "lightSpeedOutRight",
      "flip": {
        animation: "flip",
        backfaceVisibility: "visible"
      },
      "flip-in-x": {
        animation: "flipInX",
        backfaceVisibility: "visible"
      },
      "flip-in-y": {
        animation: "flipInY",
        backfaceVisibility: "visible"
      },
      "flip-out-x": {
        animation: "flipOutX",
        backfaceVisibility: "visible"
      },
      "flip-out-y": {
        animation: "flipOutY",
        backfaceVisibility: "visible"
      },
      "rotate-in": "rotateIn",
      "rotate-in-down-left": "rotateInDownLeft",
      "rotate-in-down-right": "rotateInDownRight",
      "rotate-in-up-left": "rotateInUpLeft",
      "rotate-in-up-right": "rotateInUpRight",
      "rotate-out": "rotateOut",
      "rotate-out-down-left": "rotateOutDownLeft",
      "rotate-out-down-right": "rotateOutDownRight",
      "rotate-out-up-left": "rotateOutUpLeft",
      "rotate-out-up-right": "rotateOutUpRight",
      "roll-in": "rollIn",
      "roll-out": "rollOut",
      "zoom-in": "zoomIn",
      "zoom-in-down": "zoomInDown",
      "zoom-in-left": "zoomInLeft",
      "zoom-in-right": "zoomInRight",
      "zoom-in-up": "zoomInUp",
      "bounce-in": "bounceIn 750ms",
      "bounce-in-down": "bounceInDown",
      "bounce-in-left": "bounceInLeft",
      "bounce-in-right": "bounceInRight",
      "bounce-in-up": "bounceInUp",
      "bounce-out": "bounceOut 750ms",
      "bounce-out-down": "bounceOutDown",
      "bounce-out-left": "bounceOutLeft",
      "bounce-out-right": "bounceOutRight",
      "bounce-out-up": "bounceOutUp",
      "zoom-out": "zoomOut",
      "zoom-out-down": "zoomOutDown",
      "zoom-out-left": "zoomOutLeft",
      "zoom-out-right": "zoomOutRight",
      "zoom-out-up": "zoomOutUp",
      "slide-in-down": "slideInDown",
      "slide-in-left": "slideInLeft",
      "slide-in-right": "slideInRight",
      "slide-in-up": "slideInUp",
      "slide-out-down": "slideOutDown",
      "slide-out-left": "slideOutLeft",
      "slide-out-right": "slideOutRight",
      "slide-out-up": "slideOutUp",
      "fade-in": "fadeIn",
      "fade-in-down": "fadeInDown",
      "fade-in-down-big": "fadeInDownBig",
      "fade-in-left": "fadeInLeft",
      "fade-in-left-big": "fadeInLeftBig",
      "fade-in-right": "fadeInRight",
      "fade-in-right-big": "fadeInRightBig",
      "fade-in-up": "fadeInUp",
      "fade-in-up-big": "fadeInUpBig",
      "fade-in-top-left": "fadeInTopLeft",
      "fade-in-top-right": "fadeInTopRight",
      "fade-in-bottom-left": "fadeInBottomLeft",
      "fade-in-bottom-right": "fadeInBottomRight",
      "fade-out": "fadeOut",
      "fade-out-down": "fadeOutDown",
      "fade-out-down-big": "fadeOutDownBig",
      "fade-out-left": "fadeOutLeft",
      "fade-out-left-big": "fadeOutLeftBig",
      "fade-out-right": "fadeOutRight",
      "fade-out-right-big": "fadeOutRightBig",
      "fade-out-up": "fadeOutUp",
      "fade-out-up-big": "fadeOutUpBig",
      "back-in-up": "backInUp",
      "back-in-down": "backInDown",
      "back-in-left": "backInLeft",
      "back-in-right": "backInRight",
      "back-out-up": "backOutUp",
      "back-out-down": "backOutDown",
      "back-out-left": "backOutLeft",
      "back-out-right": "backOutRight"
    },
    animationDuration: {
      DEFAULT: "1000ms",
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms",
      1500: "1500ms",
      2e3: "2000ms",
      2500: "2500ms",
      3e3: "3000ms"
      // int >=0 -> int ms
    },
    animationDelay: {
      DEFAULT: "500ms",
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms",
      1500: "1500ms",
      2e3: "2000ms",
      2500: "2500ms",
      3e3: "3000ms"
      // int >=0 -> int ms
    },
    animationIterationCount: {
      DEFAULT: "1",
      loop: "infinite",
      "repeat-1": "1",
      "repeat-2": "2",
      "repeat-3": "3",
      "repeat-4": "4",
      "repeat-5": "5",
      "repeat-6": "6",
      "repeat-7": "7",
      "repeat-8": "8",
      "repeat-9": "9",
      "repeat-10": "10",
      "repeat-11": "11",
      "repeat-12": "12"
    },
    animationTimingFunction: {
      DEFAULT: "ease",
      linear: "linear",
      in: "ease-in",
      out: "ease-out",
      "in-out": "ease-in-out"
    },
    backdropBlur: function(theme) {
      return theme("blur");
    },
    backdropBrightness: function(theme) {
      return theme("brightness");
    },
    backdropContrast: function(theme) {
      return theme("contrast");
    },
    backdropGrayscale: function(theme) {
      return theme("grayscale");
    },
    backdropHueRotate: function(theme) {
      return theme("hueRotate");
    },
    backdropInvert: function(theme) {
      return theme("invert");
    },
    backdropOpacity: function(theme) {
      return theme("opacity");
    },
    backdropSaturate: function(theme) {
      return theme("saturate");
    },
    backdropSepia: function(theme) {
      return theme("sepia");
    },
    backgroundColor: function(theme) {
      return theme("colors");
    },
    backgroundImage: {
      none: "none",
      "gradient-1": "linear-gradient(135deg, #FDEB71 10%, #F8D800 100%)",
      "gradient-2": "linear-gradient(135deg, #ABDCFF 10%, #0396FF 100%)",
      "gradient-3": "linear-gradient(135deg, #FEB692 10%, #EA5455 100%)",
      "gradient-4": "linear-gradient(135deg, #CE9FFC 10%, #7367F0 100%)",
      "gradient-5": "linear-gradient(135deg, #90F7EC 10%, #32CCBC 100%)",
      "gradient-6": "linear-gradient(135deg, #FFF6B7 10%, #F6416C 100%)",
      "gradient-7": "linear-gradient(135deg, #81FBB8 10%, #28C76F 100%)",
      "gradient-8": "linear-gradient(135deg, #E2B0FF 10%, #9F44D3 100%)",
      "gradient-9": "linear-gradient(135deg, #F97794 10%, #623AA2 100%)",
      "gradient-10": "linear-gradient(135deg, #FCCF31 10%, #F55555 100%)",
      "gradient-11": "linear-gradient(135deg, #F761A1 10%, #8C1BAB 100%)",
      "gradient-12": "linear-gradient(135deg, #43CBFF 10%, #9708CC 100%)",
      "gradient-13": "linear-gradient(135deg, #5EFCE8 10%, #736EFE 100%)",
      "gradient-14": "linear-gradient(135deg, #FAD7A1 10%, #E96D71 100%)",
      "gradient-15": "linear-gradient(135deg, #FFD26F 10%, #3677FF 100%)",
      "gradient-16": "linear-gradient(135deg, #A0FE65 10%, #FA016D 100%)",
      "gradient-17": "linear-gradient(135deg, #FFDB01 10%, #0E197D 100%)",
      "gradient-18": "linear-gradient(135deg, #FEC163 10%, #DE4313 100%)",
      "gradient-19": "linear-gradient(135deg, #92FFC0 10%, #002661 100%)",
      "gradient-20": "linear-gradient(135deg, #EEAD92 10%, #6018DC 100%)",
      "gradient-21": "linear-gradient(135deg, #F6CEEC 10%, #D939CD 100%)",
      "gradient-22": "linear-gradient(135deg, #52E5E7 10%, #130CB7 100%)",
      "gradient-23": "linear-gradient(135deg, #F1CA74 10%, #A64DB6 100%)",
      "gradient-24": "linear-gradient(135deg, #E8D07A 10%, #5312D6 100%)",
      "gradient-25": "linear-gradient(135deg, #EECE13 10%, #B210FF 100%)",
      "gradient-26": "linear-gradient(135deg, #79F1A4 10%, #0E5CAD 100%)",
      "gradient-27": "linear-gradient(135deg, #FDD819 10%, #E80505 100%)",
      "gradient-28": "linear-gradient(135deg, #FFF3B0 10%, #CA26FF 100%)",
      "gradient-29": "linear-gradient(135deg, #FFF5C3 10%, #9452A5 100%)",
      "gradient-30": "linear-gradient(135deg, #F05F57 10%, #360940 100%)",
      "gradient-31": "linear-gradient(135deg, #2AFADF 10%, #4C83FF 100%)",
      "gradient-32": "linear-gradient(135deg, #FFF886 10%, #F072B6 100%)",
      "gradient-33": "linear-gradient(135deg, #97ABFF 10%, #123597 100%)",
      "gradient-34": "linear-gradient(135deg, #F5CBFF 10%, #C346C2 100%)",
      "gradient-35": "linear-gradient(135deg, #FFF720 10%, #3CD500 100%)",
      "gradient-36": "linear-gradient(135deg, #FF6FD8 10%, #3813C2 100%)",
      "gradient-37": "linear-gradient(135deg, #EE9AE5 10%, #5961F9 100%)",
      "gradient-38": "linear-gradient(135deg, #FFD3A5 10%, #FD6585 100%)",
      "gradient-39": "linear-gradient(135deg, #C2FFD8 10%, #465EFB 100%)",
      "gradient-40": "linear-gradient(135deg, #FD6585 10%, #0D25B9 100%)",
      "gradient-41": "linear-gradient(135deg, #FD6E6A 10%, #FFC600 100%)",
      "gradient-42": "linear-gradient(135deg, #65FDF0 10%, #1D6FA3 100%)",
      "gradient-43": "linear-gradient(135deg, #6B73FF 10%, #000DFF 100%)",
      "gradient-44": "linear-gradient(135deg, #FF7AF5 10%, #513162 100%)",
      "gradient-45": "linear-gradient(135deg, #F0FF00 10%, #58CFFB 100%)",
      "gradient-46": "linear-gradient(135deg, #FFE985 10%, #FA742B 100%)",
      "gradient-47": "linear-gradient(135deg, #FFA6B7 10%, #1E2AD2 100%)",
      "gradient-48": "linear-gradient(135deg, #FFAA85 10%, #B3315F 100%)",
      "gradient-49": "linear-gradient(135deg, #72EDF2 10%, #5151E5 100%)",
      "gradient-50": "linear-gradient(135deg, #FF9D6C 10%, #BB4E75 100%)",
      "gradient-51": "linear-gradient(135deg, #F6D242 10%, #FF52E5 100%)",
      "gradient-52": "linear-gradient(135deg, #69FF97 10%, #00E4FF 100%)",
      "gradient-53": "linear-gradient(135deg, #3B2667 10%, #BC78EC 100%)",
      "gradient-54": "linear-gradient(135deg, #70F570 10%, #49C628 100%)",
      "gradient-55": "linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%)",
      "gradient-56": "linear-gradient(135deg, #FAB2FF 10%, #1904E5 100%)",
      "gradient-57": "linear-gradient(135deg, #81FFEF 10%, #F067B4 100%)",
      "gradient-58": "linear-gradient(135deg, #FFA8A8 10%, #FCFF00 100%)",
      "gradient-59": "linear-gradient(135deg, #FFCF71 10%, #2376DD 100%)",
      "gradient-60": "linear-gradient(135deg, #FF96F9 10%, #C32BAC 100%)",
      "gradient-to-t": "linear-gradient(to top, var(--tw-gradient-stops))",
      "gradient-to-tr": "linear-gradient(to top right, var(--tw-gradient-stops))",
      "gradient-to-r": "linear-gradient(to right, var(--tw-gradient-stops))",
      "gradient-to-br": "linear-gradient(to bottom right, var(--tw-gradient-stops))",
      "gradient-to-b": "linear-gradient(to bottom, var(--tw-gradient-stops))",
      "gradient-to-bl": "linear-gradient(to bottom left, var(--tw-gradient-stops))",
      "gradient-to-l": "linear-gradient(to left, var(--tw-gradient-stops))",
      "gradient-to-tl": "linear-gradient(to top left, var(--tw-gradient-stops))"
    },
    backgroundOpacity: function(theme) {
      return theme("opacity");
    },
    backgroundPosition: {
      bottom: "bottom",
      center: "center",
      left: "left",
      "left-bottom": "left bottom",
      "left-top": "left top",
      right: "right",
      "right-bottom": "right bottom",
      "right-top": "right top",
      top: "top"
    },
    backgroundSize: {
      auto: "auto",
      cover: "cover",
      contain: "contain"
    },
    blur: {
      DEFAULT: "8px",
      0: "0",
      sm: "4px",
      md: "12px",
      lg: "16px",
      xl: "24px",
      "2xl": "40px",
      "3xl": "64px"
    },
    borderColor: function(theme) {
      var _a2;
      return __assign({ DEFAULT: theme("colors.gray.200", "currentColor") }, (_a2 = theme("colors")) !== null && _a2 !== void 0 ? _a2 : {});
    },
    borderOpacity: function(theme) {
      return theme("opacity");
    },
    borderRadius: {
      DEFAULT: "0.25rem",
      none: "0px",
      sm: "0.125rem",
      md: "0.375rem",
      lg: "0.5rem",
      xl: "0.75rem",
      "2xl": "1rem",
      "3xl": "1.5rem",
      "1": "100%",
      full: "9999px"
    },
    borderWidth: {
      DEFAULT: "1px",
      0: "0px",
      2: "2px",
      4: "4px",
      8: "8px"
      // int >=0 -> int px
    },
    boxShadow: {
      DEFAULT: "0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1)",
      sm: "0 1px 2px 0 rgb(0 0 0/0.05)",
      md: "0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1)",
      lg: "0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1)",
      xl: "0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1)",
      "2xl": "0 25px 50px -12px rgb(0 0 0/0.25)",
      inner: "inset 0 2px 4px 0 rgb(0 0 0/0.05)",
      none: "0 0 #0000"
    },
    boxShadowColor: function(theme) {
      return theme("colors");
    },
    brightness: {
      0: "0",
      50: ".5",
      75: ".75",
      90: ".9",
      95: ".95",
      100: "1",
      105: "1.05",
      110: "1.1",
      125: "1.25",
      150: "1.5",
      200: "2"
    },
    caretColor: function(theme) {
      var _a2;
      return __assign({ auto: "auto" }, (_a2 = theme("colors")) !== null && _a2 !== void 0 ? _a2 : {});
    },
    caretOpacity: function(theme) {
      return theme("opacity");
    },
    columns: __assign(__assign({}, tShirtScale), { auto: "auto", 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", 10: "10", 11: "11", 12: "12", "3xs": "16rem", "2xs": "18rem" }),
    container: {},
    content: {
      DEFAULT: '""',
      "open-quote": "open-quote",
      "close-quote": "close-quote",
      "open-square": '"["',
      "close-square": '"]"',
      "open-curly": '"{"',
      "close-curly": '"}"',
      "open-bracket": '"("',
      "close-bracket": '")"'
    },
    contrast: {
      0: "0",
      50: ".5",
      75: ".75",
      100: "1",
      125: "1.25",
      150: "1.5",
      200: "2"
    },
    cursor: {
      auto: "auto",
      default: "default",
      pointer: "pointer",
      wait: "wait",
      text: "text",
      move: "move",
      help: "help",
      "not-allowed": "not-allowed"
    },
    divideColor: function(theme) {
      return theme("borderColor");
    },
    divideOpacity: function(theme) {
      return theme("borderOpacity");
    },
    divideWidth: function(theme) {
      return theme("borderWidth");
    },
    dropShadow: {
      DEFAULT: ["0 1px 2px rgba(0, 0, 0, 0.1)", "0 1px 1px rgba(0, 0, 0, 0.06)"],
      sm: "0 1px 1px rgba(0,0,0,0.05)",
      md: ["0 4px 3px rgba(0, 0, 0, 0.07)", "0 2px 2px rgba(0, 0, 0, 0.06)"],
      lg: ["0 10px 8px rgba(0, 0, 0, 0.04)", "0 4px 3px rgba(0, 0, 0, 0.1)"],
      xl: ["0 20px 13px rgba(0, 0, 0, 0.03)", "0 8px 5px rgba(0, 0, 0, 0.08)"],
      "2xl": "0 25px 25px rgba(0, 0, 0, 0.15)",
      none: "0 0 #0000"
    },
    fill: function(theme) {
      var _a2;
      return __assign(__assign({}, (_a2 = theme("colors")) !== null && _a2 !== void 0 ? _a2 : {}), { none: "none" });
    },
    flex: {
      1: "1 1 0%",
      auto: "1 1 auto",
      initial: "0 1 auto",
      none: "none"
    },
    flexGrow: {
      DEFAULT: "1",
      0: "0"
    },
    flexShrink: {
      DEFAULT: "1",
      0: "0"
    },
    fontFamily: {
      sans: [
        "ui-sans-serif",
        "system-ui",
        "-apple-system",
        "BlinkMacSystemFont",
        '"Segoe UI"',
        "Roboto",
        '"Helvetica Neue"',
        "Arial",
        '"Noto Sans"',
        "sans-serif",
        '"Apple Color Emoji"',
        '"Segoe UI Emoji"',
        '"Segoe UI Symbol"',
        '"Noto Color Emoji"'
      ],
      serif: [
        "ui-serif",
        "Georgia",
        "Cambria",
        '"Times New Roman"',
        "Times",
        "serif"
      ],
      mono: [
        "ui-monospace",
        "SFMono-Regular",
        "Menlo",
        "Monaco",
        "Consolas",
        '"Liberation Mono"',
        '"Courier New"',
        "monospace"
      ]
    },
    fontSize: {
      xs: ["0.75rem", { lineHeight: "1rem" }],
      sm: ["0.875rem", { lineHeight: "1.25rem" }],
      base: ["1rem", { lineHeight: "1.5rem" }],
      lg: ["1.125rem", { lineHeight: "1.75rem" }],
      xl: ["1.25rem", { lineHeight: "1.75rem" }],
      "2xl": ["1.5rem", { lineHeight: "2rem" }],
      "3xl": ["1.875rem", { lineHeight: "2.25rem" }],
      "4xl": ["2.25rem", { lineHeight: "2.5rem" }],
      "5xl": ["3rem", { lineHeight: "1" }],
      "6xl": ["3.75rem", { lineHeight: "1" }],
      "7xl": ["4.5rem", { lineHeight: "1" }],
      "8xl": ["6rem", { lineHeight: "1" }],
      "9xl": ["8rem", { lineHeight: "1" }]
      // nxl -> [n rem, lineHeight: 1]
    },
    fontWeight: {
      thin: "100",
      extralight: "200",
      light: "300",
      normal: "400",
      medium: "500",
      semibold: "600",
      bold: "700",
      extrabold: "800",
      black: "900"
      // int[0, 900] -> int
    },
    gap: function(theme) {
      return theme("spacing");
    },
    gradientColorStops: function(theme) {
      return theme("colors");
    },
    grayscale: {
      DEFAULT: "100%",
      0: "0"
    },
    gridAutoColumns: {
      auto: "auto",
      min: "min-content",
      max: "max-content",
      fr: "minmax(0, 1fr)"
    },
    gridAutoRows: {
      auto: "auto",
      min: "min-content",
      max: "max-content",
      fr: "minmax(0, 1fr)"
    },
    gridColumn: {
      auto: "auto",
      "span-1": "span 1 / span 1",
      "span-2": "span 2 / span 2",
      "span-3": "span 3 / span 3",
      "span-4": "span 4 / span 4",
      "span-5": "span 5 / span 5",
      "span-6": "span 6 / span 6",
      "span-7": "span 7 / span 7",
      "span-8": "span 8 / span 8",
      "span-9": "span 9 / span 9",
      "span-10": "span 10 / span 10",
      "span-11": "span 11 / span 11",
      "span-12": "span 12 / span 12",
      // span-int(>=1) -> span int / span int
      "span-full": "1 / -1"
    },
    gridColumnEnd: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7",
      8: "8",
      9: "9",
      10: "10",
      11: "11",
      12: "12",
      13: "13"
      // int >=1 -> int
    },
    gridColumnStart: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7",
      8: "8",
      9: "9",
      10: "10",
      11: "11",
      12: "12",
      13: "13"
      // int >=1 -> int
    },
    gridRow: {
      auto: "auto",
      "span-1": "span 1 / span 1",
      "span-2": "span 2 / span 2",
      "span-3": "span 3 / span 3",
      "span-4": "span 4 / span 4",
      "span-5": "span 5 / span 5",
      "span-6": "span 6 / span 6",
      // span-int(>=1) -> span int / span int
      "span-full": "1 / -1"
    },
    gridRowStart: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7"
      // int >=1 -> int
    },
    gridRowEnd: {
      auto: "auto",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7"
      // int >=1 -> int
    },
    gridTemplateColumns: {
      none: "none",
      1: "repeat(1, minmax(0, 1fr))",
      2: "repeat(2, minmax(0, 1fr))",
      3: "repeat(3, minmax(0, 1fr))",
      4: "repeat(4, minmax(0, 1fr))",
      5: "repeat(5, minmax(0, 1fr))",
      6: "repeat(6, minmax(0, 1fr))",
      7: "repeat(7, minmax(0, 1fr))",
      8: "repeat(8, minmax(0, 1fr))",
      9: "repeat(9, minmax(0, 1fr))",
      10: "repeat(10, minmax(0, 1fr))",
      11: "repeat(11, minmax(0, 1fr))",
      12: "repeat(12, minmax(0, 1fr))"
      // int >=1 -> repeat(int, minmax(0, 1fr))
    },
    gridTemplateRows: {
      none: "none",
      1: "repeat(1, minmax(0, 1fr))",
      2: "repeat(2, minmax(0, 1fr))",
      3: "repeat(3, minmax(0, 1fr))",
      4: "repeat(4, minmax(0, 1fr))",
      5: "repeat(5, minmax(0, 1fr))",
      6: "repeat(6, minmax(0, 1fr))"
      // int >=1 -> repeat(int, minmax(0, 1fr))
    },
    height: function(theme, _a2) {
      var _b2, _c;
      var breakpoints = _a2.breakpoints;
      return __assign(__assign(__assign(__assign({}, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), tShirtScale), {
        "1/2": "50%",
        "1/3": "33.333333%",
        "2/3": "66.666667%",
        "1/4": "25%",
        "2/4": "50%",
        "3/4": "75%",
        "1/5": "20%",
        "2/5": "40%",
        "3/5": "60%",
        "4/5": "80%",
        "1/6": "16.666667%",
        "2/6": "33.333333%",
        "3/6": "50%",
        "4/6": "66.666667%",
        "5/6": "83.333333%",
        // fraction -> percent
        auto: "auto",
        full: "100%",
        min: "min-content",
        max: "max-content",
        prose: "65ch",
        screen: "100vh"
      }), breakpoints((_c = theme("screens")) !== null && _c !== void 0 ? _c : {}));
    },
    hueRotate: {
      "-180": "-180deg",
      "-90": "-90deg",
      "-60": "-60deg",
      "-30": "-30deg",
      "-15": "-15deg",
      0: "0deg",
      15: "15deg",
      30: "30deg",
      60: "60deg",
      90: "90deg",
      180: "180deg"
    },
    inset: function(theme, _a2) {
      var _b2;
      var negative = _a2.negative;
      return __assign(__assign(__assign({ auto: "auto" }, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), negative(theme("spacing"))), { "1/2": "50%", "1/3": "33.333333%", "2/3": "66.666667%", "1/4": "25%", "2/4": "50%", "3/4": "75%", full: "100%", "-1/2": "-50%", "-1/3": "-33.333333%", "-2/3": "-66.666667%", "-1/4": "-25%", "-2/4": "-50%", "-3/4": "-75%", "-full": "-100%" });
    },
    invert: {
      DEFAULT: "100%",
      0: "0"
    },
    keyframes,
    letterSpacing: {
      tighter: "-0.05em",
      tight: "-0.025em",
      normal: "0em",
      wide: "0.025em",
      wider: "0.05em",
      widest: "0.1em"
    },
    lineHeight: {
      none: "1",
      tight: "1.25",
      snug: "1.375",
      normal: "1.5",
      relaxed: "1.625",
      loose: "2",
      3: ".75rem",
      4: "1rem",
      5: "1.25rem",
      6: "1.5rem",
      7: "1.75rem",
      8: "2rem",
      9: "2.25rem",
      10: "2.5rem"
      // int>=0 -> int/4 rem
    },
    listStyleType: {
      none: "none",
      circle: "circle",
      square: "square",
      disc: "disc",
      decimal: "decimal",
      "zero-decimal": "decimal-leading-zero",
      greek: "lower-greek",
      roman: "lower-roman",
      alpha: "lower-alpha",
      "upper-roman": "upper-roman",
      "upper-alpha": "upper-alpha"
    },
    margin: function(theme, _a2) {
      var _b2;
      var negative = _a2.negative;
      return __assign(__assign({ auto: "auto" }, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), negative(theme("spacing")));
    },
    maxHeight: function(theme, _a2) {
      var _b2, _c;
      var breakpoints = _a2.breakpoints;
      return __assign(__assign(__assign(__assign({}, breakpoints((_b2 = theme("screens")) !== null && _b2 !== void 0 ? _b2 : {})), (_c = theme("spacing")) !== null && _c !== void 0 ? _c : {}), tShirtScale), { none: "none", full: "100%", min: "min-content", max: "max-content", prose: "65ch", screen: "100vh" });
    },
    maxWidth: function(theme, _a2) {
      var _b2, _c;
      var breakpoints = _a2.breakpoints;
      return __assign(__assign(__assign(__assign({}, breakpoints((_b2 = theme("screens")) !== null && _b2 !== void 0 ? _b2 : {})), (_c = theme("spacing")) !== null && _c !== void 0 ? _c : {}), tShirtScale), { none: "none", full: "100%", min: "min-content", max: "max-content", prose: "65ch", screen: "100vw" });
    },
    minHeight: function(theme) {
      return theme("maxHeight");
    },
    minWidth: function(theme) {
      return theme("maxWidth");
    },
    objectPosition: {
      bottom: "bottom",
      center: "center",
      left: "left",
      "left-bottom": "left bottom",
      "left-top": "left top",
      right: "right",
      "right-bottom": "right bottom",
      "right-top": "right top",
      top: "top"
    },
    opacity: {
      0: "0",
      5: "0.05",
      10: "0.1",
      20: "0.2",
      25: "0.25",
      30: "0.3",
      40: "0.4",
      50: "0.5",
      60: "0.6",
      70: "0.7",
      75: "0.75",
      80: "0.8",
      90: "0.9",
      95: "0.95",
      100: "1"
      // float -> float/100
    },
    order: {
      first: "-9999",
      last: "9999",
      none: "0",
      1: "1",
      2: "2",
      3: "3",
      4: "4",
      5: "5",
      6: "6",
      7: "7",
      8: "8",
      9: "9",
      10: "10",
      11: "11",
      12: "12"
      // int[1, 9999]
    },
    outlineColor: function(theme) {
      return theme("colors");
    },
    outlineWidth: {
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    outlineOffset: {
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    padding: function(theme) {
      return theme("spacing");
    },
    perspective: function(theme) {
      var _a2;
      return __assign(__assign(__assign({}, (_a2 = theme("spacing")) !== null && _a2 !== void 0 ? _a2 : {}), tShirtScale), { none: "none" });
    },
    perspectiveOrigin: {
      center: "center",
      top: "top",
      "top-right": "top right",
      right: "right",
      "bottom-right": "bottom right",
      bottom: "bottom",
      "bottom-left": "bottom left",
      left: "left",
      "top-left": "top left"
    },
    placeholderColor: function(theme) {
      return theme("colors");
    },
    placeholderOpacity: function(theme) {
      return theme("opacity");
    },
    ringColor: function(theme) {
      var _a2;
      return __assign({ DEFAULT: theme("colors.blue.500", "#3b82f6") }, (_a2 = theme("colors")) !== null && _a2 !== void 0 ? _a2 : {});
    },
    ringOffsetColor: function(theme) {
      return theme("colors");
    },
    ringOffsetWidth: {
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
      // float -> float px
    },
    ringOpacity: function(theme) {
      var _a2;
      return __assign({ DEFAULT: "0.5" }, (_a2 = theme("opacity")) !== null && _a2 !== void 0 ? _a2 : {});
    },
    ringWidth: {
      DEFAULT: "3px",
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
      // float -> float px
    },
    rotate: {
      "-180": "-180deg",
      "-90": "-90deg",
      "-45": "-45deg",
      "-12": "-12deg",
      "-6": "-6deg",
      "-3": "-3deg",
      "-2": "-2deg",
      "-1": "-1deg",
      0: "0deg",
      1: "1deg",
      2: "2deg",
      3: "3deg",
      6: "6deg",
      12: "12deg",
      45: "45deg",
      90: "90deg",
      180: "180deg"
      // float[0, 360] -> float[0deg, 360deg]
      // ...negative
    },
    saturate: {
      DEFAULT: "0",
      0: "0",
      50: ".5",
      100: "1",
      150: "1.5",
      200: "2"
    },
    scale: {
      0: "0",
      50: ".5",
      75: ".75",
      90: ".9",
      95: ".95",
      100: "1",
      105: "1.05",
      110: "1.1",
      125: "1.25",
      150: "1.5"
      // int >=0 -> int/100
    },
    sepia: {
      DEFAULT: "100%",
      0: "0"
    },
    skew: {
      "-12": "-12deg",
      "-6": "-6deg",
      "-3": "-3deg",
      "-2": "-2deg",
      "-1": "-1deg",
      0: "0deg",
      1: "1deg",
      2: "2deg",
      3: "3deg",
      6: "6deg",
      12: "12deg"
      // float[0, 360] -> float[0deg, 360deg]
      // ...negative
    },
    space: function(theme, _a2) {
      var negative = _a2.negative;
      return __assign(__assign({}, theme("spacing")), negative(theme("spacing")));
    },
    stroke: function(theme) {
      var _a2;
      return __assign(__assign({}, (_a2 = theme("colors")) !== null && _a2 !== void 0 ? _a2 : {}), { none: "none" });
    },
    strokeWidth: {
      0: "0",
      1: "1",
      2: "2"
    },
    strokeDashArray: {
      0: "0",
      1: "1",
      2: "2"
    },
    strokeDashOffset: {
      0: "0",
      1: "1",
      2: "2"
    },
    tabSize: {
      DEFAULT: "4",
      0: "0",
      2: "2",
      4: "4",
      8: "8"
      // int >=0 -> int px
    },
    textColor: function(theme) {
      return theme("colors");
    },
    textOpacity: function(theme) {
      return theme("opacity");
    },
    textShadow: {
      DEFAULT: "0px 0px 1px rgb(0 0 0 / 20%), 0px 0px 1px rgb(1 0 5 / 10%)",
      sm: "1px 1px 3px rgb(36 37 47 / 25%)",
      md: "0px 1px 2px rgb(30 29 39 / 19%), 1px 2px 4px rgb(54 64 147 / 18%)",
      lg: "3px 3px 6px rgb(0 0 0 / 26%), 0 0 5px rgb(15 3 86 / 22%)",
      xl: "1px 1px 3px rgb(0 0 0 / 29%), 2px 4px 7px rgb(73 64 125 / 35%)",
      none: "none"
    },
    textDecorationColor: function(theme) {
      return theme("colors");
    },
    textDecorationOpacity: function(theme) {
      return theme("opacity");
    },
    textDecorationLength: {
      "auto": "auto",
      0: "0px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    textDecorationOffset: {
      "auto": "auto",
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    textDecorationThickness: {
      "auto": "auto",
      "from-font": "from-font",
      0: "0px",
      1: "1px",
      2: "2px",
      4: "4px",
      8: "8px"
    },
    textIndent: {
      DEFAULT: "1.5rem",
      xs: "0.5rem",
      sm: "1rem",
      md: "1.5rem",
      lg: "2rem",
      xl: "2.5rem",
      "2xl": "3rem",
      "3xl": "4rem"
    },
    textStrokeColor: function(theme) {
      var _a2;
      return __assign({ DEFAULT: theme("colors.gray.200", "currentColor") }, (_a2 = theme("colors")) !== null && _a2 !== void 0 ? _a2 : {});
    },
    textStrokeWidth: {
      DEFAULT: "medium",
      "none": "0",
      "sm": "thin",
      "md": "medium",
      "lg": "thick"
    },
    transformOrigin: {
      center: "center",
      top: "top",
      "top-right": "top right",
      right: "right",
      "bottom-right": "bottom right",
      bottom: "bottom",
      "bottom-left": "bottom left",
      left: "left",
      "top-left": "top left"
    },
    transitionDuration: {
      DEFAULT: "150ms",
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms"
      // int >=0 -> int ms
    },
    transitionDelay: {
      75: "75ms",
      100: "100ms",
      150: "150ms",
      200: "200ms",
      300: "300ms",
      500: "500ms",
      700: "700ms",
      1e3: "1000ms"
      // int >=0 -> int ms
    },
    transitionProperty: {
      DEFAULT: "background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",
      none: "none",
      all: "all",
      colors: "background-color, border-color, color, fill, stroke",
      opacity: "opacity",
      shadow: "box-shadow",
      transform: "transform"
    },
    transitionTimingFunction: {
      DEFAULT: "cubic-bezier(0.4, 0, 0.2, 1)",
      linear: "linear",
      in: "cubic-bezier(0.4, 0, 1, 1)",
      out: "cubic-bezier(0, 0, 0.2, 1)",
      "in-out": "cubic-bezier(0.4, 0, 0.2, 1)"
    },
    translate: function(theme, _a2) {
      var _b2;
      var negative = _a2.negative;
      return __assign(__assign(__assign({}, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), negative(theme("spacing"))), { "1/2": "50%", "1/3": "33.333333%", "2/3": "66.666667%", "1/4": "25%", "2/4": "50%", "3/4": "75%", full: "100%", "-1/2": "-50%", "-1/3": "-33.333333%", "-2/3": "-66.666667%", "-1/4": "-25%", "-2/4": "-50%", "-3/4": "-75%", "-full": "-100%" });
    },
    width: function(theme, _a2) {
      var _b2, _c;
      var breakpoints = _a2.breakpoints;
      return __assign(__assign(__assign(__assign({}, (_b2 = theme("spacing")) !== null && _b2 !== void 0 ? _b2 : {}), tShirtScale), {
        // fraction -> percent
        "1/2": "50%",
        "1/3": "33.333333%",
        "2/3": "66.666667%",
        "1/4": "25%",
        "2/4": "50%",
        "3/4": "75%",
        "1/5": "20%",
        "2/5": "40%",
        "3/5": "60%",
        "4/5": "80%",
        "1/6": "16.666667%",
        "2/6": "33.333333%",
        "3/6": "50%",
        "4/6": "66.666667%",
        "5/6": "83.333333%",
        "1/12": "8.333333%",
        "2/12": "16.666667%",
        "3/12": "25%",
        "4/12": "33.333333%",
        "5/12": "41.666667%",
        "6/12": "50%",
        "7/12": "58.333333%",
        "8/12": "66.666667%",
        "9/12": "75%",
        "10/12": "83.333333%",
        "11/12": "91.666667%",
        auto: "auto",
        full: "100%",
        min: "min-content",
        max: "max-content",
        prose: "65ch",
        screen: "100vw"
      }), breakpoints((_c = theme("screens")) !== null && _c !== void 0 ? _c : {}));
    },
    zIndex: {
      auto: "auto",
      0: "0",
      10: "10",
      20: "20",
      30: "30",
      40: "40",
      50: "50"
      // int[0, 99999] ->  int[0, 99999]
      // ...negative
    }
  },
  variantOrder,
  plugins: [
    createPlugin(function(_a2) {
      var addUtilities = _a2.addUtilities;
      addUtilities({
        ".before\\:contents": {
          "&::before": {
            content: '""',
            display: "contents"
          }
        },
        ".after\\:contents": {
          "&::after": {
            content: '""',
            display: "contents"
          }
        }
      });
    })
  ],
  handlers: {
    static: true,
    time: true,
    color: true,
    opacity: true,
    number: true,
    string: true,
    bracket: true,
    hex: true,
    nxl: true,
    fraction: true,
    size: true,
    variable: true,
    negative: true
  }
});
const COLOR_PREFIXES = [
  "focus-within",
  "hover",
  "focus",
  "hocus",
  ""
];
const cyColors = {
  jade: {
    50: "#E4FBF2",
    100: "#C2F1DE",
    200: "#A3E7CB",
    300: "#69D3A7",
    400: "#1FA971",
    500: "#00814D",
    600: "#005F39",
    700: "#00442A",
    800: "#003220",
    900: "#00291B",
    1e3: "#00261A"
  },
  red: {
    50: "#FBEFF1",
    100: "#FAD9DF",
    200: "#F8C4CD",
    300: "#F59AA9",
    400: "#E45770",
    500: "#C62B49",
    600: "#9F1331",
    700: "#7A0723",
    800: "#5E021B",
    900: "#4F0018",
    1e3: "#490018"
  },
  orange: {
    50: "#F5F4D7",
    100: "#F3ECB3",
    200: "#F1E08F",
    300: "#EDBB4A",
    400: "#DB7903",
    500: "#BD5800",
    600: "#963F00",
    700: "#702C00",
    800: "#521F00",
    900: "#411800",
    1e3: "#391500"
  },
  indigo: {
    50: "#F0F1FF",
    100: "#DADDFE",
    200: "#C5C9FD",
    300: "#9AA2FC",
    400: "#6470F3",
    500: "#4956E3",
    600: "#3A46CC",
    700: "#2F3AB0",
    800: "#252E8F",
    900: "#1C236D",
    1e3: "#151A50"
  },
  gray: {
    50: "#F3F4FA",
    100: "#E1E3ED",
    200: "#D0D2E0",
    300: "#BFC2D4",
    400: "#AFB3C7",
    500: "#9095AD",
    600: "#747994",
    700: "#5A5F7A",
    800: "#434861",
    900: "#2E3247",
    1e3: "#1B1E2E"
  },
  teal: {
    50: "#E0F6FA",
    100: "#B7E7F0",
    200: "#90D9E6",
    300: "#4BBFD2",
    400: "#0097A8",
    500: "#007780",
    600: "#00595D",
    700: "#004143",
    800: "#003131",
    900: "#002828",
    1e3: "#002525"
  },
  purple: {
    50: "#F5F0FB",
    100: "#E9DDFA",
    200: "#DECBF8",
    300: "#C8A7F5",
    400: "#A06CE4",
    500: "#7F43C9",
    600: "#632AA6",
    700: "#4B1A83",
    800: "#3B1268",
    900: "#320E58",
    1e3: "#2F0C52"
  },
  green: {
    50: "#F5F5D0",
    100: "#E7E8AB",
    200: "#DADC89",
    300: "#BDC44D",
    400: "#849706",
    500: "#5B7100",
    600: "#405500",
    700: "#2E4000",
    800: "#233200",
    900: "#1C2A00",
    1e3: "#192500"
  },
  fuchsia: {
    50: "#FAEFFB",
    100: "#F7DAF9",
    200: "#F3C6F8",
    300: "#ED9FF4",
    400: "#D65FE3",
    500: "#B735C7",
    600: "#901CA2",
    700: "#6C0F7E",
    800: "#510862",
    900: "#400651",
    1e3: "#39054A"
  },
  magenta: {
    50: "#FCEEF5",
    100: "#FADAEA",
    200: "#F9C5DF",
    300: "#F69ECA",
    400: "#E45DA3",
    500: "#C53282",
    600: "#9C1964",
    700: "#750C4D",
    800: "#59063D",
    900: "#490435",
    1e3: "#420333"
  }
};
const semanticColors = {
  // TODO: are these actual concepts from the design system?
  primary: Object.assign(Object.assign({}, cyColors.indigo), { DEFAULT: cyColors.indigo[500] }),
  secondary: Object.assign(Object.assign({}, cyColors.indigo), { DEFAULT: cyColors.indigo[50] }),
  error: Object.assign(Object.assign({}, cyColors.red), { DEFAULT: cyColors.red[400] }),
  caution: Object.assign(Object.assign({}, cyColors.red), { DEFAULT: cyColors.red[500] }),
  info: Object.assign(Object.assign({}, cyColors.indigo), { DEFAULT: cyColors.indigo[500] }),
  warning: Object.assign(Object.assign({}, cyColors.orange), { DEFAULT: cyColors.orange[500] }),
  "warning-light": Object.assign(Object.assign({}, cyColors.orange), { DEFAULT: cyColors.orange[400] }),
  success: Object.assign(Object.assign({}, cyColors.jade), { DEFAULT: cyColors.jade[400] }),
  "success-light": Object.assign(Object.assign({}, cyColors.jade), { DEFAULT: cyColors.jade[300] }),
  confirm: Object.assign(Object.assign({}, cyColors.jade), { DEFAULT: cyColors.jade[500] }),
  "body-gray": Object.assign(Object.assign({}, cyColors.gray), { DEFAULT: cyColors.gray[600] })
};
const FilteredColors = Object.keys(colors$1).reduce((acc, key) => {
  if (![
    "blueGray",
    "coolGray",
    "lightBlue",
    "warmGray",
    "trueGray",
    "zink"
  ].includes(key)) {
    acc[key] = colors$1[key];
  }
  return acc;
}, {});
Object.assign(Object.assign(Object.assign({}, FilteredColors), semanticColors), cyColors);
const cyActionAddX8 = {
  name: "actionAddX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 1v6m3-3H1" class="icon-dark"/>`
};
const cyActionAddLargeX16 = {
  name: "actionAddLargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 8h6m6 0H8m0 0V2m0 6v6" class="icon-dark"/>`
};
const cyActionAddMediumX16 = {
  name: "actionAddMediumX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 3v10m5-5H3" class="icon-dark"/>`
};
const cyActionAddSmallX16 = {
  name: "actionAddSmallX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 4v8m4-4H4" class="icon-dark"/>`
};
const cyActionAddXsmallX16 = {
  name: "actionAddXsmallX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5v6m3-3H5" class="icon-dark"/>`
};
const cyActionDeleteX12 = {
  name: "actionDeleteX12",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 11 11 1M1 1l10 10" class="icon-dark"/>`
};
const cyActionDeleteCircleX16 = {
  name: "actionDeleteCircleX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Zm6-8a8 8 0 1 0 0 16A8 8 0 0 0 8 0ZM6.707 5.293a1 1 0 0 0-1.414 1.414L6.586 8 5.293 9.293a1 1 0 0 0 1.414 1.414L8 9.414l1.293 1.293a1 1 0 0 0 1.414-1.414L9.414 8l1.293-1.293a1 1 0 0 0-1.414-1.414L8 6.586 6.707 5.293Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyActionDeleteLargeX16 = {
  name: "actionDeleteLargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 13 13 3M3 3l10 10" class="icon-dark"/>`
};
const cyActionDeleteLargeX24 = {
  name: "actionDeleteLargeX24",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 20 20 4M4 4l16 16" class="icon-dark"/>`
};
const cyActionDeleteMediumX16 = {
  name: "actionDeleteMediumX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m4 12 8-8M4 4l8 8" class="icon-dark"/>`
};
const cyActionDeleteXlargeX16 = {
  name: "actionDeleteXlargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 14 14 2M2 2l12 12" class="icon-dark"/>`
};
const cyActionDisableCircleSolidX16 = {
  name: "actionDisableCircleSolidX16",
  data: `<circle cx="8" cy="8" r="8" fill="currentColor" class="icon-dark"/><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8h8"/>`
};
const cyActionExportX16 = {
  name: "actionExportX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-2m0-4V2m0 0H9m5 0L7 9" class="icon-dark"/>`
};
const cyActionNextX16 = {
  name: "actionNextX16",
  data: `<path fill="#D0D2E0" d="m12.285 8.429-8.528 5.117a.5.5 0 0 1-.757-.43V2.884a.5.5 0 0 1 .757-.429l8.528 5.117a.5.5 0 0 1 0 .858Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 2.6v10.8M3.757 2.454l8.528 5.117a.5.5 0 0 1 0 .858l-8.528 5.117a.5.5 0 0 1-.757-.43V2.884a.5.5 0 0 1 .757-.429Z" class="icon-dark"/>`
};
const cyActionPlayLargeX16 = {
  name: "actionPlayLargeX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m12.285 8.429-8.528 5.117a.5.5 0 0 1-.757-.43V2.884a.5.5 0 0 1 .757-.429l8.528 5.117a.5.5 0 0 1 0 .858Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyActionPlaySmallX16 = {
  name: "actionPlaySmallX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m11.322 8.424-6.557 4.098A.5.5 0 0 1 4 12.098V3.902a.5.5 0 0 1 .765-.424l6.557 4.098a.5.5 0 0 1 0 .848Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyActionPlayVideoX16 = {
  name: "actionPlayVideoX16",
  data: `<path fill="#D0D2E0" d="M1 5a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V5ZM11 6v4l3.379.845A.5.5 0 0 0 15 10.36V5.64a.5.5 0 0 0-.621-.485L11 6Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="M11 6V5a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V6Zm0 0 3.379-.845A.5.5 0 0 1 15 5.64v4.72a.5.5 0 0 1-.621.485L11 10V6Z" class="icon-dark"/>`
};
const cyActionPlayVideoX24 = {
  name: "actionPlayVideoX24",
  data: `<path fill="#D0D2E0" d="M3 8a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8ZM16 9v6l3.804.76A1 1 0 0 0 21 14.78V9.22a1 1 0 0 0-1.196-.98L16 9Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="M16 9V8a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V9Zm0 0 3.804-.76A1 1 0 0 1 21 9.22v5.56a1 1 0 0 1-1.196.98L16 15V9Z" class="icon-dark"/>`
};
const cyActionPowerX16 = {
  name: "actionPowerX16",
  data: `<path fill="currentColor" d="M7 7a1 1 0 1 0 2 0H7Zm2-6a1 1 0 0 0-2 0h2ZM4.572 3.074a1 1 0 1 0-1.144-1.64l1.144 1.64Zm8-1.64a1 1 0 0 0-1.144 1.64l1.144-1.64ZM3.757 12.243a6 6 0 0 1 0-8.486L2.343 2.343a8 8 0 0 0 0 11.314l1.414-1.414Zm8.486-8.486a6 6 0 0 1 0 8.486l1.414 1.414a8 8 0 0 0 0-11.314l-1.414 1.414Zm0 8.486a6 6 0 0 1-8.486 0l-1.414 1.414a8 8 0 0 0 11.314 0l-1.414-1.414ZM9 7V1H7v6h2ZM3.757 3.757c.257-.256.53-.483.815-.683l-1.144-1.64c-.382.266-.745.57-1.085.91l1.414 1.413Zm7.67-.683c.287.2.56.427.816.683l1.414-1.414a8.04 8.04 0 0 0-1.085-.91l-1.144 1.641Z" class="icon-dark"/>`
};
const cyActionQuestionMarkCircleX16 = {
  name: "actionQuestionMarkCircleX16",
  data: `<path fill="#D0D2E0" d="M13.657 13.657A8 8 0 1 1 2.343 2.343a8 8 0 0 1 11.314 11.314Z" class="icon-light"/><path fill="currentColor" fill-rule="evenodd" d="m1.845 2.535-.001.001A1 1 0 0 1 .146 1.48L1 2c-.854-.52-.854-.52-.853-.521v-.001l.001-.002.003-.004.005-.009.015-.023.042-.061A3.315 3.315 0 0 1 .87.707 3.452 3.452 0 0 1 3 0c1.099 0 1.911.432 2.414 1.113C5.879 1.743 6 2.478 6 3c0 .63-.173 1.147-.463 1.574-.272.402-.62.68-.871.873-.608.465-.655.516-.673.67a1 1 0 0 1-1.986-.234c.125-1.061.915-1.638 1.327-1.938l.117-.087c.229-.175.352-.29.43-.405C3.944 3.363 4 3.237 4 3c0-.259-.067-.525-.195-.7C3.714 2.179 3.526 2 3 2c-.437 0-.729.152-.913.294a1.316 1.316 0 0 0-.242.241ZM3 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd" style="transform:translate(5px,2.8px)"/>`
};
const cyActionQuestionMarkDefaultX16 = {
  name: "actionQuestionMarkDefaultX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M6.33 4.85a1.142 1.142 0 0 1-.007.012l.001-.002.003-.004.001-.003v-.002h.001Zm-.868-.496a98.636 98.636 0 0 1-.868-.497l.001-.003.003-.004.005-.01.016-.025.046-.073a4.032 4.032 0 0 1 .77-.84A3.99 3.99 0 0 1 8 2c1.344 0 2.293.561 2.865 1.388.532.77.674 1.67.674 2.32 0 .76-.187 1.38-.51 1.893-.313.495-.718.834-1.045 1.083-.118.09-.219.164-.308.23-.19.14-.326.239-.457.368-.148.144-.21.256-.235.398a1 1 0 0 1-1.968-.36c.12-.653.447-1.118.803-1.467a7.31 7.31 0 0 1 .776-.628l.177-.132c.271-.207.446-.371.565-.559.106-.17.201-.413.201-.826 0-.409-.096-.861-.318-1.182C9.04 4.264 8.718 4 8 4a1.991 1.991 0 0 0-1.677.861 1 1 0 0 1-1.73-1.003l.869.496ZM8 12a1 1 0 0 1 1 1v.01a1 1 0 1 1-2 0V13a1 1 0 0 1 1-1Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyActionQuestionMarkOutlineX16 = {
  name: "actionQuestionMarkOutlineX16",
  data: `<path fill="#E1E3ED" stroke="currentColor" stroke-width="2" d="M12.95 12.95a7 7 0 1 1-9.9-9.9 7 7 0 0 1 9.9 9.9Z" class="icon-dark-stroke icon-light-fill"/><path fill="currentColor" fill-rule="evenodd" d="m6.845 5.535-.001.001A1 1 0 0 1 5.146 4.48L6 5c-.854-.52-.854-.52-.853-.521v-.001l.001-.002.003-.004.005-.009.015-.023.042-.061a3.315 3.315 0 0 1 .657-.672A3.452 3.452 0 0 1 8 3c1.099 0 1.911.432 2.414 1.113.465.63.586 1.365.586 1.887 0 .63-.173 1.147-.463 1.574-.272.402-.62.68-.871.873-.608.465-.655.516-.673.67a1 1 0 1 1-1.986-.234c.125-1.061.915-1.638 1.327-1.938l.117-.087c.229-.175.352-.29.43-.405C8.944 6.363 9 6.237 9 6c0-.259-.067-.525-.195-.7C8.714 5.179 8.526 5 8 5c-.437 0-.729.152-.913.294a1.316 1.316 0 0 0-.242.241ZM8 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyActionRecordX16 = {
  name: "actionRecordX16",
  data: `<path fill="currentColor" d="M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" class="icon-dark"/><path fill="currentColor" fill-rule="evenodd" d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-dark" clip-rule="evenodd"/><path stroke="currentColor" stroke-width="2" d="M14 8A6 6 0 1 1 2 8a6 6 0 0 1 12 0Zm-4 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-dark"/>`
};
const cyActionRefreshX16 = {
  name: "actionRefreshX16",
  data: `<path fill="currentColor" d="m13 2.071-.707-.707A1 1 0 0 1 14 2.071h-1Zm0 2.572h1a1 1 0 0 1-1 1v-1Zm-2.571 0v1a1 1 0 0 1-.708-1.707l.708.707Zm1.17 4.321a1 1 0 0 1 1.84.786l-1.84-.786ZM14 2.071v2.572h-2V2.07h2ZM7 2a5 5 0 0 0-5 5H0a7 7 0 0 1 7-7v2Zm4.6 3.036A5.002 5.002 0 0 0 7 2V0a7.001 7.001 0 0 1 6.439 4.25l-1.84.786Zm1.4.607h-.48v-2H13v2Zm-.48 0h-2.091v-2h2.09v2ZM2 7c0 1.381.559 2.63 1.464 3.536L2.05 11.95A6.981 6.981 0 0 1 0 7h2Zm1.464 3.536A4.98 4.98 0 0 0 7 12v2a6.981 6.981 0 0 1-4.95-2.05l1.414-1.414ZM7 12a5.002 5.002 0 0 0 4.6-3.036l1.839.786A7.002 7.002 0 0 1 7 14v-2Zm2.721-8.064 2.572-2.572 1.414 1.415-2.571 2.571L9.72 3.936Z" class="icon-dark"/>`
};
const cyActionRestartX16 = {
  name: "actionRestartX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 8a5 5 0 1 1-5-5h3m0 0L9 5m2-2L9 1" class="icon-dark"/>`
};
const cyActionStopX16 = {
  name: "actionStopX16",
  data: `<path fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 11.5v-7a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5Z" class="icon-dark"/>`
};
const cyArrowBottomRightX16 = {
  name: "arrowBottomRightX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0H6m6 0L4 4" class="icon-dark"/>`
};
const cyArrowCollapseX16 = {
  name: "arrowCollapseX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.5 3 8 5.5 5.5 3m0 10L8 10.5l2.5 2.5" class="icon-dark"/>`
};
const cyArrowDownX16 = {
  name: "arrowDownX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m4 9 4 4m0 0 4-4m-4 4V3" class="icon-dark"/>`
};
const cyArrowExpandX16 = {
  name: "arrowExpandX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.5 5.5 8 3 5.5 5.5m5 5L8 13l-2.5-2.5" class="icon-dark"/>`
};
const cyArrowLeftX16 = {
  name: "arrowLeftX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 4 3 8m0 0 4 4M3 8h10" class="icon-dark"/>`
};
const cyArrowOutlineDownX16 = {
  name: "arrowOutlineDownX16",
  data: `<path fill="#D0D2E0" d="M15 8A7 7 0 1 0 1 8a7 7 0 0 0 14 0Z" class="icon-light"/><path fill="currentColor" d="M6.207 8.207a1 1 0 0 1-1.414-1.414l1.414 1.414ZM8 5l-.707-.707a1 1 0 0 1 1.414 0L8 5Zm3.207 1.793a1 1 0 0 1-1.414 1.414l1.414-1.414ZM9 11a1 1 0 1 1-2 0h2Zm5-3a6 6 0 0 0-6-6V0a8 8 0 0 1 8 8h-2ZM8 2a6 6 0 0 0-6 6H0a8 8 0 0 1 8-8v2ZM2 8a6 6 0 0 0 6 6v2a8 8 0 0 1-8-8h2Zm6 6a6 6 0 0 0 6-6h2a8 8 0 0 1-8 8v-2ZM4.793 6.793l2.5-2.5 1.414 1.414-2.5 2.5-1.414-1.414Zm3.914-2.5 2.5 2.5-1.414 1.414-2.5-2.5 1.414-1.414ZM9 5v6H7V5h2Z" class="icon-dark"/>`
};
const cyArrowRightX16 = {
  name: "arrowRightX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m9 12 4-4m0 0L9 4m4 4H3" class="icon-dark"/>`
};
const cyArrowRightLargeX16 = {
  name: "arrowRightLargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m10 13 5-5m0 0-5-5m5 5H1" class="icon-dark"/>`
};
const cyArrowSquareDownX16 = {
  name: "arrowSquareDownX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 1v10m0 0 4-4m-4 4L4 7m-3 6v2h14v-2" class="icon-dark"/>`
};
const cyArrowTopRightX16 = {
  name: "arrowTopRightX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10V4m0 0H6m6 0-8 8" class="icon-dark"/>`
};
const cyArrowUpX16 = {
  name: "arrowUpX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 7 8 3m0 0L4 7m4-4v10" class="icon-dark"/>`
};
const cyBrowserChromeX16 = {
  name: "browserChromeX16",
  data: `<g clip-path="url(#browser-chrome_x16_svg__a)"><path fill="#0F9D58" d="M0 8a8 8 0 0 0 8 8l3.465-6A3.998 3.998 0 0 1 8 12a3.999 3.999 0 0 1-3.468-2.005L1.07 4A7.97 7.97 0 0 0 0 8Z"/><path fill="#FFCD40" d="M8 16a8 8 0 0 0 6.93-12H8a4 4 0 0 1 3.468 5.995l-.003.005L8 16Z"/><path fill="#DB4437" fill-rule="evenodd" d="M1.07 4A7.997 7.997 0 0 1 8 0a7.997 7.997 0 0 1 6.93 4H8a4 4 0 0 0-3.468 5.995L1.07 4Z" clip-rule="evenodd"/><circle cx="8" cy="8" r="4" fill="#fff"/><circle cx="8" cy="8" r="3.2" fill="#4285F4"/></g><defs><clipPath id="browser-chrome_x16_svg__a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs>`
};
const cyBrowserChromeBetaX16 = {
  name: "browserChromeBetaX16",
  data: `<mask id="browser-chrome-beta_x16_svg__a" width="16" height="16" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M8.009 15.42a7.412 7.412 0 1 0 0-14.824 7.412 7.412 0 0 0 0 14.825Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__a)"><path fill="#DB4437" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/><path fill="url(#browser-chrome-beta_x16_svg__b)" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/><path fill="#3E2723" fill-opacity=".1" d="M5.171 9.663 1.816 3.911l-.049.083 3.331 5.712.073-.043Z"/><path fill="#0F9D58" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/><path fill="url(#browser-chrome-beta_x16_svg__c)" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/><path fill="#263238" fill-opacity=".1" d="m10.86 9.804-.07-.039-3.235 5.656h.097l3.209-5.613-.002-.004Z"/><mask id="browser-chrome-beta_x16_svg__d" width="11" height="15" x="0" y="1" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__d)"><path fill="#FFCD40" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/><path fill="url(#browser-chrome-beta_x16_svg__e)" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/></g><path fill="#FFCD40" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/><path fill="url(#browser-chrome-beta_x16_svg__f)" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/><mask id="browser-chrome-beta_x16_svg__g" width="9" height="12" x="7" y="4" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="m8.009 4.64 2.918 5.054-3.275 5.727h7.769V4.64H8.009Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__g)"><path fill="#DB4437" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/><path fill="url(#browser-chrome-beta_x16_svg__h)" d="M1.774.596v9.098H5.09L8.01 4.64h7.412V.596H1.774Z"/></g><path fill="url(#browser-chrome-beta_x16_svg__i)" d="M8.009 4.64v1.763L14.61 4.64H8.01Z"/><mask id="browser-chrome-beta_x16_svg__j" width="15" height="10" x="1" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M1.774.596v3.398l3.317 5.7L8.01 4.64h7.412V.596H1.774Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__j)"><path fill="#0F9D58" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/><path fill="url(#browser-chrome-beta_x16_svg__k)" d="M.596 15.42h7.056l3.275-3.274V9.694H5.091L.596 1.985v13.436Z"/></g><path fill="url(#browser-chrome-beta_x16_svg__l)" d="m1.774 4.004 4.82 4.82-1.503.87-3.317-5.69Z"/><path fill="url(#browser-chrome-beta_x16_svg__m)" d="m7.657 15.412 1.766-6.587 1.504.869-3.27 5.718Z"/><path fill="#F1F1F1" d="M8.009 11.377a3.369 3.369 0 1 0 0-6.737 3.369 3.369 0 0 0 0 6.737Z"/><path fill="#4285F4" d="M8.008 10.704a2.696 2.696 0 1 0 0-5.391 2.696 2.696 0 0 0 0 5.391Z"/><path fill="#3E2723" fill-opacity=".2" d="M8.009 4.555a3.369 3.369 0 0 0-3.37 3.37v.084a3.369 3.369 0 0 1 3.37-3.37h7.412v-.083l-7.412-.001Z"/><path fill="#fff" fill-opacity=".1" d="M10.922 9.694a3.365 3.365 0 0 1-5.829 0L.596 1.985v.084l4.495 7.708a3.364 3.364 0 0 0 5.83 0v-.083h.001Z"/><path fill="#3E2723" d="M8.092 4.64h-.043a3.367 3.367 0 1 1 0 6.734h.043a3.37 3.37 0 1 0 0-6.74v.006Z" opacity=".1"/><path fill="#fff" fill-opacity=".2" d="M10.956 9.804a3.358 3.358 0 0 0 .29-2.699 3.332 3.332 0 0 1-.325 2.585l-3.269 5.73h.098l3.208-5.612-.002-.004ZM8.01.682a7.412 7.412 0 0 1 7.412 7.37v-.043a7.412 7.412 0 0 0-14.825 0v.042A7.412 7.412 0 0 1 8.01.681Z"/><path fill="#3E2723" fill-opacity=".1" d="M8.009 15.335a7.412 7.412 0 0 0 7.412-7.37v.044a7.412 7.412 0 0 1-14.825 0v-.043a7.412 7.412 0 0 0 7.413 7.37Z"/></g><mask id="browser-chrome-beta_x16_svg__n" width="16" height="16" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M8.009 15.42a7.412 7.412 0 1 0 0-14.824 7.412 7.412 0 0 0 0 14.825Z"/></mask><g mask="url(#browser-chrome-beta_x16_svg__n)"><path fill="#424242" d="M.348 9.239h15.536v6.504H.348V9.239Z"/></g><path fill="#fff" d="M5.37 12.78v-2.045h.739a.6.6 0 0 1 .414.158.51.51 0 0 1 .17.397.447.447 0 0 1-.075.258.479.479 0 0 1-.201.17v.012c.098.03.185.09.249.17a.462.462 0 0 1 .097.292.537.537 0 0 1-.179.417.63.63 0 0 1-.434.17h-.78Zm.263-1.166h.476a.309.309 0 0 0 .238-.099.305.305 0 0 0 0-.43.294.294 0 0 0-.23-.096h-.484v.625Zm0 .915h.527a.314.314 0 0 0 .245-.106.34.34 0 0 0 .094-.23.34.34 0 0 0-.351-.34h-.511l-.004.676Zm2.018.29a.68.68 0 0 1-.511-.212.748.748 0 0 1-.198-.533.769.769 0 0 1 .192-.525.623.623 0 0 1 .491-.22.646.646 0 0 1 .498.203c.13.15.196.344.185.542v.05H7.201a.475.475 0 0 0 .141.34c.081.08.19.124.304.123a.377.377 0 0 0 .381-.24l.234.097a.629.629 0 0 1-.225.272.654.654 0 0 1-.385.103Zm.376-.912a.373.373 0 0 0-.247-.315.391.391 0 0 0-.162-.022.374.374 0 0 0-.252.092.466.466 0 0 0-.146.245h.807Zm1.08.888a.406.406 0 0 1-.45-.448v-.733h-.245v-.239h.244v-.427h.262v.428h.341v.24h-.34v.712c0 .152.062.228.187.228a.277.277 0 0 0 .12-.022l.091.225a.53.53 0 0 1-.21.036Zm.818.024a.552.552 0 0 1-.371-.128.424.424 0 0 1-.15-.34.42.42 0 0 1 .17-.359.716.716 0 0 1 .437-.13.751.751 0 0 1 .38.086v-.04a.31.31 0 0 0-.106-.246.378.378 0 0 0-.259-.092.4.4 0 0 0-.206.054.28.28 0 0 0-.128.149l-.24-.103a.543.543 0 0 1 .19-.231.612.612 0 0 1 .377-.108.645.645 0 0 1 .445.157.56.56 0 0 1 .17.441v.852h-.24v-.203h-.012a.512.512 0 0 1-.457.24Zm.043-.24c.11-.001.216-.045.295-.122a.372.372 0 0 0 .131-.286.512.512 0 0 0-.34-.092.433.433 0 0 0-.289.084.25.25 0 0 0-.097.194.187.187 0 0 0 .089.17.353.353 0 0 0 .211.052Z"/><defs><linearGradient id="browser-chrome-beta_x16_svg__b" x1="2.386" x2="6.816" y1="6.262" y2="3.663" gradientUnits="userSpaceOnUse"><stop stop-color="#A52714" stop-opacity=".6"/><stop offset=".7" stop-color="#A52714" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__c" x1="9.244" x2="4.345" y1="13.759" y2="10.905" gradientUnits="userSpaceOnUse"><stop stop-color="#055524" stop-opacity=".4"/><stop offset=".3" stop-color="#055524" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__e" x1="10.181" x2="11.416" y1="4.132" y2="9.542" gradientUnits="userSpaceOnUse"><stop stop-color="#EA6100" stop-opacity=".3"/><stop offset=".7" stop-color="#EA6100" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__f" x1="10.181" x2="11.416" y1="4.132" y2="9.542" gradientUnits="userSpaceOnUse"><stop stop-color="#EA6100" stop-opacity=".3"/><stop offset=".7" stop-color="#EA6100" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__h" x1="2.386" x2="6.816" y1="6.262" y2="3.663" gradientUnits="userSpaceOnUse"><stop stop-color="#A52714" stop-opacity=".6"/><stop offset=".7" stop-color="#A52714" stop-opacity="0"/></linearGradient><linearGradient id="browser-chrome-beta_x16_svg__k" x1="9.244" x2="4.345" y1="13.759" y2="10.905" gradientUnits="userSpaceOnUse"><stop stop-color="#055524" stop-opacity=".4"/><stop offset=".3" stop-color="#055524" stop-opacity="0"/></linearGradient><radialGradient id="browser-chrome-beta_x16_svg__i" cx="0" cy="0" r="1" gradientTransform="translate(7.668 4.643) scale(7.07135)" gradientUnits="userSpaceOnUse"><stop stop-color="#3E2723" stop-opacity=".2"/><stop offset="1" stop-color="#3E2723" stop-opacity="0"/></radialGradient><radialGradient id="browser-chrome-beta_x16_svg__l" cx="0" cy="0" r="1" gradientTransform="translate(1.747 4.004) scale(6.56017)" gradientUnits="userSpaceOnUse"><stop stop-color="#3E2723" stop-opacity=".2"/><stop offset="1" stop-color="#3E2723" stop-opacity="0"/></radialGradient><radialGradient id="browser-chrome-beta_x16_svg__m" cx="0" cy="0" r="1" gradientTransform="translate(8.009 8.009) scale(7.41214)" gradientUnits="userSpaceOnUse"><stop stop-color="#263238" stop-opacity=".2"/><stop offset="1" stop-color="#263238" stop-opacity="0"/></radialGradient></defs>`
};
const cyBrowserChromeCanaryX16 = {
  name: "browserChromeCanaryX16",
  data: `<g clip-path="url(#browser-chrome-canary_x16_svg__a)"><path fill="#F4B70A" d="M0 8a8 8 0 0 0 8 8l3.465-6A3.999 3.999 0 0 1 8 12a3.999 3.999 0 0 1-3.468-2.005L1.07 4l-.104.187A7.964 7.964 0 0 0 0 8Z"/><path fill="#F7CC50" d="M8 16a8 8 0 0 0 6.93-12H8a4 4 0 0 1 3.468 5.995l-.003.005L8 16Z"/><path fill="#F19A11" fill-rule="evenodd" d="M1.07 4A7.997 7.997 0 0 1 8 0a7.997 7.997 0 0 1 6.93 4H8a4 4 0 0 0-3.468 5.995L1.07 4Z" clip-rule="evenodd"/><circle cx="8" cy="8" r="4" fill="#fff"/><circle cx="8" cy="8" r="3.2" fill="#F6C231"/></g><defs><clipPath id="browser-chrome-canary_x16_svg__a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs>`
};
const cyBrowserEdgeX16 = {
  name: "browserEdgeX16",
  data: `<g clip-path="url(#browser-edge_x16_svg__a)"><path fill="url(#browser-edge_x16_svg__b)" d="M14.44 11.909a5.87 5.87 0 0 1-.658.294 6.37 6.37 0 0 1-2.244.404c-2.957 0-5.534-2.034-5.534-4.645a1.967 1.967 0 0 1 1.027-1.707c-2.675.113-3.362 2.9-3.362 4.533 0 4.618 4.255 5.086 5.172 5.086.495 0 1.24-.144 1.688-.285l.082-.028a8.02 8.02 0 0 0 4.162-3.3.25.25 0 0 0-.332-.352Z"/><path fill="url(#browser-edge_x16_svg__c)" d="M14.44 11.909a5.87 5.87 0 0 1-.658.294 6.37 6.37 0 0 1-2.244.404c-2.957 0-5.534-2.034-5.534-4.645a1.967 1.967 0 0 1 1.027-1.707c-2.675.113-3.362 2.9-3.362 4.533 0 4.618 4.255 5.086 5.172 5.086.495 0 1.24-.144 1.688-.285l.082-.028a8.02 8.02 0 0 0 4.162-3.3.25.25 0 0 0-.332-.352Z" opacity=".35"/><path fill="url(#browser-edge_x16_svg__d)" d="M6.607 15.089a4.95 4.95 0 0 1-1.421-1.334 5.045 5.045 0 0 1 1.845-7.5c.195-.092.528-.258.971-.25a2.022 2.022 0 0 1 1.606.813c.253.337.392.745.398 1.166 0-.013 1.528-4.975-5-4.975-2.744 0-5 2.604-5 4.888a8.134 8.134 0 0 0 .756 3.5 8 8 0 0 0 9.774 4.194 4.723 4.723 0 0 1-3.923-.5l-.006-.002Z"/><path fill="url(#browser-edge_x16_svg__e)" d="M6.607 15.089a4.95 4.95 0 0 1-1.421-1.334 5.045 5.045 0 0 1 1.845-7.5c.195-.092.528-.258.971-.25a2.022 2.022 0 0 1 1.606.813c.253.337.392.745.398 1.166 0-.013 1.528-4.975-5-4.975-2.744 0-5 2.604-5 4.888a8.134 8.134 0 0 0 .756 3.5 8 8 0 0 0 9.774 4.194 4.723 4.723 0 0 1-3.923-.5l-.006-.002Z" opacity=".41"/><path fill="url(#browser-edge_x16_svg__f)" d="M9.52 9.304c-.051.065-.207.156-.207.354 0 .163.106.32.295.451.899.625 2.593.543 2.598.543a3.722 3.722 0 0 0 1.892-.522 3.837 3.837 0 0 0 1.901-3.305c.017-1.4-.5-2.332-.708-2.744C13.966 1.49 11.107 0 7.999 0a8 8 0 0 0-8 7.888c.03-2.284 2.3-4.129 5-4.129.219 0 1.466.022 2.625.63 1.021.536 1.556 1.183 1.928 1.825.386.667.455 1.51.455 1.845 0 .336-.171.834-.488 1.245Z"/><path fill="url(#browser-edge_x16_svg__g)" d="M9.52 9.304c-.051.065-.207.156-.207.354 0 .163.106.32.295.451.899.625 2.593.543 2.598.543a3.722 3.722 0 0 0 1.892-.522 3.837 3.837 0 0 0 1.901-3.305c.017-1.4-.5-2.332-.708-2.744C13.966 1.49 11.107 0 7.999 0a8 8 0 0 0-8 7.888c.03-2.284 2.3-4.129 5-4.129.219 0 1.466.022 2.625.63 1.021.536 1.556 1.183 1.928 1.825.386.667.455 1.51.455 1.845 0 .336-.171.834-.488 1.245Z"/></g><defs><radialGradient id="browser-edge_x16_svg__c" cx="0" cy="0" r="1" gradientTransform="matrix(5.96125 0 0 5.66319 9.825 11.154)" gradientUnits="userSpaceOnUse"><stop offset=".72" stop-opacity="0"/><stop offset=".95" stop-opacity=".53"/><stop offset="1"/></radialGradient><radialGradient id="browser-edge_x16_svg__e" cx="0" cy="0" r="1" gradientTransform="rotate(-81.384 9.438 3.654) scale(8.96413 7.24212)" gradientUnits="userSpaceOnUse"><stop offset=".76" stop-opacity="0"/><stop offset=".95" stop-opacity=".5"/><stop offset="1"/></radialGradient><radialGradient id="browser-edge_x16_svg__f" cx="0" cy="0" r="1" gradientTransform="matrix(-.50607 12.65188 -26.94585 -1.07783 1.615 2.961)" gradientUnits="userSpaceOnUse"><stop stop-color="#35C1F1"/><stop offset=".11" stop-color="#34C1ED"/><stop offset=".23" stop-color="#2FC2DF"/><stop offset=".31" stop-color="#2BC3D2"/><stop offset=".67" stop-color="#36C752"/></radialGradient><radialGradient id="browser-edge_x16_svg__g" cx="0" cy="0" r="1" gradientTransform="matrix(1.70345 5.8404 -4.74942 1.38525 15.003 4.838)" gradientUnits="userSpaceOnUse"><stop stop-color="#66EB6E"/><stop offset="1" stop-color="#66EB6E" stop-opacity="0"/></radialGradient><linearGradient id="browser-edge_x16_svg__b" x1="3.669" x2="14.815" y1="11.066" y2="11.066" gradientUnits="userSpaceOnUse"><stop stop-color="#0C59A4"/><stop offset="1" stop-color="#114A8B"/></linearGradient><linearGradient id="browser-edge_x16_svg__d" x1="9.545" x2="2.583" y1="6.231" y2="13.814" gradientUnits="userSpaceOnUse"><stop stop-color="#1B9DE2"/><stop offset=".16" stop-color="#1595DF"/><stop offset=".67" stop-color="#0680D7"/><stop offset="1" stop-color="#0078D4"/></linearGradient><clipPath id="browser-edge_x16_svg__a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs>`
};
const cyBrowserElectronDarkX16 = {
  name: "browserElectronDarkX16",
  data: `<path fill="#2B2E3A" d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z"/><path fill="#9FEAF9" d="M6.281 4.48c-1.625-.295-2.91.014-3.422.902-.382.662-.273 1.54.265 2.477a.167.167 0 1 0 .289-.165c-.485-.846-.579-1.603-.266-2.146.426-.737 1.572-1.013 3.075-.74a.167.167 0 0 0 .06-.327ZM3.97 9c.657.722 1.51 1.4 2.485 1.962 2.357 1.36 4.867 1.725 6.104.881a.167.167 0 1 0-.188-.275c-1.107.755-3.49.41-5.75-.895-.944-.545-1.771-1.201-2.405-1.898A.167.167 0 1 0 3.97 9Z"/><path fill="#9FEAF9" d="M12.164 8.797c1.064-1.257 1.436-2.522.924-3.407-.376-.651-1.17-.995-2.227-1.01a.167.167 0 0 0-.005.334c.95.013 1.636.309 1.944.843.424.735.093 1.863-.89 3.025a.167.167 0 0 0 .14.275.167.167 0 0 0 .114-.06Zm-2.735-4.26c-.963.205-1.987.608-2.97 1.176-2.434 1.405-4.022 3.478-3.802 4.98a.167.167 0 1 0 .33-.048c-.196-1.334 1.31-3.298 3.638-4.643.954-.55 1.946-.941 2.873-1.14a.167.167 0 1 0-.07-.326Z"/><path fill="#9FEAF9" d="M5.486 11.735c.556 1.553 1.466 2.51 2.49 2.51.747 0 1.437-.509 1.976-1.405a.166.166 0 0 0-.056-.23.167.167 0 0 0-.23.058c-.484.806-1.078 1.244-1.69 1.244-.85 0-1.662-.854-2.177-2.29a.167.167 0 0 0-.27-.07.165.165 0 0 0-.043.183Zm5.082-.304c.288-.92.443-1.983.443-3.09 0-2.76-.966-5.14-2.343-5.752a.167.167 0 0 0-.135.305c1.228.545 2.145 2.804 2.145 5.448 0 1.073-.15 2.102-.428 2.99a.165.165 0 0 0 .051.179.166.166 0 0 0 .267-.08Zm3.14-.164a.798.798 0 1 0-1.596 0 .798.798 0 0 0 1.595 0Zm-.334 0a.465.465 0 1 1-.93 0 .465.465 0 0 1 .93 0Zm-10.343.798a.798.798 0 1 0 0-1.595.798.798 0 0 0 0 1.595Zm0-.333a.464.464 0 1 1 0-.929.464.464 0 0 1 0 .929Z"/><path fill="#9FEAF9" d="M7.976 3.403a.798.798 0 1 0 0-1.596.798.798 0 0 0 0 1.596Zm0-.334a.464.464 0 1 1 0-.928.464.464 0 0 1 0 .928Zm.122 5.837a.577.577 0 1 1-.244-1.128.577.577 0 0 1 .244 1.128Z"/>`
};
const cyBrowserElectronLightX16 = {
  name: "browserElectronLightX16",
  data: `<path fill="#fff" d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z"/><path fill="#47848F" fill-rule="evenodd" d="M6.187 4.2c-1.742-.318-3.12.014-3.669.965-.41.71-.292 1.65.284 2.656a.18.18 0 0 0 .31-.178c-.52-.906-.62-1.718-.284-2.3.458-.79 1.685-1.086 3.296-.793a.18.18 0 0 0 .178-.277.179.179 0 0 0-.115-.074ZM3.708 9.041c.705.774 1.62 1.5 2.664 2.103 2.53 1.46 5.22 1.85 6.545.947a.179.179 0 0 0-.202-.296c-1.187.81-3.743.44-6.166-.959-1.013-.585-1.9-1.288-2.579-2.034a.18.18 0 0 0-.264.24l.002-.001Zm8.787-.216c1.141-1.348 1.54-2.703.992-3.652-.403-.698-1.256-1.067-2.389-1.081a.18.18 0 0 0-.18.176.179.179 0 0 0 .176.18c1.02.014 1.753.332 2.083.904.455.788.1 1.997-.955 3.243a.18.18 0 0 0 .151.293.179.179 0 0 0 .122-.062ZM9.563 4.258c-1.03.221-2.13.653-3.184 1.262-2.609 1.506-4.31 3.73-4.075 5.338a.18.18 0 0 0 .32.08.179.179 0 0 0 .034-.132c-.21-1.43 1.403-3.535 3.9-4.979 1.02-.59 2.086-1.009 3.08-1.222a.18.18 0 0 0 .06-.324.18.18 0 0 0-.135-.025v.002Z" clip-rule="evenodd"/><path fill="#47848F" fill-rule="evenodd" d="M5.336 11.975c.597 1.666 1.573 2.692 2.67 2.692.8 0 1.541-.546 2.118-1.507a.179.179 0 0 0-.306-.184c-.52.863-1.156 1.333-1.812 1.333-.911 0-1.782-.917-2.333-2.454a.18.18 0 0 0-.33-.016.18.18 0 0 0-.007.136Zm5.449-.325c.309-.987.475-2.126.475-3.312 0-2.96-1.037-5.512-2.512-6.167a.18.18 0 0 0-.24.228.18.18 0 0 0 .095.099c1.316.584 2.3 3.006 2.3 5.84 0 1.151-.161 2.254-.46 3.205a.18.18 0 0 0 .254.212.18.18 0 0 0 .088-.105Zm3.365-.175a.855.855 0 1 0-1.706 0 .855.855 0 0 0 1.704 0h.002Zm-.357 0a.498.498 0 1 1-.997-.001.498.498 0 0 1 .997 0Z" clip-rule="evenodd"/><path fill="#47848F" fill-rule="evenodd" d="M2.705 12.33a.855.855 0 1 0 0-1.71.855.855 0 0 0 0 1.71Zm0-.358a.498.498 0 1 1 0-.995.498.498 0 0 1 0 .995Zm5.301-8.93a.855.855 0 1 0 0-1.71.855.855 0 0 0 0 1.71Zm0-.358a.498.498 0 1 1 0-.996.498.498 0 0 1 0 .996Zm.13 6.259a.619.619 0 1 1-.26-1.21.619.619 0 1 1 .26 1.21Z" clip-rule="evenodd"/>`
};
const cyBrowserMozillaFirefoxX16 = {
  name: "browserMozillaFirefoxX16",
  data: `<g clip-path="url(#browser-mozilla-firefox_x16_svg__a)"><path fill="url(#browser-mozilla-firefox_x16_svg__b)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353l.002.013c-.877-2.185-2.363-3.067-3.578-4.986a9.425 9.425 0 0 1-.182-.297 2.45 2.45 0 0 1-.086-.16 1.41 1.41 0 0 1-.12-.32.02.02 0 0 0-.013-.007.028.028 0 0 0-.015 0l-.003.002-.006.003.003-.005C8.213 1.141 7.552 3.252 7.492 4.31a3.88 3.88 0 0 0-2.135.822 2.317 2.317 0 0 0-.2-.151 3.595 3.595 0 0 1-.022-1.896A5.742 5.742 0 0 0 3.27 4.527h-.004c-.307-.39-.285-1.674-.268-1.942-.09.036-.178.082-.259.137-.271.194-.525.41-.758.65a6.77 6.77 0 0 0-.725.869v.001-.001A6.549 6.549 0 0 0 .215 6.59l-.01.05c-.015.07-.068.41-.077.485l-.001.017A7.39 7.39 0 0 0 0 8.212v.04a7.755 7.755 0 0 0 15.396 1.31c.013-.1.023-.199.035-.3a7.975 7.975 0 0 0-.503-3.895v.001Zm-8.938 6.07c.036.018.07.037.108.053l.005.004a3.958 3.958 0 0 1-.113-.057Zm8.169-5.665v-.007l.001.008h-.001Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__c)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353v.008l.002.008a7.023 7.023 0 0 1-.242 5.234c-.888 1.907-3.039 3.861-6.406 3.765C3.876 14.67.67 11.97.073 8.435c-.11-.558 0-.84.054-1.294-.075.352-.116.71-.125 1.07v.04a7.755 7.755 0 0 0 15.396 1.312c.013-.1.024-.2.035-.3a7.974 7.974 0 0 0-.503-3.896v.001Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__d)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353v.008l.002.008a7.023 7.023 0 0 1-.242 5.234c-.888 1.907-3.039 3.861-6.406 3.765C3.876 14.67.67 11.97.073 8.435c-.11-.558 0-.84.054-1.294-.075.352-.116.71-.125 1.07v.04a7.755 7.755 0 0 0 15.396 1.312c.013-.1.024-.2.035-.3a7.974 7.974 0 0 0-.503-3.896v.001Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__e)" d="m11.16 6.278.048.036a4.22 4.22 0 0 0-.72-.94c-2.41-2.41-.631-5.226-.332-5.37L10.16 0C8.212 1.14 7.55 3.251 7.49 4.308c.09-.007.18-.014.273-.014a3.914 3.914 0 0 1 3.397 1.984Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__f)" d="M7.767 6.76c-.013.193-.694.859-.933.859-2.204 0-2.563 1.334-2.563 1.334.098 1.123.88 2.048 1.827 2.537.043.022.087.042.13.062.077.034.153.065.228.093.325.115.665.18 1.01.195 3.865.181 4.613-4.622 1.824-6.016a2.677 2.677 0 0 1 1.87.454 3.914 3.914 0 0 0-3.398-1.985c-.092 0-.182.008-.272.014a3.88 3.88 0 0 0-2.135.823c.118.1.252.233.533.51.526.519 1.876 1.056 1.879 1.119v.002Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__g)" d="M7.767 6.76c-.013.193-.694.859-.933.859-2.204 0-2.563 1.334-2.563 1.334.098 1.123.88 2.048 1.827 2.537.043.022.087.042.13.062.077.034.153.065.228.093.325.115.665.18 1.01.195 3.865.181 4.613-4.622 1.824-6.016a2.677 2.677 0 0 1 1.87.454 3.914 3.914 0 0 0-3.398-1.985c-.092 0-.182.008-.272.014a3.88 3.88 0 0 0-2.135.823c.118.1.252.233.533.51.526.519 1.876 1.056 1.879 1.119v.002Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__h)" d="M4.994 4.874c.063.04.115.075.16.106a3.595 3.595 0 0 1-.022-1.895 5.742 5.742 0 0 0-1.866 1.442c.037 0 1.162-.021 1.728.347Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__i)" d="M.07 8.435c.6 3.536 3.804 6.237 7.442 6.339 3.367.095 5.518-1.86 6.406-3.766a7.022 7.022 0 0 0 .241-5.234V5.76l.002.013c.275 1.797-.639 3.536-2.067 4.714l-.004.01c-2.783 2.267-5.446 1.367-5.985 1a4.227 4.227 0 0 1-.113-.056C4.37 10.665 3.7 9.188 3.844 7.92a1.991 1.991 0 0 1-1.837-1.156 2.925 2.925 0 0 1 2.85-.115 3.861 3.861 0 0 0 2.912.115c-.003-.063-1.353-.6-1.879-1.119-.28-.277-.414-.41-.533-.51a2.32 2.32 0 0 0-.2-.152 10.938 10.938 0 0 0-.16-.106c-.565-.368-1.69-.348-1.727-.347h-.004c-.307-.39-.286-1.674-.268-1.942-.091.036-.178.082-.259.137-.271.194-.525.411-.758.65-.266.268-.51.558-.728.867v.001-.001A6.549 6.549 0 0 0 .213 6.59c-.004.016-.28 1.22-.144 1.845h.002Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__j)" d="M10.488 5.374c.283.278.526.595.72.94.043.032.083.065.117.096 1.758 1.62.836 3.911.768 4.073 1.428-1.177 2.34-2.917 2.066-4.714-.877-2.187-2.364-3.069-3.577-4.988A9.425 9.425 0 0 1 10.4.485a2.45 2.45 0 0 1-.085-.16 1.41 1.41 0 0 1-.12-.321.02.02 0 0 0-.013-.007.028.028 0 0 0-.015 0L10.162 0l-.005.003c-.3.142-2.079 2.959.332 5.368l-.001.003Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__k)" d="M11.324 6.41a1.622 1.622 0 0 0-.116-.095l-.048-.035a2.677 2.677 0 0 0-1.87-.454c2.79 1.394 2.04 6.196-1.824 6.016a3.448 3.448 0 0 1-1.01-.195 4.114 4.114 0 0 1-.227-.093c-.044-.02-.088-.04-.13-.062l.005.003c.539.368 3.2 1.267 5.984-1l.004-.01c.07-.162.99-2.453-.768-4.074Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__l)" d="M4.272 8.951s.358-1.333 2.563-1.333c.238 0 .92-.666.932-.859a3.861 3.861 0 0 1-2.911-.114 2.925 2.925 0 0 0-2.851.114 1.991 1.991 0 0 0 1.837 1.156c-.144 1.268.526 2.745 2.149 3.521.036.018.07.036.107.053-.947-.49-1.729-1.414-1.826-2.537Z"/><path fill="url(#browser-mozilla-firefox_x16_svg__m)" d="M14.93 5.368c-.337-.81-1.02-1.686-1.556-1.963.382.74.647 1.533.785 2.353l.002.013c-.877-2.185-2.363-3.067-3.578-4.986a9.425 9.425 0 0 1-.182-.297 2.45 2.45 0 0 1-.086-.16 1.405 1.405 0 0 1-.12-.32.02.02 0 0 0-.013-.007.028.028 0 0 0-.015 0l-.003.002-.006.003.003-.005C8.213 1.141 7.552 3.252 7.492 4.31c.09-.006.18-.014.273-.014a3.913 3.913 0 0 1 3.397 1.984 2.677 2.677 0 0 0-1.87-.454c2.79 1.395 2.04 6.196-1.824 6.016a3.451 3.451 0 0 1-1.01-.194 4.114 4.114 0 0 1-.358-.156l.006.004a3.945 3.945 0 0 1-.113-.057c.036.018.07.037.107.053-.947-.49-1.729-1.414-1.826-2.537 0 0 .358-1.334 2.563-1.334.238 0 .92-.665.932-.858-.003-.063-1.352-.6-1.879-1.118-.28-.277-.414-.41-.532-.511a2.317 2.317 0 0 0-.2-.152 3.595 3.595 0 0 1-.022-1.895 5.742 5.742 0 0 0-1.867 1.443h-.003c-.308-.39-.286-1.675-.268-1.943-.091.037-.178.083-.26.138-.27.193-.524.41-.757.649a6.77 6.77 0 0 0-.725.87A6.549 6.549 0 0 0 .216 6.59l-.01.052c-.016.068-.08.414-.09.489-.06.357-.098.718-.115 1.08v.04a7.755 7.755 0 0 0 15.396 1.312c.013-.1.024-.2.035-.3a7.975 7.975 0 0 0-.503-3.896Zm-.77.398.002.009-.002-.009Z"/></g><defs><radialGradient id="browser-mozilla-firefox_x16_svg__c" cx="0" cy="0" r="1" gradientTransform="translate(13.405 1.8) scale(16.1661)" gradientUnits="userSpaceOnUse"><stop offset=".129" stop-color="#FFBD4F"/><stop offset=".186" stop-color="#FFAC31"/><stop offset=".247" stop-color="#FF9D17"/><stop offset=".283" stop-color="#FF980E"/><stop offset=".403" stop-color="#FF563B"/><stop offset=".467" stop-color="#FF3750"/><stop offset=".71" stop-color="#F5156C"/><stop offset=".782" stop-color="#EB0878"/><stop offset=".86" stop-color="#E50080"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__d" cx="0" cy="0" r="1" gradientTransform="translate(7.403 8.403) scale(16.1661)" gradientUnits="userSpaceOnUse"><stop offset=".3" stop-color="#960E18"/><stop offset=".351" stop-color="#B11927" stop-opacity=".74"/><stop offset=".435" stop-color="#DB293D" stop-opacity=".343"/><stop offset=".497" stop-color="#F5334B" stop-opacity=".094"/><stop offset=".53" stop-color="#FF3750" stop-opacity="0"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__e" cx="0" cy="0" r="1" gradientTransform="translate(9.404 -1.8) scale(11.7104)" gradientUnits="userSpaceOnUse"><stop offset=".132" stop-color="#FFF44F"/><stop offset=".252" stop-color="#FFDC3E"/><stop offset=".506" stop-color="#FF9D12"/><stop offset=".526" stop-color="#FF980E"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__f" cx="0" cy="0" r="1" gradientTransform="translate(5.602 12.605) scale(7.69689)" gradientUnits="userSpaceOnUse"><stop offset=".353" stop-color="#3A8EE6"/><stop offset=".472" stop-color="#5C79F0"/><stop offset=".669" stop-color="#9059FF"/><stop offset="1" stop-color="#C139E6"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__g" cx="0" cy="0" r="1" gradientTransform="matrix(3.96725 -.95916 1.12294 4.64466 8.185 7.015)" gradientUnits="userSpaceOnUse"><stop offset=".206" stop-color="#9059FF" stop-opacity="0"/><stop offset=".278" stop-color="#8C4FF3" stop-opacity=".064"/><stop offset=".747" stop-color="#7716A8" stop-opacity=".45"/><stop offset=".975" stop-color="#6E008B" stop-opacity=".6"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__h" cx="0" cy="0" r="1" gradientTransform="translate(7.203 1.2) scale(5.53808)" gradientUnits="userSpaceOnUse"><stop stop-color="#FFE226"/><stop offset=".121" stop-color="#FFDB27"/><stop offset=".295" stop-color="#FFC82A"/><stop offset=".502" stop-color="#FFA930"/><stop offset=".732" stop-color="#FF7E37"/><stop offset=".792" stop-color="#FF7139"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__i" cx="0" cy="0" r="1" gradientTransform="translate(11.604 -2.4) scale(23.6289)" gradientUnits="userSpaceOnUse"><stop offset=".113" stop-color="#FFF44F"/><stop offset=".456" stop-color="#FF980E"/><stop offset=".622" stop-color="#FF5634"/><stop offset=".716" stop-color="#FF3647"/><stop offset=".904" stop-color="#E31587"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__j" cx="0" cy="0" r="1" gradientTransform="rotate(83.976 5.426 4.81) scale(17.3156 11.3641)" gradientUnits="userSpaceOnUse"><stop stop-color="#FFF44F"/><stop offset=".06" stop-color="#FFE847"/><stop offset=".168" stop-color="#FFC830"/><stop offset=".304" stop-color="#FF980E"/><stop offset=".356" stop-color="#FF8B16"/><stop offset=".455" stop-color="#FF672A"/><stop offset=".57" stop-color="#FF3647"/><stop offset=".737" stop-color="#E31587"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__k" cx="0" cy="0" r="1" gradientTransform="translate(7.203 3.201) scale(14.7495)" gradientUnits="userSpaceOnUse"><stop offset=".137" stop-color="#FFF44F"/><stop offset=".48" stop-color="#FF980E"/><stop offset=".592" stop-color="#FF5634"/><stop offset=".655" stop-color="#FF3647"/><stop offset=".904" stop-color="#E31587"/></radialGradient><radialGradient id="browser-mozilla-firefox_x16_svg__l" cx="0" cy="0" r="1" gradientTransform="matrix(16.144 0 0 16.1441 11.004 4.002)" gradientUnits="userSpaceOnUse"><stop offset=".094" stop-color="#FFF44F"/><stop offset=".231" stop-color="#FFE141"/><stop offset=".509" stop-color="#FFAF1E"/><stop offset=".626" stop-color="#FF980E"/></radialGradient><linearGradient id="browser-mozilla-firefox_x16_svg__b" x1="13.903" x2="1.03" y1="2.478" y2="14.899" gradientUnits="userSpaceOnUse"><stop offset=".048" stop-color="#FFF44F"/><stop offset=".111" stop-color="#FFE847"/><stop offset=".225" stop-color="#FFC830"/><stop offset=".368" stop-color="#FF980E"/><stop offset=".401" stop-color="#FF8B16"/><stop offset=".462" stop-color="#FF672A"/><stop offset=".534" stop-color="#FF3647"/><stop offset=".705" stop-color="#E31587"/></linearGradient><linearGradient id="browser-mozilla-firefox_x16_svg__m" x1="13.747" x2="2.795" y1="2.412" y2="13.366" gradientUnits="userSpaceOnUse"><stop offset=".167" stop-color="#FFF44F" stop-opacity=".8"/><stop offset=".266" stop-color="#FFF44F" stop-opacity=".634"/><stop offset=".489" stop-color="#FFF44F" stop-opacity=".217"/><stop offset=".6" stop-color="#FFF44F" stop-opacity="0"/></linearGradient><clipPath id="browser-mozilla-firefox_x16_svg__a"><path fill="#fff" d="M0 0h15.49v16H0z"/></clipPath></defs>`
};
const cyBrowserSafariX16 = {
  name: "browserSafariX16",
  data: `<path fill="url(#browser-safari_x16_svg__a)" d="M16 8A8 8 0 1 1-.001 8 8 8 0 0 1 16 8Z"/><path fill="#F4F2F3" d="M8 .417a.116.116 0 0 0-.117.117v1.345a.116.116 0 1 0 .234 0V.534A.116.116 0 0 0 8 .417Zm-.763.048h-.024a.116.116 0 0 0-.104.129l.06.563a.116.116 0 1 0 .231-.025L7.341.57a.116.116 0 0 0-.104-.104Zm1.531.001a.116.116 0 0 0-.104.104l-.06.563a.116.116 0 1 0 .233.024l.059-.563a.116.116 0 0 0-.128-.128ZM6.453.579a.116.116 0 0 0-.114.14l.28 1.317a.116.116 0 1 0 .227-.048L6.568.672a.116.116 0 0 0-.115-.093Zm3.1.001a.116.116 0 0 0-.116.093l-.28 1.316a.116.116 0 1 0 .229.048l.28-1.316a.116.116 0 0 0-.114-.14ZM5.704.79a.116.116 0 0 0-.121.152l.175.539a.116.116 0 1 0 .222-.073L5.806.87a.116.116 0 0 0-.1-.08Zm4.59 0a.116.116 0 0 0-.1.08l-.175.539a.116.116 0 1 0 .222.072l.175-.538a.116.116 0 0 0-.121-.153Zm-5.33.27a.116.116 0 0 0-.104.164l.546 1.23a.116.116 0 1 0 .213-.095L5.074 1.13a.116.116 0 0 0-.109-.07Zm6.079.005a.117.117 0 0 0-.109.07l-.548 1.228a.116.116 0 0 0 .06.154c.058.026.127 0 .153-.06l.548-1.228a.116.116 0 0 0-.104-.164Zm-6.765.36a.116.116 0 0 0-.11.175l.284.489a.116.116 0 1 0 .202-.117l-.283-.49a.116.116 0 0 0-.093-.058Zm7.442-.001a.116.116 0 0 0-.093.058l-.283.49a.116.116 0 0 0 .043.16.116.116 0 0 0 .16-.043l.282-.49a.116.116 0 0 0-.109-.175Zm-8.109.416a.117.117 0 0 0-.09.185l.79 1.089a.116.116 0 1 0 .188-.137l-.79-1.089a.116.116 0 0 0-.098-.048Zm8.784.006a.116.116 0 0 0-.098.048l-.791 1.088a.116.116 0 1 0 .189.137l.79-1.088a.116.116 0 0 0-.09-.185Zm-9.38.494a.116.116 0 0 0-.093.195l.379.42a.116.116 0 1 0 .173-.156l-.378-.42a.116.116 0 0 0-.081-.04Zm9.969 0a.117.117 0 0 0-.08.04l-.38.42a.116.116 0 1 0 .173.156l.38-.42a.116.116 0 0 0-.093-.195Zm-10.54.548a.117.117 0 0 0-.072.204l1 .9a.116.116 0 1 0 .156-.174l-1-.9a.116.116 0 0 0-.084-.03Zm11.114.004a.116.116 0 0 0-.084.03l-1 .9a.116.116 0 1 0 .155.173l1-.9a.116.116 0 0 0-.071-.203ZM1.969 3.5a.116.116 0 0 0-.073.211l.459.333a.116.116 0 1 0 .137-.189l-.458-.333A.116.116 0 0 0 1.97 3.5Zm12.064.004a.117.117 0 0 0-.064.023l-.458.332a.116.116 0 1 0 .137.189l.458-.333a.116.116 0 0 0-.073-.21Zm-12.507.648a.116.116 0 0 0-.05.217l1.165.673a.116.116 0 1 0 .117-.202l-1.166-.673a.117.117 0 0 0-.066-.015Zm12.948 0a.115.115 0 0 0-.066.015l-1.166.673a.116.116 0 0 0-.042.16.116.116 0 0 0 .16.042l1.164-.673a.116.116 0 0 0-.05-.217ZM1.19 4.845a.116.116 0 0 0-.05.223l.517.23a.116.116 0 1 0 .095-.212l-.516-.23a.117.117 0 0 0-.046-.01Zm13.622.005a.117.117 0 0 0-.045.01l-.517.23a.116.116 0 1 0 .095.213l.516-.23a.116.116 0 0 0-.05-.223Zm-13.92.72a.116.116 0 0 0-.026.227l1.278.418a.116.116 0 1 0 .072-.222L.937 5.576a.117.117 0 0 0-.046-.005Zm14.219.006a.113.113 0 0 0-.047.005l-1.28.416a.116.116 0 1 0 .073.222l1.28-.416a.116.116 0 0 0-.027-.227ZM.704 6.333a.116.116 0 0 0-.025.23l.553.118a.116.116 0 1 0 .049-.228l-.554-.118a.115.115 0 0 0-.023-.002Zm14.59 0a.144.144 0 0 0-.023.003l-.554.118a.116.116 0 1 0 .049.228l.553-.117a.116.116 0 0 0-.025-.231ZM.564 7.1a.116.116 0 0 0 0 .232l1.337.142a.116.116 0 1 0 .024-.232L.587 7.099a.12.12 0 0 0-.023 0Zm14.873.01h-.023l-1.338.14a.116.116 0 1 0 .024.232l1.338-.14a.116.116 0 0 0 0-.232ZM.541 7.884a.116.116 0 1 0 0 .233h.566a.116.116 0 1 0 0-.233H.541Zm14.352 0a.116.116 0 1 0 0 .233h.566a.116.116 0 1 0 0-.233h-.566Zm-12.97.635H1.9l-1.338.14a.116.116 0 1 0 .024.232l1.338-.14a.116.116 0 0 0 0-.232Zm12.152.009a.116.116 0 0 0 0 .232l1.338.141a.116.116 0 1 0 .024-.232l-1.338-.141h-.024Zm-12.818.788a.12.12 0 0 0-.024.002l-.553.118a.116.116 0 1 0 .048.228l.554-.118a.116.116 0 0 0-.025-.23Zm13.486 0a.116.116 0 0 0-.025.232l.554.117a.116.116 0 0 0 .138-.09.116.116 0 0 0-.09-.138l-.553-.118a.115.115 0 0 0-.024-.002Zm-12.554.46a.113.113 0 0 0-.046.006l-1.28.415a.116.116 0 1 0 .073.222l1.279-.416a.116.116 0 0 0-.026-.227Zm11.62.004a.116.116 0 0 0-.026.227l1.28.417a.116.116 0 1 0 .072-.221l-1.28-.417a.116.116 0 0 0-.045-.006Zm-12.108.907a.116.116 0 0 0-.046.01l-.517.23a.116.116 0 1 0 .095.213l.517-.23a.116.116 0 0 0-.05-.223Zm12.596.005a.116.116 0 0 0-.108.069.116.116 0 0 0 .059.154l.516.23c.06.027.128 0 .154-.059a.116.116 0 0 0-.059-.154l-.516-.23a.116.116 0 0 0-.046-.01Zm-11.59.252a.115.115 0 0 0-.066.016l-1.165.672a.116.116 0 1 0 .116.202l1.166-.672a.116.116 0 0 0-.05-.218Zm10.586 0a.116.116 0 0 0-.05.217l1.165.673a.116.116 0 1 0 .116-.202l-1.165-.672a.116.116 0 0 0-.066-.016Zm-10.876.987a.118.118 0 0 0-.065.023l-.458.332a.116.116 0 1 0 .137.189l.458-.332a.116.116 0 0 0-.072-.212Zm11.163.004a.116.116 0 0 0-.073.211l.459.333a.116.116 0 1 0 .137-.189l-.458-.332a.117.117 0 0 0-.065-.023Zm-10.126.04a.116.116 0 0 0-.084.03l-1 .9a.116.116 0 1 0 .155.173l1-.9a.116.116 0 0 0-.07-.202Zm9.089.004a.116.116 0 0 0-.072.203l1 .9a.116.116 0 1 0 .156-.173l-1-.9a.116.116 0 0 0-.084-.03Zm-8.14.854a.116.116 0 0 0-.098.048l-.792 1.088a.116.116 0 1 0 .19.138l.79-1.088a.116.116 0 0 0-.09-.186Zm7.187.005a.117.117 0 0 0-.09.185l.79 1.09a.116.116 0 1 0 .188-.138l-.79-1.089a.116.116 0 0 0-.098-.048Zm-8.208.168a.117.117 0 0 0-.08.039l-.38.42a.116.116 0 1 0 .174.156l.378-.42a.116.116 0 0 0-.092-.195Zm9.236 0a.116.116 0 0 0-.093.195l.378.421a.116.116 0 1 0 .174-.156l-.379-.42a.116.116 0 0 0-.08-.04Zm-7.11.467a.116.116 0 0 0-.108.07l-.548 1.228a.116.116 0 1 0 .213.095l.548-1.229a.116.116 0 0 0-.104-.164Zm4.976.004a.117.117 0 0 0-.104.164l.546 1.23a.116.116 0 1 0 .213-.096l-.546-1.229a.116.116 0 0 0-.109-.07Zm-5.939.376a.116.116 0 0 0-.092.058l-.283.49a.116.116 0 0 0 .042.16.116.116 0 0 0 .16-.043l.283-.49a.116.116 0 0 0-.11-.175Zm6.91 0a.116.116 0 0 0-.11.175l.283.49a.116.116 0 0 0 .16.043.116.116 0 0 0 .042-.16l-.283-.49a.116.116 0 0 0-.092-.058Zm-4.726.018a.116.116 0 0 0-.115.092l-.28 1.316a.116.116 0 0 0 .09.139.116.116 0 0 0 .139-.09l.28-1.316a.116.116 0 0 0-.114-.141Zm2.538 0a.116.116 0 0 0-.113.14l.278 1.317a.116.116 0 1 0 .228-.048l-.278-1.316a.116.116 0 0 0-.115-.093ZM8 14.005a.116.116 0 0 0-.117.117v1.345a.116.116 0 1 0 .234 0v-1.345A.116.116 0 0 0 8 14.004Zm-2.141.435a.117.117 0 0 0-.101.08l-.175.538a.116.116 0 1 0 .222.073l.175-.539a.116.116 0 0 0-.121-.152Zm4.281 0a.116.116 0 0 0-.121.152l.175.539a.116.116 0 1 0 .222-.072l-.175-.538a.117.117 0 0 0-.1-.08Zm-2.872.3a.116.116 0 0 0-.105.104l-.059.563a.116.116 0 1 0 .232.024l.06-.563a.116.116 0 0 0-.128-.128Zm1.46 0a.117.117 0 0 0-.128.128l.059.564a.116.116 0 1 0 .232-.024l-.06-.563a.116.116 0 0 0-.104-.104Z"/><g filter="url(#browser-safari_x16_svg__b)" opacity=".409"><path fill="#000" d="M13.467 3.334 7.085 7.042l-4.034 6.352 5.902-4.372 4.514-5.688Z"/></g><path fill="#FF5150" d="m8.915 8.958-1.83-1.916 6.489-4.365-4.66 6.28Z"/><path fill="#F1F1F1" d="m8.915 8.958-1.83-1.916-4.659 6.28 6.489-4.364Z"/><path fill="#000" d="m2.426 13.323 6.489-4.365 4.659-6.28L2.426 13.322Z" opacity=".243"/><defs><radialGradient id="browser-safari_x16_svg__a" cx="0" cy="0" r="1" gradientTransform="translate(8.036 6.834) scale(8.68021)" gradientUnits="userSpaceOnUse"><stop stop-color="#06C2E7"/><stop offset=".25" stop-color="#0DB8EC"/><stop offset=".5" stop-color="#12AEF1"/><stop offset=".75" stop-color="#1F86F9"/><stop offset="1" stop-color="#107DDD"/></radialGradient><filter id="browser-safari_x16_svg__b" width="11.763" height="11.406" x="2.377" y="2.661" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_4665_8423" stdDeviation=".337"/></filter></defs>`
};
const cyBrowserWebkitX16 = {
  name: "browserWebkitX16",
  data: `<path fill="#fff" d="m6.34 12.735-4.352-3.42a1.646 1.646 0 0 1-.682-1.294c0-.484.243-.948.682-1.292L6.34 3.302A2.702 2.702 0 0 1 8 2.766c.628 0 1.212.194 1.66.539l4.352 3.42a1.647 1.647 0 0 1 .682 1.294c0 .49-.243.95-.682 1.293l-4.353 3.42A2.683 2.683 0 0 1 8 13.274c-.628 0-1.212-.189-1.66-.539Z"/><path fill="#fff" d="M6.34 10.58 1.989 7.16a1.646 1.646 0 0 1-.682-1.293c0-.485.243-.948.682-1.293L6.34 1.147A2.702 2.702 0 0 1 8 .611c.628 0 1.212.194 1.66.54l4.352 3.42a1.647 1.647 0 0 1 .682 1.293c0 .49-.243.95-.682 1.293l-4.353 3.42c-.477.361-1.061.552-1.659.542-.628 0-1.212-.188-1.66-.538Z"/><path fill="#FF9D00" d="M14.007 8.835a1.59 1.59 0 0 1 0 2.62L9.67 14.86a2.856 2.856 0 0 1-3.34 0l-4.337-3.399a1.59 1.59 0 0 1 .003-2.623l4.337-3.405c.92-.717 2.419-.717 3.34 0l4.334 3.402Z"/><path fill="#FC0" d="m6.34 12.735-4.352-3.42a1.646 1.646 0 0 1-.682-1.294c0-.484.243-.948.682-1.292L6.34 3.302A2.702 2.702 0 0 1 8 2.766c.628 0 1.212.194 1.66.539l4.352 3.42a1.647 1.647 0 0 1 .682 1.294c0 .49-.243.95-.682 1.293l-4.353 3.42A2.683 2.683 0 0 1 8 13.274c-.628 0-1.212-.189-1.66-.539Z"/><path fill="url(#browser-webkit_x16_svg__a)" d="M6.34 10.58 1.989 7.16a1.646 1.646 0 0 1-.682-1.293c0-.485.243-.948.682-1.293L6.34 1.147A2.702 2.702 0 0 1 8 .611c.628 0 1.212.194 1.66.54l4.352 3.42a1.647 1.647 0 0 1 .682 1.293c0 .49-.243.95-.682 1.293l-4.353 3.42c-.477.361-1.061.552-1.659.542-.628 0-1.212-.188-1.66-.538Z"/><path fill="#fff" d="M8.016 9.145c2.222 0 4.024-1.474 4.024-3.292 0-1.813-1.804-3.294-4.024-3.294-2.225 0-4.03 1.481-4.03 3.294 0 1.818 1.805 3.292 4.027 3.292h.003Zm0 .34c-2.451 0-4.444-1.625-4.444-3.632 0-2.004 1.993-3.628 4.444-3.628 2.451 0 4.44 1.627 4.44 3.628 0 2.007-1.989 3.631-4.44 3.631Z"/><path fill="#8CC8F6" d="M8.312 7.251c.221-.027.44-.092.639-.188l1.266.522-.663-.997a1.158 1.158 0 0 0 0-1.47l.663-.997-1.193.493-.035.525a.889.889 0 0 1-.033 1.45 1.385 1.385 0 0 1-.43.228l-.216.431.002.003Zm-.592-2.79a2.23 2.23 0 0 0-.647.188l-1.266-.523.663.997a1.161 1.161 0 0 0 0 1.468l-.663.997 1.223-.504.027-.493a.889.889 0 0 1 .008-1.47 1.58 1.58 0 0 1 .431-.23l.216-.43h.008Z"/><path fill="#fff" fill-rule="evenodd" d="m7.407 5.745-.17 2.99 1.366-2.774.194-2.982-1.39 2.766ZM7.39 8.162l1.093-2.22-.959-.175-.134 2.397v-.002Z" clip-rule="evenodd"/><defs><linearGradient id="browser-webkit_x16_svg__a" x1="8" x2="8" y1=".611" y2="11.12" gradientUnits="userSpaceOnUse"><stop stop-color="#34AADC"/><stop offset="1" stop-color="#007AFF"/></linearGradient></defs>`
};
const cyCheckmarkX16 = {
  name: "checkmarkX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8.5 7 12l5-8" class="icon-dark"/>`
};
const cyCheckmarkOutlineX16 = {
  name: "checkmarkOutlineX16",
  data: `<path stroke="currentColor" stroke-width="2" d="M12.95 12.95a7 7 0 1 1-9.9-9.9 7 7 0 0 1 9.9 9.9Z" class="icon-dark"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 8 1.5 2L10 6" class="icon-dark"/>`
};
const cyCheckmarkSmallX16 = {
  name: "checkmarkSmallX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 8.5 7.5 11 11 5" class="icon-dark"/>`
};
const cyCheckmarkSolidX16 = {
  name: "checkmarkSolidX16",
  data: `<path fill="currentColor" d="M13.657 13.657A8 8 0 1 1 2.343 2.343a8 8 0 0 1 11.314 11.314Z" class="icon-dark"/><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m5 8.5 2 2 4-5" class="icon-light"/>`
};
const cyCheckmarkSolidX24 = {
  name: "checkmarkSolidX24",
  data: `<path fill="currentColor" d="M20.485 20.485c-4.686 4.687-12.284 4.687-16.97 0-4.687-4.686-4.687-12.284 0-16.97 4.686-4.687 12.284-4.687 16.97 0 4.687 4.686 4.687 12.284 0 16.97Z" class="icon-dark"/><path stroke="#D0D2E0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.999 9 11 15l-2.999-3" class="icon-light"/>`
};
const cyChevronDownDoubleX16 = {
  name: "chevronDownDoubleX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m5 9 3 3 3-3M5 4l3 3 3-3" class="icon-dark"/>`
};
const cyChevronDownLargeX16 = {
  name: "chevronDownLargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m2 5 6 6 6-6" class="icon-dark"/>`
};
const cyChevronDownMediumX16 = {
  name: "chevronDownMediumX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m4 6 4 4 4-4" class="icon-dark"/>`
};
const cyChevronDownSmallX16 = {
  name: "chevronDownSmallX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m4 6 4 4 4-4" class="icon-dark"/>`
};
const cyChevronDownSmallX8 = {
  name: "chevronDownSmallX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 2.5 3 3 3-3" class="icon-dark"/>`
};
const cyChevronLeftDoubleX16 = {
  name: "chevronLeftDoubleX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 11 4 8l3-3m5 6L9 8l3-3" class="icon-dark"/>`
};
const cyChevronLeftLargeX16 = {
  name: "chevronLeftLargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 14 5 8l6-6" class="icon-dark"/>`
};
const cyChevronLeftSmallX16 = {
  name: "chevronLeftSmallX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 4 6 8l4 4" class="icon-dark"/>`
};
const cyChevronLeftSmallX8 = {
  name: "chevronLeftSmallX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m5.5 1-3 3 3 3" class="icon-dark"/>`
};
const cyChevronRightDoubleX16 = {
  name: "chevronRightDoubleX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m9 11 3-3-3-3m-5 6 3-3-3-3" class="icon-dark"/>`
};
const cyChevronRightLargeX16 = {
  name: "chevronRightLargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m5 14 6-6-6-6" class="icon-dark"/>`
};
const cyChevronRightSmallX16 = {
  name: "chevronRightSmallX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 12 4-4-4-4" class="icon-dark"/>`
};
const cyChevronRightSmallX8 = {
  name: "chevronRightSmallX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m2.5 1 3 3-3 3" class="icon-dark"/>`
};
const cyChevronUpDoubleX16 = {
  name: "chevronUpDoubleX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m5 7 3-3 3 3m-6 5 3-3 3 3" class="icon-dark"/>`
};
const cyChevronUpLargeX16 = {
  name: "chevronUpLargeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m2 11 6-6 6 6" class="icon-dark"/>`
};
const cyChevronUpSmallX16 = {
  name: "chevronUpSmallX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10 8 6l-4 4" class="icon-dark"/>`
};
const cyChevronUpSmallX8 = {
  name: "chevronUpSmallX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 5.5 3-3 3 3" class="icon-dark"/>`
};
const cyCurrencyEurX16 = {
  name: "currencyEurX16",
  data: `<path fill="currentColor" d="m6.524 13.214.565-.825-.565.825Zm6.145.33a1 1 0 1 0-1.338-1.486l1.338 1.485Zm-1.338-9.602a1 1 0 1 0 1.338-1.485l-1.338 1.485ZM2.5 5.501a1 1 0 0 0 0 2v-2Zm7.695 2a1 1 0 1 0 0-2v2ZM2.5 8.5a1 1 0 0 0 0 2v-2Zm6.054 2a1 1 0 1 0 0-2v2ZM9 13a3.356 3.356 0 0 1-1.91-.611l-1.132 1.65A5.355 5.355 0 0 0 9 15v-2Zm-1.91-.611C5.884 11.564 5 9.943 5 8H3c0 2.522 1.147 4.797 2.958 6.039l1.131-1.65ZM5 8c0-2.94 1.954-5 4-5V1C5.523 1 3 4.312 3 8h2Zm6.33 4.058C10.657 12.665 9.85 13 9 13v2c1.401 0 2.672-.558 3.67-1.457l-1.34-1.485ZM9 3c.85 0 1.656.335 2.33.942l1.34-1.485C11.671 1.557 10.4 1 9 1v2ZM2.5 7.5h7.695v-2H2.5v2Zm0 3h6.054v-2H2.5v2Z" class="icon-dark"/>`
};
const cyCurrencyGbpX16 = {
  name: "currencyGbpX16",
  data: `<path fill="currentColor" d="M10 5a1 1 0 1 0 2 0h-2Zm-6 9-.79-.614a1 1 0 0 0 1.345 1.446L4 14Zm8.555.832a1 1 0 0 0-1.11-1.664l1.11 1.664ZM4 8a1 1 0 0 0 0 2V8Zm5 2a1 1 0 0 0 0-2v2ZM6 5a2 2 0 0 1 2-2V1a4 4 0 0 0-4 4h2Zm2-2a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2ZM4 14c.555.832.554.832.554.833h-.001l-.002.002-.003.002-.005.003-.004.002.014-.008c.02-.011.06-.032.12-.058.117-.05.309-.12.568-.167.51-.093 1.319-.108 2.388.32l.742-1.857c-1.431-.573-2.622-.588-3.487-.43a4.601 4.601 0 0 0-1.01.3 3.406 3.406 0 0 0-.42.22l-.004.003-.003.002c-.001 0-.002 0 .553.833Zm3.629.928c1.431.573 2.622.588 3.487.43a4.603 4.603 0 0 0 1.01-.3 3.4 3.4 0 0 0 .408-.212l.011-.008.005-.003.003-.002c.001 0 .002 0-.553-.833-.555-.832-.554-.832-.554-.833h.001l.002-.002.003-.002a.265.265 0 0 1 .005-.003l.004-.002-.014.008c-.02.011-.06.032-.12.058-.117.05-.309.12-.568.167-.51.093-1.319.108-2.388-.32l-.742 1.857Zm-2.84-.314c1.77-2.276 2.2-4.085 2.048-5.707l-1.991.186c.095 1.022-.115 2.338-1.635 4.293l1.578 1.228Zm2.048-5.707c-.08-.863-.325-1.632-.51-2.254C6.13 5.996 6 5.498 6 5H4c0 .827.22 1.584.41 2.223.2.674.377 1.242.436 1.87l1.99-.186ZM4 10h1.841V8H4v2Zm1.841 0H9V8H5.841v2Z" class="icon-dark"/>`
};
const cyCurrencyInrX16 = {
  name: "currencyInrX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.5 2H8m3 3a3 3 0 0 1-3 3H3.5l6.5 6m1-9a3 3 0 0 0-3-3m3 3H3.5M11 5h1.5M8 2h4.5" class="icon-dark"/>`
};
const cyCurrencyRubX16 = {
  name: "currencyRubX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 8h5a3 3 0 1 0 0-6H5v6Zm0 0v6m0-6H3m0 3h6" class="icon-dark"/>`
};
const cyCurrencyUsdX16 = {
  name: "currencyUsdX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 3h3a1 1 0 0 1 1 1v.5M8 3H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3m0-5V1m0 2v5m0 5h3a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1H8m0 5H5a1 1 0 0 1-1-1v-.5M8 13v2m0-2V8" class="icon-dark"/>`
};
const cyDeviceLaptopX24 = {
  name: "deviceLaptopX24",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M3 17H2v.1A2.9 2.9 0 0 0 4.9 20h14.2a2.9 2.9 0 0 0 2.9-2.9V17H3Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 17H3m18 0h1v.1m-1-.1V6M3 17H2v.1m1-.1V6m2-2h14M5 4a2 2 0 0 0-2 2m2-2v0a2 2 0 0 0-2 2v0m16-2a2 2 0 0 1 2 2m-2-2v0a2 2 0 0 1 2 2v0m1 11.1a2.9 2.9 0 0 1-2.9 2.9m2.9-2.9v0a2.9 2.9 0 0 1-2.9 2.9v0m0 0H4.9m0 0A2.9 2.9 0 0 1 2 17.1M4.9 20v0A2.9 2.9 0 0 1 2 17.1v0" class="icon-dark"/><circle cx="12" cy="7" r="1" fill="currentColor" class="icon-dark"/>`
};
const cyDeviceSmartphoneX16 = {
  name: "deviceSmartphoneX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.5 1H11a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1.5m3 0v.5A.5.5 0 0 1 9 2H7a.5.5 0 0 1-.5-.5V1m3 0h-3M8 12.5v.01" class="icon-dark"/>`
};
const cyDeviceSmartphoneX24 = {
  name: "deviceSmartphoneX24",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M15 1h1a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3V4a3 3 0 0 1 3-3h1m6 0v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1V1m6 0H9m3 19.01V20" class="icon-dark"/>`
};
const cyDocumentAddedX16 = {
  name: "documentAddedX16",
  data: `<path fill="#D0D2E0" d="M2 13V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m6 10 .5-1m3.5 1-.5-1m-3 0L8 6l1.5 3m-3 0h3M14 4.828V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828Z" class="icon-dark"/>`
};
const cyDocumentAddedSquarePlusX16 = {
  name: "documentAddedSquarePlusX16",
  data: `<path fill="#E4FBF2" d="M2 12V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="#1FA971" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 6v4m2-2H6m6-6H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z" class="icon-dark"/>`
};
const cyDocumentAddedSquarePlusX24 = {
  name: "documentAddedSquarePlusX24",
  data: `<path fill="#E4FBF2" d="M3 18V6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3Z" class="icon-light"/><path stroke="#1FA971" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v8m4-4H8m10-9H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3Z" class="icon-dark"/>`
};
const cyDocumentBlankX16 = {
  name: "documentBlankX16",
  data: `<path fill="#D0D2E0" d="M2 14V2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 8h3M5 5h6m-6 6h5m3-10H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1Z" class="icon-dark"/>`
};
const cyDocumentBlankX24 = {
  name: "documentBlankX24",
  data: `<path fill="#D0D2E0" d="M4 20V4a2 2 0 0 1 2-2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8m-6-6 6 6m-6-6v6h6" class="icon-dark"/>`
};
const cyDocumentBlankX48 = {
  name: "documentBlankX48",
  data: `<path fill="#D0D2E0" d="M10 39V9a1 1 0 0 1 1-1h26a1 1 0 0 1 1 1v30a1 1 0 0 1-1 1H11a1 1 0 0 1-1-1Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 24h7m-7-6.857h14M17 30.857h11.667M37 8H11a1 1 0 0 0-1 1v30a1 1 0 0 0 1 1h26a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1Z" class="icon-dark"/>`
};
const cyDocumentCodeX24 = {
  name: "documentCodeX24",
  data: `<path fill="#D0D2E0" d="M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z" class="icon-light"/><path fill="currentColor" d="M9 14a1 1 0 1 0 0 2v-2Zm6 2a1 1 0 1 0 0-2v2Zm-6 3h1v-2H9v2Zm-1-2a1 1 0 1 0 0 2v-2Zm5-6h-1v2h1v-2Zm3 2a1 1 0 1 0 0-2v2Zm-6-2a1 1 0 1 0 0 2v-2Zm.01 2h1v-2h-1v2ZM9 8a1 1 0 0 0 0 2V8Zm3 2h1V8h-1v2Zm3-2h-1v2h1V8Zm.01 2a1 1 0 1 0 0-2v2ZM14 7a1 1 0 1 0 0-2v2Zm-2-2h-1v2h1V5ZM8 5a1 1 0 0 0 0 2V5Zm1 2h1V5H9v2Zm3 10h-1v2h1v-2Zm1.01 2a1 1 0 1 0 0-2v2ZM6 3h12V1H6v2Zm12 18H6v2h12v-2Zm1-17v16h2V4h-2ZM5 20V4H3v16h2Zm4-4h6v-2H9v2Zm0 1H8v2h1v-2Zm4-4h3v-2h-3v2Zm-3 0h.01v-2H10v2Zm-1-3h3V8H9v2Zm6 0h.01V8H15v2Zm-1-5h-2v2h2V5ZM8 7h1V5H8v2Zm4 12h1.01v-2H12v2Zm-6 2a1 1 0 0 1-1-1H3a3 3 0 0 0 3 3v-2Zm12 2a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2Zm0-20a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2ZM6 1a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V1Z" class="icon-dark"/>`
};
const cyDocumentCodeX48 = {
  name: "documentCodeX48",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M32 5.18V13h7.82a2 2 0 0 0-.406-.586l-6.828-6.828A1.999 1.999 0 0 0 32 5.18Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m20 21-3 3 3 3m8-6 3 3-3 3m-5.5 2.5 3-11M32 5.18a2 2 0 0 0-.828-.18H9a1 1 0 0 0-1 1v36a1 1 0 0 0 1 1h30a1 1 0 0 0 1-1V13.828a2 2 0 0 0-.18-.828M32 5.18c.216.098.415.235.586.406l6.828 6.828a2 2 0 0 1 .406.586M32 5.18V13h7.82" class="icon-dark"/><path fill="#A3E7CB" d="M43 40a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" class="icon-light-secondary"/><path stroke="#00814D" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M37 38v2m0 2v-2m0 0h2-4m8 0a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" class="icon-dark-secondary"/>`
};
const cyDocumentDeletedX16 = {
  name: "documentDeletedX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 13V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyDocumentDownloadX16 = {
  name: "documentDownloadX16",
  data: `<path fill="#D0D2E0" d="M2 13V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5v6m0 0 2-2m-2 2L6 9m8-4.172V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828Z" class="icon-dark"/>`
};
const cyDocumentDownloadX24 = {
  name: "documentDownloadX24",
  data: `<path fill="#D0D2E0" d="M4 20V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 16V8m0 8 3-3m-3 3-3-3m11-3.757V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243Z" class="icon-dark"/>`
};
const cyDocumentMinusX16 = {
  name: "documentMinusX16",
  data: `<path fill="#D0D2E0" d="M4 15a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828V13a2 2 0 0 1-2 2H4Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 8h4m4-3.172V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828Z" class="icon-dark"/>`
};
const cyDocumentMinusX24 = {
  name: "documentMinusX24",
  data: `<path fill="#D0D2E0" d="M4 20V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12H9m11-2.757V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243Z" class="icon-dark"/>`
};
const cyDocumentModifiedX16 = {
  name: "documentModifiedX16",
  data: `<path fill="#D0D2E0" d="M2 13V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m5 10 1-4 2 3 2-3 1 4m3-5.172V13a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h6.172a2 2 0 0 1 1.414.586l1.828 1.828A2 2 0 0 1 14 4.828Z" class="icon-dark"/>`
};
const cyDocumentModifiedSquareDotX16 = {
  name: "documentModifiedSquareDotX16",
  data: `<path fill="#F5F4D7" d="M9 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-light"/><path fill="#F5F4D7" fill-rule="evenodd" d="M4 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4Zm4 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-light" clip-rule="evenodd"/><path stroke="#DB7903" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path stroke="#DB7903" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4Zm4 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyDocumentModifiedSquareDotX24 = {
  name: "documentModifiedSquareDotX24",
  data: `<path fill="#DB7903" d="M14 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-dark"/><path fill="#F5F4D7" fill-rule="evenodd" d="M6 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3H6Zm6 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" class="icon-light" clip-rule="evenodd"/><path stroke="#DB7903" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-dark"/><path stroke="#DB7903" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3H6Zm6 11a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyDocumentPlusX16 = {
  name: "documentPlusX16",
  data: `<path fill="#D0D2E0" d="M3 15a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 8h4m-2 2V6m5-5H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1Z" class="icon-dark"/>`
};
const cyDocumentPlusX24 = {
  name: "documentPlusX24",
  data: `<path fill="#D0D2E0" d="M4 20V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v-3m0-3v3m0 0h3m-3 0H9m11-2.757V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243Z" class="icon-dark"/>`
};
const cyDocumentPlusMinusX16 = {
  name: "documentPlusMinusX16",
  data: `<path fill="#D0D2E0" d="M3 15a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 6.5h4m-2 2v-4m-2 7h4M13 1H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1Z" class="icon-dark"/>`
};
const cyDocumentPlusMinusX24 = {
  name: "documentPlusMinusX24",
  data: `<path fill="#D0D2E0" d="M4 20V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 13v-3m0-3v3m0 0h3m-3 0H9m0 7h6m5-7.757V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243Z" class="icon-dark"/>`
};
const cyDocumentScriptX24 = {
  name: "documentScriptX24",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 1h13a3 3 0 0 1 3 3v15M4 1H3a2 2 0 0 0-2 2v0a2 2 0 0 0 2 2h1m0-4v4m7 1h5m-5 4h5m-5 4h5M4 5v15a3 3 0 0 0 3 3v0m13-4h1a2 2 0 0 1 2 2v0a2 2 0 0 1-2 2H7m13-4H7v0a2.828 2.828 0 0 1 0 4v0" class="icon-dark"/><path fill="currentColor" d="M9 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyDocumentSheetX24 = {
  name: "documentSheetX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M10 1a1 1 0 0 0-.707.293l-6 6A1 1 0 0 0 3 8v12a3 3 0 0 0 3 3h1a1 1 0 0 0 0-2H6a1 1 0 0 1-1-1V9h5a1 1 0 0 0 1-1V3h7a1 1 0 0 1 1 1v5a1 1 0 0 0 2 0V4a3 3 0 0 0-3-3h-8ZM9 7H6.414L9 4.414V7Zm2 5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-8a1 1 0 0 0-1-1H11Zm1 4v-2h2v2h-2Zm4 0v-2h4v2h-4Zm0 4v-2h4v2h-4Zm-2-2v2h-2v-2h2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyDocumentStarX16 = {
  name: "documentStarX16",
  data: `<path fill="#D0D2E0" d="M3 15a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m8 5.75.001 2.248m0 0 2.139-.693M8 7.998 9.323 9.82M8 7.998 6.677 9.82m1.324-1.822-2.14-.693M13 1H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1Z" class="icon-dark"/>`
};
const cyDocumentStarX24 = {
  name: "documentStarX24",
  data: `<path fill="#D0D2E0" d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243V20a2 2 0 0 1-2 2H6Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8.844v3.16m0 0 3.002-.98m-3.002.98 1.855 2.55M12 12.003l-1.855 2.55M12 12.003l-3.002-.98M20 9.244V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h6.757a3 3 0 0 1 2.122.879L19.12 7.12A3 3 0 0 1 20 9.243Z" class="icon-dark"/>`
};
const cyDocumentTextX16 = {
  name: "documentTextX16",
  data: `<path fill="#D0D2E0" d="M2 14V2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 8h3M5 5h6m-6 6h5m3-10H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1Z" class="icon-dark"/>`
};
const cyDotOutlineLargeX8 = {
  name: "dotOutlineLargeX8",
  data: `<circle cx="4" cy="4" r="3.5" fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" class="icon-light-fill icon-dark-stroke"/>`
};
const cyDotOutlineSmallX8 = {
  name: "dotOutlineSmallX8",
  data: `<circle cx="4" cy="4" r="2.5" fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" class="icon-light-fill icon-dark-stroke"/>`
};
const cyFileChangesAddedX24 = {
  name: "fileChangesAddedX24",
  data: `<path fill="#C2F1DE" d="M0 12C0 5.373 5.373 0 12 0s12 5.373 12 12-5.373 12-12 12S0 18.627 0 12Z"/><path stroke="#00814D" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.999 9 11 15l-2.999-3"/>`
};
const cyFileChangesErrorX24 = {
  name: "fileChangesErrorX24",
  data: `<path fill="#FAD9DF" d="M0 12C0 5.373 5.373 0 12 0s12 5.373 12 12-5.373 12-12 12S0 18.627 0 12Z"/><path stroke="#C62B49" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m15 9-3 3M9 9l3 3m0 0-3 3m3-3 3 3"/>`
};
const cyFileChangesSkippedX24 = {
  name: "fileChangesSkippedX24",
  data: `<path fill="#E1E3ED" d="M0 12C0 5.373 5.373 0 12 0s12 5.373 12 12-5.373 12-12 12S0 18.627 0 12Z"/><path stroke="#9095AD" stroke-width="2" d="M8.464 15.536a5 5 0 1 0 7.072-7.072m-7.072 7.072a5 5 0 1 1 7.072-7.072m-7.072 7.072 7.072-7.072"/>`
};
const cyFileChangesWarningX24 = {
  name: "fileChangesWarningX24",
  data: `<path fill="#F3ECB3" d="M0 12C0 5.373 5.373 0 12 0s12 5.373 12 12-5.373 12-12 12S0 18.627 0 12Z"/><path stroke="#BD5800" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 7v7m0 2.99V17"/>`
};
const cyGeneral1XX16 = {
  name: "general1XX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m9 4 6 8m-6 0 6-8M5 12V4H2.5L1 5.5" class="icon-dark"/>`
};
const cyGeneralChatBubbleX16 = {
  name: "generalChatBubbleX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M13 3H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2v3l5-3h3a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyGeneralClipboardX16 = {
  name: "generalClipboardX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.5 2.585A1.5 1.5 0 0 0 2.5 4v9.5A1.5 1.5 0 0 0 4 15h8a1.5 1.5 0 0 0 1.5-1.5V4a1.5 1.5 0 0 0-1-1.415M7 4h2a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1Z" class="icon-dark"/>`
};
const cyGeneralCommandKeyX16 = {
  name: "generalCommandKeyX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M5 5v6m0-6h6M5 5V3a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0a2 2 0 0 0 2 2h2Zm0 6h6m-6 0v2a2 2 0 0 1-2 2v0a2 2 0 0 1-2-2v0a2 2 0 0 1 2-2h2Zm6 0V5m0 6h2a2 2 0 0 1 2 2v0a2 2 0 0 1-2 2v0a2 2 0 0 1-2-2v-2Zm0-6V3a2 2 0 0 1 2-2v0a2 2 0 0 1 2 2v0a2 2 0 0 1-2 2h-2Z" class="icon-dark"/>`
};
const cyGeneralCrosshairsX16 = {
  name: "generalCrosshairsX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M8 0a1 1 0 0 1 1 1v.07A7.004 7.004 0 0 1 14.93 7H15a1 1 0 1 1 0 2h-.07A7.004 7.004 0 0 1 9 14.93V15a1 1 0 1 1-2 0v-.07A7.004 7.004 0 0 1 1.07 9H1a1 1 0 0 1 0-2h.07A7.005 7.005 0 0 1 7 1.07V1a1 1 0 0 1 1-1ZM7 3.1A5.006 5.006 0 0 0 3.1 7H4a1 1 0 0 1 0 2h-.9A5.006 5.006 0 0 0 7 12.9V12a1 1 0 1 1 2 0v.9A5.006 5.006 0 0 0 12.9 9H12a1 1 0 1 1 0-2h.9A5.006 5.006 0 0 0 9 3.1V4a1 1 0 0 1-2 0v-.9Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M9 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0Z" class="icon-dark"/>`
};
const cyGeneralEarthX16 = {
  name: "generalEarthX16",
  data: `<path fill="#D0D2E0" d="M6.825 6.844c.384.53-.018.801-.527 1.144-.464.312-1.018.685-1.145 1.371-.145.785.128 1.563 1.175 2.079.238.117.181 1.293.13 2.358-.018.372-.035.73-.039 1.025l.186.04c2.044-.856 3.464-2.082 4.192-3.72.422-1.157-.406-2.5-1.313-2.954-.453-1.937 1.625-1.484 2.188-1.343.167 0 .122-.193.054-.488-.11-.477-.28-1.222.29-1.84.424-.461.998-.993 1.204-1.18A6.983 6.983 0 0 0 8 1c-.816 0-1.6.14-2.327.396-1.27 3.39-.613 3.948.902 5.235l.25.213Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M6.605 14.861a7.114 7.114 0 0 1-.186-.04c.004-.295.021-.653.04-1.025.05-1.065.107-2.241-.13-2.358-1.048-.516-1.32-1.294-1.176-2.079.127-.686.68-1.059 1.145-1.371.51-.343.91-.613.527-1.144l-.25-.213C5.06 5.344 4.402 4.786 5.673 1.396A6.989 6.989 0 0 1 8 1c2.074 0 3.938.902 5.22 2.336-.206.188-.78.719-1.204 1.18-.57.618-.4 1.363-.29 1.84.068.295.113.488-.054.488-.563-.14-2.64-.594-2.188 1.343.907.454 1.735 1.797 1.313 2.954-.728 1.638-2.148 2.864-4.192 3.72Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-width="2" d="M5.673 1.396a7.003 7.003 0 0 0 .746 13.425M5.673 1.396A6.989 6.989 0 0 1 8 1c2.074 0 3.938.902 5.22 2.336m-7.547-1.94c-1.27 3.39-.613 3.948.902 5.235l.25.213c.384.53-.018.801-.527 1.144-.464.312-1.018.685-1.145 1.371-.145.785.128 1.563 1.175 2.079.238.117.181 1.293.13 2.358-.018.372-.035.73-.039 1.025m6.8-11.485c-.205.188-.779.719-1.203 1.18-.57.618-.4 1.363-.29 1.84.068.295.113.488-.054.488-.563-.14-2.64-.594-2.188 1.343.907.454 1.735 1.797 1.313 2.954-.728 1.638-2.148 2.864-4.192 3.72M13.22 3.336A7 7 0 0 1 6.606 14.86m0 0a7.114 7.114 0 0 1-.187-.04" class="icon-dark"/>`
};
const cyGeneralEyeClosedX16 = {
  name: "generalEyeClosedX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M10.704 2.468A7.843 7.843 0 0 0 8 2C5.128 2 3.128 3.447 1.882 4.831a10.868 10.868 0 0 0-1.69 2.528 6.552 6.552 0 0 0-.11.242l-.006.018-.003.006v.002H.071a1.002 1.002 0 0 0 0 .744v.002l.001.002.003.006.007.018a4.2 4.2 0 0 0 .108.242 10.869 10.869 0 0 0 1.748 2.591l1.416-1.416A8.874 8.874 0 0 1 2.105 8a8.868 8.868 0 0 1 1.264-1.831C4.371 5.053 5.871 4 8 4c.379 0 .737.033 1.077.094l1.627-1.626ZM8.166 5.005a3 3 0 0 0-3.162 3.162l3.162-3.162Zm-.334 5.99 3.162-3.162a3 3 0 0 1-3.162 3.162Zm-.91.91c.34.062.698.095 1.077.095 2.128 0 3.628-1.053 4.632-2.169A8.87 8.87 0 0 0 13.895 8a8.872 8.872 0 0 0-1.25-1.816l1.416-1.416c.02.02.038.042.057.063a10.869 10.869 0 0 1 1.69 2.528 6.627 6.627 0 0 1 .11.242l.006.018.003.006.001.003L15 8l.928.372-.001.003-.003.006-.007.018a3.777 3.777 0 0 1-.108.242 10.87 10.87 0 0 1-1.69 2.528C12.871 12.554 10.871 14 8 14a7.843 7.843 0 0 1-2.703-.468l1.626-1.627Zm9.005-3.533L15 8l.928-.372c.095.238.095.506 0 .744Zm-15.857 0L1 8l-.928.371ZM1 8l-.928-.372L1 8Z" class="icon-dark" clip-rule="evenodd"/><path stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" d="m2.5 13.5 11-11"/>`
};
const cyGeneralEyeOpenX16 = {
  name: "generalEyeOpenX16",
  data: `<path fill="#D0D2E0" d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="m1 8-.928-.371a1 1 0 0 0 0 .742L1 8Zm14 0 .928.371a1 1 0 0 0 0-.742L15 8ZM1 8l.928.372v.002a.708.708 0 0 1 .013-.033 7.584 7.584 0 0 1 .32-.63c.239-.422.605-.984 1.107-1.542C4.372 5.053 5.872 4 8 4V2C5.128 2 3.128 3.447 1.882 4.831a10.867 10.867 0 0 0-1.69 2.528 6.554 6.554 0 0 0-.119.266v.002H.071c0 .001 0 .002.928.373Zm7-4c2.128 0 3.628 1.053 4.632 2.169A8.871 8.871 0 0 1 14 8.212l.059.13.012.028.002.004v-.001h-.001c0-.001 0-.002.928-.373l.928-.372v-.001l-.001-.002-.002-.006a1.499 1.499 0 0 1-.031-.073 9.567 9.567 0 0 0-.415-.82 10.868 10.868 0 0 0-1.36-1.895C12.871 3.447 10.871 2 8 2v2Zm7 4-.928-.372v-.002l-.001.004-.012.029a7.611 7.611 0 0 1-.32.63c-.239.422-.605.984-1.107 1.542C11.628 10.947 10.128 12 8 12v2c2.872 0 4.872-1.447 6.118-2.831a10.869 10.869 0 0 0 1.69-2.528 6.682 6.682 0 0 0 .117-.26l.002-.006v-.002h.001c0-.001 0-.002-.928-.373Zm-7 4c-2.128 0-3.628-1.053-4.632-2.169A8.868 8.868 0 0 1 2 7.788a4.57 4.57 0 0 1-.073-.162v.001h.001c0 .001 0 .002-.928.373l-.928.372v.001l.001.002a2.09 2.09 0 0 0 .033.079 9.584 9.584 0 0 0 .414.82c.293.515.74 1.203 1.362 1.895C3.128 12.553 5.128 14 8 14v-2Zm1-4a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3H9ZM8 9a1 1 0 0 1-1-1H5a3 3 0 0 0 3 3V9ZM7 8a1 1 0 0 1 1-1V5a3 3 0 0 0-3 3h2Zm1-1a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2Z" class="icon-dark"/>`
};
const cyGeneralGlobeX16 = {
  name: "generalGlobeX16",
  data: `<path fill="#D0D2E0" d="M10.5 8c0-1.833-.252-3.502-.664-4.75C9.38 1.866 8.726 1 8 1s-1.38.866-1.836 2.25C5.752 4.498 5.5 6.167 5.5 8c0 .3.007.595.02.885C6.317 8.96 7.147 9 8 9s1.683-.04 2.48-.115c.013-.29.02-.585.02-.885Z" class="icon-light"/><path fill="#D0D2E0" d="M8 1a6.981 6.981 0 0 0-5.142 2.25A6.975 6.975 0 0 0 1 7.971c1.292.437 2.832.755 4.52.914C5.507 8.595 5.5 8.3 5.5 8c0-1.833.252-3.502.664-4.75C6.62 1.866 7.274 1 8 1Z" class="icon-light"/><path fill="#D0D2E0" d="M1 8c0 1.833.705 3.502 1.858 4.75A6.981 6.981 0 0 0 8 15c-.726 0-1.38-.866-1.836-2.25-.345-1.044-.577-2.382-.644-3.865-1.688-.16-3.228-.477-4.52-.914V8Z" class="icon-light"/><path fill="#D0D2E0" d="M6.164 12.75C6.62 14.134 7.274 15 8 15s1.38-.866 1.836-2.25c.345-1.044.577-2.382.644-3.865C9.683 8.96 8.853 9 8 9s-1.683-.04-2.48-.115c.067 1.483.3 2.821.644 3.865Z" class="icon-light"/><path fill="#D0D2E0" d="M8 15a6.981 6.981 0 0 0 5.142-2.25A6.975 6.975 0 0 0 15 8v-.029c-1.292.437-2.832.755-4.52.914-.067 1.483-.3 2.821-.644 3.865C9.38 14.134 8.726 15 8 15Z" class="icon-light"/><path fill="#D0D2E0" d="M13.142 3.25A6.981 6.981 0 0 0 8 1c.726 0 1.38.866 1.836 2.25.412 1.248.664 2.917.664 4.75 0 .3-.007.595-.02.885 1.688-.159 3.228-.477 4.52-.914a6.974 6.974 0 0 0-1.858-4.721Z" class="icon-light"/><path fill="currentColor" d="m13.142 3.25-.735.679.735-.679Zm-10.284 0 .735.679-.735-.679Zm0 9.5.735-.679-.735.679Zm10.284 0-.735-.679.735.679Zm-3.306-9.5-.95.313.95-.313Zm-3.672 0 .95.313-.95-.313Zm0 9.5-.95.313.95-.313Zm3.672 0 .95.313-.95-.313ZM15 7.971l1-.004-1 .004Zm-14 0-1-.004 1 .004ZM8 2c1.742 0 3.31.741 4.407 1.929l1.47-1.358A7.981 7.981 0 0 0 8 0v2ZM3.593 3.929A5.981 5.981 0 0 1 8 2V0a7.981 7.981 0 0 0-5.876 2.571L3.593 3.93ZM0 8c0 2.095.806 4.003 2.124 5.429l1.469-1.358A5.975 5.975 0 0 1 2 8H0Zm8 6a5.981 5.981 0 0 1-4.407-1.929l-1.47 1.358A7.981 7.981 0 0 0 8 16v-2Zm0 2a7.981 7.981 0 0 0 5.876-2.571l-1.469-1.358A5.981 5.981 0 0 1 8 14v2Zm6-8c0 1.572-.603 3-1.593 4.071l1.47 1.358A7.975 7.975 0 0 0 16 8h-2Zm-2.5 0c0-1.915-.262-3.693-.714-5.063l-1.9.626C9.259 4.69 9.5 6.248 9.5 8h2ZM8 2c-.067 0 .02-.041.238.23.21.263.44.704.649 1.333l1.899-.627c-.249-.753-.573-1.438-.986-1.954C9.395.475 8.793 0 8 0v2Zm-2.786.937C4.762 4.306 4.5 6.085 4.5 8h2c0-1.752.242-3.311.613-4.437l-1.899-.627Zm1.9.626c.207-.63.438-1.07.648-1.333C7.98 1.96 8.067 2 8 2V0c-.793 0-1.395.475-1.8.982-.413.516-.737 1.2-.986 1.954l1.9.627ZM8 14c.067 0-.02.041-.238-.23-.21-.263-.44-.704-.649-1.333l-1.899.626c.249.754.573 1.439.986 1.955.405.507 1.007.982 1.8.982v-2Zm0 2c.793 0 1.395-.475 1.8-.982.413-.516.737-1.2.986-1.955l-1.9-.627c-.207.63-.438 1.071-.648 1.334-.217.271-.305.23-.238.23v2Zm8-8v-.033l-2 .008V8h2Zm0-.033a7.975 7.975 0 0 0-2.124-5.396L12.407 3.93A5.975 5.975 0 0 1 14 7.975l2-.008ZM2.124 2.571A7.975 7.975 0 0 0 0 7.967l2 .008A5.975 5.975 0 0 1 3.593 3.93L2.123 2.57ZM0 7.967V8h2v-.025l-2-.008ZM4.5 8c0 .315.007.625.02.93l1.999-.09A18.68 18.68 0 0 1 6.5 8h-2Zm.926 1.88C6.255 9.96 7.116 10 8 10V8c-.822 0-1.62-.038-2.386-.11l-.188 1.99ZM8 10c.884 0 1.745-.041 2.574-.12l-.188-1.99C9.621 7.962 8.822 8 8 8v2Zm3.48-1.07c.013-.305.02-.615.02-.93h-2c0 .285-.006.565-.019.84l1.998.09Zm-.906.95c1.752-.165 3.37-.496 4.746-.961l-.64-1.895c-1.207.408-2.67.712-4.294.866l.188 1.99ZM9.481 8.84c-.063 1.413-.284 2.658-.594 3.597l1.899.626c.38-1.149.623-2.58.693-4.133l-1.998-.09Zm-3.867-.95c-1.625-.154-3.087-.458-4.294-.866L.68 8.919c1.377.465 2.994.796 4.746.962l.188-1.991ZM4.52 8.93c.07 1.553.314 2.985.693 4.133l1.9-.627c-.31-.938-.532-2.183-.595-3.596l-1.998.09ZM0 7.97 0 7.997l2 .004v-.029L0 7.97ZM16 7.997v-.029l-2 .004v.029l2-.004Z" class="icon-dark"/>`
};
const cyGeneralGlobeX48 = {
  name: "generalGlobeX48",
  data: `<path fill="#D0D2E0" d="M31 24h12c0-4.976-1.913-9.506-5.044-12.893-2.187 1.12-4.967 1.978-8.105 2.458C30.577 16.56 31 20.146 31 24Z" class="icon-light"/><path fill="#D0D2E0" d="M29.85 13.565c3.139-.48 5.92-1.337 8.106-2.458A18.95 18.95 0 0 0 24 5c2.446 0 4.6 3.406 5.85 8.565Z" class="icon-light"/><path fill="#D0D2E0" d="M24 5c-2.446 0-4.6 3.406-5.85 8.565 1.842.283 3.809.435 5.85.435 2.041 0 4.008-.152 5.85-.435C28.6 8.405 26.447 5 24 5Z" class="icon-light"/><path fill="#D0D2E0" d="M17 24h14c0-3.854-.423-7.44-1.15-10.435-1.842.283-3.809.435-5.85.435-2.041 0-4.008-.152-5.85-.435C17.422 16.56 17 20.146 17 24Z" class="icon-light"/><path fill="#D0D2E0" d="M5 24h12c0-3.854.423-7.44 1.15-10.435-3.139-.48-5.92-1.337-8.106-2.458A18.933 18.933 0 0 0 5 24Z" class="icon-light"/><path fill="#D0D2E0" d="M18.15 13.565C19.4 8.405 21.553 5 24 5a18.95 18.95 0 0 0-13.956 6.107c2.186 1.12 4.967 1.978 8.105 2.458ZM18.15 34.435c-3.139.48-5.92 1.337-8.106 2.458A18.95 18.95 0 0 0 24 43c-2.446 0-4.6-3.406-5.85-8.565Z" class="icon-light"/><path fill="#D0D2E0" d="M17 24H5c0 4.976 1.913 9.506 5.044 12.893 2.186-1.12 4.967-1.978 8.105-2.458C17.423 31.44 17 27.854 17 24Z" class="icon-light"/><path fill="#D0D2E0" d="M31 24H17c0 3.854.423 7.44 1.15 10.435A38.768 38.768 0 0 1 24 34c2.041 0 4.008.153 5.85.435C30.578 31.44 31 27.854 31 24Z" class="icon-light"/><path fill="#D0D2E0" d="M18.15 34.435C19.4 39.595 21.553 43 24 43c2.446 0 4.6-3.406 5.85-8.565A38.768 38.768 0 0 0 24 34c-2.041 0-4.008.153-5.85.435Z" class="icon-light"/><path fill="#D0D2E0" d="M24 43a18.95 18.95 0 0 0 13.956-6.107c-2.187-1.12-4.967-1.978-8.105-2.458C28.599 39.595 26.446 43 24 43Z" class="icon-light"/><path fill="#D0D2E0" d="M43 24H31c0 3.854-.423 7.44-1.15 10.435 3.139.48 5.92 1.337 8.106 2.458A18.933 18.933 0 0 0 43 24Z" class="icon-light"/><path fill="currentColor" d="M24 14v1-1Zm0 20v-1 1Zm19-11H5v2h38v-2Zm-12 2h12v-2H31v2Zm13-1a19.932 19.932 0 0 0-5.31-13.572l-1.468 1.358A17.932 17.932 0 0 1 42 24h2Zm-6.5-13.783c-2.071 1.062-4.745 1.892-7.8 2.36l.302 1.977c3.22-.494 6.108-1.377 8.41-2.557l-.912-1.78Zm-8.621 3.584C29.584 16.709 30 20.215 30 24h2c0-3.923-.43-7.59-1.177-10.67l-1.944.47ZM24 6c.723 0 1.61.51 2.542 1.904.912 1.363 1.727 3.381 2.337 5.897l1.944-.472c-.642-2.643-1.529-4.908-2.618-6.537C27.135 5.192 25.723 4 24 4v2Zm5.7 6.577A37.773 37.773 0 0 1 24 13v2c2.09 0 4.108-.156 6.002-.446l-.303-1.977ZM24 6a17.95 17.95 0 0 1 13.222 5.786l1.469-1.358A19.949 19.949 0 0 0 24 4v2Zm0-2c-1.723 0-3.136 1.193-4.205 2.792-1.089 1.63-1.976 3.894-2.618 6.537l1.944.472c.61-2.516 1.425-4.534 2.337-5.897C22.39 6.51 23.278 6 24 6V4Zm-6.002 10.554c1.894.29 3.911.446 6.002.446v-2c-1.992 0-3.908-.149-5.7-.423l-.302 1.977ZM18 24c0-3.785.416-7.29 1.121-10.2l-1.944-.47C16.43 16.41 16 20.076 16 24h2Zm-1 1h14v-2H17v2ZM5 25h12v-2H5v2Zm13.3-12.423c-3.055-.468-5.729-1.298-7.8-2.36l-.912 1.78c2.302 1.18 5.19 2.063 8.41 2.557l.303-1.977Zm-8.99-2.149A19.932 19.932 0 0 0 4 24h2c0-4.715 1.811-9.004 4.778-12.214L9.31 10.428Zm1.468 1.358A17.95 17.95 0 0 1 24 6V4a19.95 19.95 0 0 0-14.69 6.428l1.468 1.358ZM4 24a19.932 19.932 0 0 0 5.31 13.572l1.468-1.358A17.932 17.932 0 0 1 6 24H4Zm6.5 13.783c2.071-1.062 4.745-1.892 7.8-2.36l-.302-1.977c-3.22.494-6.108 1.377-8.41 2.557l.912 1.78Zm8.621-3.584C18.416 31.291 18 27.785 18 24h-2c0 3.923.43 7.59 1.177 10.67l1.944-.47ZM24 42c-.723 0-1.61-.51-2.542-1.904-.912-1.363-1.727-3.381-2.337-5.897l-1.944.471c.642 2.644 1.529 4.909 2.618 6.538C20.865 42.808 22.277 44 24 44v-2Zm-5.7-6.577A37.773 37.773 0 0 1 24 35v-2c-2.09 0-4.108.156-6.002.446l.303 1.977ZM24 42a17.949 17.949 0 0 1-13.222-5.786L9.31 37.572A19.949 19.949 0 0 0 24 44v-2Zm0-7c1.992 0 3.908.149 5.7.423l.302-1.977A39.778 39.778 0 0 0 24 33v2Zm6.823-.33C31.57 31.59 32 27.923 32 24h-2c0 3.785-.416 7.29-1.121 10.2l1.944.47Zm-1.944-.47c-.61 2.515-1.425 4.533-2.337 5.896C25.61 41.49 24.722 42 24 42v2c1.723 0 3.136-1.193 4.205-2.792 1.089-1.63 1.976-3.894 2.618-6.538l-1.944-.47ZM24 44a19.949 19.949 0 0 0 14.69-6.428l-1.468-1.358A17.949 17.949 0 0 1 24 42v2Zm14.412-7.997c-2.302-1.18-5.19-2.063-8.41-2.557l-.303 1.977c3.056.468 5.73 1.298 7.801 2.36l.912-1.78ZM42 24c0 4.715-1.811 9.004-4.778 12.214l1.469 1.358A19.932 19.932 0 0 0 44 24h-2Z" class="icon-dark"/>`
};
const cyGeneralGrid2X2X16 = {
  name: "generalGrid2X2X16",
  data: `<path fill="#D0D2E0" d="M2 2h4v4H2V2ZM2 10h4v4H2v-4ZM10 2h4v4h-4V2ZM10 10h4v4h-4v-4Z" class="icon-light" style="opacity:.35"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M2 2h4v4H2V2ZM2 10h4v4H2v-4ZM10 2h4v4h-4V2ZM10 10h4v4h-4v-4Z" class="icon-dark"/>`
};
const cyGeneralGrid2X2X24 = {
  name: "generalGrid2X2X24",
  data: `<path fill="#D0D2E0" d="M3 3h7v7H3V3ZM3 14h7v7H3v-7ZM14 3h7v7h-7V3ZM14 14h7v7h-7v-7Z" class="icon-light" style="opacity:.35"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M3 3h7v7H3V3ZM3 14h7v7H3v-7ZM14 3h7v7h-7V3ZM14 14h7v7h-7v-7Z" class="icon-dark"/>`
};
const cyGeneralGrid2X2MediumX16 = {
  name: "generalGrid2X2MediumX16",
  data: `<path fill="#D0D2E0" d="M3 3h3v3H3V3ZM3 10h3v3H3v-3ZM10 3h3v3h-3V3ZM10 10h3v3h-3v-3Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M3 3h3v3H3V3ZM3 10h3v3H3v-3ZM10 3h3v3h-3V3ZM10 10h3v3h-3v-3Z" class="icon-dark"/>`
};
const cyGeneralGrid2X2SmallX16 = {
  name: "generalGrid2X2SmallX16",
  data: `<path fill="#D0D2E0" d="M3.5 3.5h3v3h-3v-3ZM3.5 9.5h3v3h-3v-3ZM9.5 3.5h3v3h-3v-3ZM9.5 9.5h3v3h-3v-3Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M3.5 3.5h3v3h-3v-3ZM3.5 9.5h3v3h-3v-3ZM9.5 3.5h3v3h-3v-3ZM9.5 9.5h3v3h-3v-3Z" class="icon-dark"/>`
};
const cyGeneralHandleVerticalX16 = {
  name: "generalHandleVerticalX16",
  data: `<path fill="currentColor" d="M7 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM7 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM11 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM11 2a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM11 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM7 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM7 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM11 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyGeneralLifeRingX16 = {
  name: "generalLifeRingX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M8 1a7 7 0 0 1 7 7h-4a3 3 0 0 0-3-3V1ZM5 8H1a7 7 0 0 0 7 7v-4a3 3 0 0 1-3-3Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-width="2" d="M15 8a7 7 0 0 1-7 7m7-7a7 7 0 0 0-7-7m7 7h-4m-3 7a7 7 0 0 1-7-7m7 7v-4M1 8a7 7 0 0 1 7-7M1 8h4m3-7v4m3 3a3 3 0 0 1-3 3m3-3a3 3 0 0 0-3-3m0 6a3 3 0 0 1-3-3m0 0a3 3 0 0 1 3-3" class="icon-dark"/>`
};
const cyGeneralOfficeBuildingX16 = {
  name: "generalOfficeBuildingX16",
  data: `<path fill="#D0D2E0" d="M10 4v10h4a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-4Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="M10 14H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v2m0 10V4m0 10h4a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-4" class="icon-dark"/><path fill="currentColor" d="M3 3.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1ZM12 6.5a.5.5 0 0 1 1 0v1a.5.5 0 0 1-1 0v-1ZM12 9.5a.5.5 0 0 1 1 0v1a.5.5 0 0 1-1 0v-1ZM3 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1ZM3 9.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1ZM6 3.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1ZM6 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1ZM6 9.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1Z" class="icon-dark"/>`
};
const cyGeneralPlaceholderX12 = {
  name: "generalPlaceholderX12",
  data: `<path fill="#D0D2E0" d="M9.55 2.45c1.933 1.934 1.933 5.166 0 7.1-1.934 1.933-5.166 1.933-7.1 0-1.933-1.934-1.933-5.166 0-7.1 1.934-1.933 5.166-1.933 7.1 0Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="m6 6 3.55-3.55M6 6 2.45 2.45M6 6l3.55 3.55M6 6 2.45 9.55m7.1-7.1c1.933 1.934 1.933 5.166 0 7.1m0-7.1C7.616.517 4.384.517 2.45 2.45m0 0c-1.933 1.934-1.933 5.166 0 7.1m7.1 0c-1.934 1.933-5.166 1.933-7.1 0" class="icon-dark"/>`
};
const cyGeneralPlaceholderX16 = {
  name: "generalPlaceholderX16",
  data: `<path fill="#D0D2E0" d="M12.97 3.03c2.707 2.708 2.707 7.232 0 9.94-2.708 2.707-7.232 2.707-9.94 0-2.707-2.708-2.707-7.232 0-9.94 2.708-2.707 7.232-2.707 9.94 0Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="m8 8 4.97-4.97M8 8 3.03 3.03M8 8l4.97 4.97M8 8l-4.97 4.97m9.94-9.94c2.707 2.708 2.707 7.232 0 9.94m0-9.94C10.261.324 5.737.324 3.03 3.03m0 0c-2.707 2.708-2.707 7.232 0 9.94m9.94 0c-2.708 2.707-7.232 2.707-9.94 0" class="icon-dark"/>`
};
const cyGeneralPlaceholderX24 = {
  name: "generalPlaceholderX24",
  data: `<path fill="#D0D2E0" d="M19.1 4.9c3.867 3.869 3.867 10.332 0 14.2-3.869 3.867-10.331 3.867-14.2 0-3.867-3.869-3.867-10.331 0-14.2 3.869-3.867 10.332-3.867 14.2 0Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="m12 12 7.1-7.1M12 12 4.9 4.9M12 12l7.1 7.1M12 12l-7.1 7.1M19.1 4.9c3.867 3.869 3.867 10.332 0 14.2m0-14.2C15.23 1.034 8.768 1.034 4.9 4.9m0 0c-3.867 3.869-3.867 10.332 0 14.2m14.2 0c-3.869 3.867-10.331 3.867-14.2 0" class="icon-dark"/>`
};
const cyGeneralPlaceholderX48 = {
  name: "generalPlaceholderX48",
  data: `<path fill="#D0D2E0" d="M38.198 9.802c7.736 7.735 7.736 20.66 0 28.396-7.735 7.736-20.66 7.736-28.396 0-7.736-7.735-7.736-20.66 0-28.396 7.735-7.736 20.66-7.736 28.396 0Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="M24 24 38.198 9.802M24 24 9.802 9.802M24 24l14.198 14.198M24 24 9.802 38.198M38.198 9.802c7.736 7.735 7.736 20.66 0 28.396m0-28.396c-7.735-7.736-20.66-7.736-28.396 0m0 0c-7.736 7.735-7.736 20.66 0 28.396m28.396 0c-7.735 7.736-20.66 7.736-28.396 0" class="icon-dark"/>`
};
const cyGeneralRocketX16 = {
  name: "generalRocketX16",
  data: `<path d="M3.5 9.5 1 11l4 4 1.5-2.5-3-3Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="m7.5 13.5-1-1m1 1 1 1 3-3v-2m-4 4 4-4m-9-1 1 1m-1-1-1-1 3-3h2m-4 4 4-4m-3 5L1 11l4 4 1.5-2.5m-3-3 3 3m5-3 1.621-1.621A3 3 0 0 0 14 5.757V2h-3.757a3 3 0 0 0-2.122.879L6.5 4.5" class="icon-dark"/><path stroke="currentColor" stroke-linecap="round" d="M9 11.5 4.5 7" class="icon-dark"/><circle cx="10.5" cy="5.5" r="1" fill="currentColor" class="icon-dark"/>`
};
const cyGeneralRocketX24 = {
  name: "generalRocketX24",
  data: `<path d="m6 13.5-3 2L8.5 21l2-3L6 13.5ZM3.635 11.135 5 12.5l5.23-5.23H7.5l-3.865 3.865ZM11.5 19l1.365 1.365 3.866-3.865v-2.73L11.5 19Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M16.73 13.77v2.73l-3.865 3.865L11.5 19m5.23-5.23L11.5 19m5.23-5.23 3.098-3.098A4 4 0 0 0 21 7.843V3h-4.843a4 4 0 0 0-2.829 1.172l-3.097 3.097m0 0H7.5l-3.865 3.866L5 12.5m5.23-5.23L5 12.5m0 0 6.5 6.5M6 13.5l-3 2L8.5 21l2-3L6 13.5Z" class="icon-dark"/><path fill="#1B1E2E" d="M.146 19.646a.5.5 0 0 0 .708.708l-.708-.708Zm0 3.5a.5.5 0 0 0 .708.708l-.708-.708Zm3.5 0a.5.5 0 0 0 .708.708l-.708-.708Zm-1.5-5.5-2 2 .708.708 2-2-.708-.708Zm1.75 1.75-3.75 3.75.708.708 3.75-3.75-.708-.708Zm1.75 1.75-2 2 .708.708 2-2-.708-.708Z" opacity=".4"/><path stroke="currentColor" stroke-linecap="round" d="m13.5 16.5-6-6" class="icon-dark"/><circle cx="16.5" cy="7.5" r="1.5" stroke="currentColor" class="icon-dark-stroke icon-light-fill"/>`
};
const cyLoadingX16 = {
  name: "loadingX16",
  data: `<circle cx="8" cy="8" r="6" stroke="#D0D2E0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 8a6 6 0 0 0-6-6" class="icon-dark"/>`
};
const cyMenuDotsVerticalX16 = {
  name: "menuDotsVerticalX16",
  data: `<path fill="currentColor" d="M10 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM10 8a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM10 14a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-dark"/>`
};
const cyMenuExpandLeftX16 = {
  name: "menuExpandLeftX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 3H8m6 5H2m0 0 2.5-2.5M2 8l2.5 2.5M14 13H8" class="icon-dark"/>`
};
const cyMenuExpandRightX16 = {
  name: "menuExpandRightX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 3h6M2 8h12m0 0-2.5-2.5M14 8l-2.5 2.5M2 13h6" class="icon-dark"/>`
};
const cyMenuHamburgerX24 = {
  name: "menuHamburgerX24",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 6h22M1 12h14M1 18h18" class="icon-dark"/>`
};
const cyNumber1X24 = {
  name: "number1X24",
  data: `<circle cx="12" cy="12" r="12" fill="#D0D2E0" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 17V8h-2L9.5 9.5" class="icon-dark"/>`
};
const cyNumber2X24 = {
  name: "number2X24",
  data: `<circle cx="12" cy="12" r="12" fill="#D0D2E0" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 16H9l4.5-4c2-2 1-5-1.5-5S9 9.5 9 9.5" class="icon-dark"/>`
};
const cyNumber3X24 = {
  name: "number3X24",
  data: `<circle cx="12" cy="12" r="12" fill="#D0D2E0" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 15c.5 3 5.5 3 6 0 0-2.5-3-3-3-3l3-4H9" class="icon-dark"/>`
};
const cyNumber4X24 = {
  name: "number4X24",
  data: `<circle cx="12" cy="12" r="12" fill="#D0D2E0" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.5 17V8h-2l-3 6h7" class="icon-dark"/>`
};
const cyNumber5X24 = {
  name: "number5X24",
  data: `<circle cx="12" cy="12" r="12" fill="#D0D2E0" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.5 8h-4l-.5 4h2c1.657 0 3 1.12 3 2.5S13.657 17 12 17c-.982 0-1.853-.393-2.4-1" class="icon-dark"/>`
};
const cyNumberOctothorpeX24 = {
  name: "numberOctothorpeX24",
  data: `<circle cx="12" cy="12" r="12" fill="#D0D2E0" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 6 8 18m5 0 3-12m2 4H7m10 4H6" class="icon-dark"/>`
};
const cyObjectBookX16 = {
  name: "objectBookX16",
  data: `<path fill="#D0D2E0" d="M13 2H4a1 1 0 0 0-1 1v8h10V2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 11V2H4m9 9H4m9 0v3H4m-1-3v2a1 1 0 0 0 1 1v0m-1-3V3a1 1 0 0 1 1-1v0m-1 9h1m0-9v9m0 0v3m6-9H7" class="icon-dark"/>`
};
const cyObjectBookX24 = {
  name: "objectBookX24",
  data: `<path fill="#D0D2E0" d="M20 3H5a1 1 0 0 0-1 1v13h16V3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20 17V3H5m15 14H5m15 0v4H5m-1-4v3a1 1 0 0 0 1 1v0m-1-4V4a1 1 0 0 1 1-1v0M4 17h1M5 3v14m0 0v4M16 7H9m0 3h6" class="icon-dark"/>`
};
const cyObjectBookX48 = {
  name: "objectBookX48",
  data: `<path fill="#D0D2E0" d="M40 5H10a2 2 0 0 0-2 2v28h32V5Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M40 43h-1M8 35v6a2 2 0 0 0 2 2v0m-2-8V7a2 2 0 0 1 2-2v0M8 35h2m0-30h30v30h-1M10 5v30m0 0v8m0-8h29m-29 8h29M16 17h13m10 18s-1 4 0 8m-5-32H16v2h18v-2Z" class="icon-dark"/><path fill="#69D3A7" d="M14 39h8v8l-4-1.714L14 47v-8Z" class="icon-light-secondary"/><path fill="#00814D" d="M14 39v-1h-1v1h1Zm8 0h1v-1h-1v1Zm0 8-.394.92A1 1 0 0 0 23 47h-1Zm-8 0h-1a1 1 0 0 0 1.394.92L14 47Zm4-1.714.394-.92a1 1 0 0 0-.788 0l.394.92ZM14 40h8v-2h-8v2Zm7-1v8h2v-8h-2Zm-6 8v-8h-2v8h2Zm7.394-.92-4-1.713-.788 1.838 4 1.714.788-1.838Zm-4.788-1.713-4 1.714.788 1.838 4-1.714-.788-1.838Z" class="icon-dark-secondary"/>`
};
const cyObjectBookCodeX48 = {
  name: "objectBookCodeX48",
  data: `<path fill="#D0D2E0" d="M40 5H10a2 2 0 0 0-2 2v28h32V5Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M40 43h-1M8 35v6a2 2 0 0 0 2 2v0m-2-8V7a2 2 0 0 1 2-2v0M8 35h2m0-30h30v30h-1M10 5v30m0 0v8m0-8h29m-29 8h29m0-8s-1 4 0 8M21 17l-3 3 3 3m8-6 3 3-3 3m-5.5 2.5 3-11" class="icon-dark"/><path fill="#69D3A7" d="M14 39h8v8l-4-1.714L14 47v-8Z" class="icon-light-secondary"/><path fill="#00814D" d="M14 39v-1h-1v1h1Zm8 0h1v-1h-1v1Zm0 8-.394.92A1 1 0 0 0 23 47h-1Zm-8 0h-1a1 1 0 0 0 1.394.92L14 47Zm4-1.714.394-.92a1 1 0 0 0-.788 0l.394.92ZM14 40h8v-2h-8v2Zm7-1v8h2v-8h-2Zm-6 8v-8h-2v8h2Zm7.394-.92-4-1.713-.788 1.838 4 1.714.788-1.838Zm-4.788-1.713-4 1.714.788 1.838 4-1.714-.788-1.838Z" class="icon-dark-secondary"/>`
};
const cyObjectBookmarkX16 = {
  name: "objectBookmarkX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M11 2a2 2 0 0 1 2 2v10l-5-2-5 2V4a2 2 0 0 1 2-2h6ZM8.388 6.515 8 5.049l-.388 1.466-1.514-.084 1.274.822-.548 1.414L8 7.709l1.176.958-.548-1.414 1.274-.822-1.514.084Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="m13 14-.371.928A1 1 0 0 0 14 14h-1Zm-5-2 .371-.928a1 1 0 0 0-.742 0L8 12Zm-5 2H2a1 1 0 0 0 1.371.928L3 14Zm5-8.951.967-.256a1 1 0 0 0-1.934 0L8 5.049Zm.388 1.466-.967.255a1 1 0 0 0 1.022.743l-.055-.998Zm1.514-.084.542.84a1 1 0 0 0-.597-1.839l.055.999Zm-1.274.822-.542-.84a1 1 0 0 0-.39 1.2l.932-.36Zm.548 1.414-.632.775a1 1 0 0 0 1.564-1.137l-.932.362ZM8 7.709l.632-.776a1 1 0 0 0-1.264 0L8 7.71Zm-1.176.958-.932-.362a1 1 0 0 0 1.564 1.137l-.632-.775Zm.548-1.414.933.36a1 1 0 0 0-.39-1.2l-.543.84ZM6.098 6.43l.055-.999a1 1 0 0 0-.597 1.839l.542-.84Zm1.514.084-.055.998a1 1 0 0 0 1.022-.743l-.967-.255ZM12 4v10h2V4h-2Zm1.371 9.072-5-2-.742 1.857 5 2 .742-1.857Zm-5.742-2-5 2 .742 1.857 5-2-.742-1.857ZM5 3h6V1H5v2ZM4 14V4H2v10h2Zm3.033-8.696.388 1.466 1.934-.511-.388-1.466-1.934.511Zm1.41 2.21 1.515-.085-.111-1.997-1.515.084.111 1.997ZM9.36 5.59l-1.274.822L9.17 8.093l1.274-.822-1.084-1.68ZM7.695 7.614l.548 1.414 1.865-.723-.548-1.414-1.865.723Zm2.112.277-1.175-.958-1.264 1.55 1.176.959 1.263-1.55Zm-2.439-.958-1.175.958 1.263 1.55 1.176-.957-1.264-1.55Zm.389 2.095.548-1.414L6.44 6.89l-.548 1.414 1.865.723Zm.157-2.616L6.64 5.59 5.556 7.271l1.274.822 1.084-1.68ZM6.042 7.43l1.515.084.11-1.997-1.514-.084-.11 1.997ZM8.58 6.77l.388-1.466-1.934-.511-.388 1.466 1.934.511ZM5 1a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V1Zm9 3a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2Z" class="icon-dark"/>`
};
const cyObjectBookmarkX24 = {
  name: "objectBookmarkX24",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M17 3a3 3 0 0 1 3 3v15l-8-3-8 3V6a3 3 0 0 1 3-3h10Zm-4.418 6.772L12 7.572l-.582 2.2-2.271-.126 1.912 1.233L10.237 13 12 11.563 13.763 13l-.822-2.121 1.912-1.233-2.271.126Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="m20 21-.351.936A1 1 0 0 0 21 21h-1Zm-8-3 .351-.936a1 1 0 0 0-.702 0L12 18Zm-8 3H3a1 1 0 0 0 1.351.936L4 21Zm8-13.427.967-.256a1 1 0 0 0-1.934 0l.967.256Zm.582 2.199-.967.256a1 1 0 0 0 1.022.742l-.055-.998Zm2.271-.126.542.84a1 1 0 0 0-.597-1.839l.055.999Zm-1.912 1.233-.542-.84a1 1 0 0 0-.39 1.201l.932-.361ZM13.763 13l-.631.775a1 1 0 0 0 1.564-1.136l-.933.361ZM12 11.563l.632-.775a1 1 0 0 0-1.264 0l.632.775ZM10.237 13l-.933-.361a1 1 0 0 0 1.564 1.136L10.237 13Zm.822-2.121.932.361a1 1 0 0 0-.39-1.201l-.543.84ZM9.146 9.646l.055-.999a1 1 0 0 0-.597 1.84l.542-.841Zm2.271.126-.055.998a1 1 0 0 0 1.022-.742l-.967-.256ZM19 6v15h2V6h-2Zm1.351 14.064-8-3-.702 1.872 8 3 .702-1.872Zm-8.702-3-8 3 .702 1.872 8-3-.702-1.872ZM7 4h10V2H7v2ZM5 21V6H3v15h2Zm6.033-13.171.582 2.199 1.934-.512-.582-2.199-1.934.512Zm1.604 2.942 2.272-.127-.111-1.997-2.271.127.11 1.997Zm1.674-1.965L12.4 10.039l1.085 1.68 1.911-1.233-1.084-1.68ZM12.01 11.24l.822 2.121 1.865-.722-.822-2.121-1.865.722Zm2.386.985-1.763-1.437-1.264 1.55 1.764 1.437 1.263-1.55Zm-3.027-1.437-1.763 1.437 1.263 1.55 1.764-1.437-1.264-1.55Zm-.199 2.573.822-2.12-1.865-.723-.822 2.12 1.865.723Zm.431-3.322L9.69 8.806l-1.084 1.68 1.911 1.233 1.085-1.68Zm-2.509.605 2.272.127.11-1.997-2.27-.127-.112 1.997Zm3.294-.616.582-2.2-1.934-.51-.582 2.198 1.934.512ZM7 2a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2V2Zm14 4a4 4 0 0 0-4-4v2a2 2 0 0 1 2 2h2Z" class="icon-dark"/>`
};
const cyObjectBoxX16 = {
  name: "objectBoxX16",
  data: `<path fill="#D0D2E0" d="M14.5 11.133V4.866a.701.701 0 0 0-.101-.362L8 8v7c.12 0 .242-.03.35-.09l5.779-3.156a.708.708 0 0 0 .371-.621Z" class="icon-light"/><path fill="#D0D2E0" d="M1.871 11.754 7.65 14.91c.11.06.23.09.351.09V8L1.601 4.504a.7.7 0 0 0-.101.362v6.267c0 .258.142.495.371.62Z" class="icon-light"/><path fill="#D0D2E0" d="M7.65 1.089 1.87 4.246a.716.716 0 0 0-.27.258L8 8l6.399-3.496a.717.717 0 0 0-.27-.258L8.35 1.089a.733.733 0 0 0-.702 0Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m8 8 6.399-3.496M8 8v7m0-7L1.601 4.504m12.798 0a.701.701 0 0 1 .101.362v6.267a.708.708 0 0 1-.371.62L8.35 14.91c-.11.06-.23.09-.351.09m6.399-10.496a.717.717 0 0 0-.27-.258L8.35 1.089a.733.733 0 0 0-.702 0L1.871 4.246a.716.716 0 0 0-.27.258M8 15a.732.732 0 0 1-.35-.09L1.87 11.754a.708.708 0 0 1-.371-.621V4.866a.7.7 0 0 1 .101-.362" class="icon-dark"/>`
};
const cyObjectBoxX24 = {
  name: "objectBoxX24",
  data: `<path fill="#D0D2E0" d="M21 16.412V7.588a1 1 0 0 0-.14-.51L12 12v9.856a1 1 0 0 0 .486-.126l8-4.444a1 1 0 0 0 .514-.874ZM3.514 17.286l8 4.444a1 1 0 0 0 .486.126V12L3.14 7.078a1 1 0 0 0-.14.51v8.824a1 1 0 0 0 .514.874Z" class="icon-light"/><path fill="#D0D2E0" d="m11.514 2.27-8 4.444a1 1 0 0 0-.374.364L12 12l8.86-4.922a1 1 0 0 0-.374-.364l-8-4.444a1 1 0 0 0-.972 0Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m12 12 8.86-4.922M12 12v9.856M12 12 3.14 7.078m17.72 0a1 1 0 0 1 .14.51v8.824a1 1 0 0 1-.514.874l-8 4.444a1 1 0 0 1-.486.126m8.86-14.778a1 1 0 0 0-.374-.364l-8-4.444a1 1 0 0 0-.972 0l-8 4.444a1 1 0 0 0-.374.364M12 21.856a1 1 0 0 1-.486-.126l-8-4.444A1 1 0 0 1 3 16.412V7.588a1 1 0 0 1 .14-.51" class="icon-dark"/>`
};
const cyObjectBoxOpenX48 = {
  name: "objectBoxOpenX48",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M43 25.162 28.5 33 24 28.487V47l19-9.744V25.162Z" class="icon-light" clip-rule="evenodd"/><path fill="#D0D2E0" d="M24 9 5 18.744l19 9.743 19-9.743L24 9Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M24 47 5 37.256V25.162M24 47l19-9.744V25.162M24 47V28.487M24 9 5 18.744M24 9l19 9.744M24 9l4-4 19 9.5-4 4.244M24 9l-4-4-19 9.5 4 4.244m0 0 19 9.743M5 18.744 1 23l4 2.162m38-6.418-19 9.743m19-9.743L47 23l-4 2.162m-19 3.325L19.5 33 5 25.162m19 3.325L28.5 33 43 25.162" class="icon-dark"/><path fill="#1FA971" stroke="#00814D" stroke-linejoin="round" stroke-width="2" d="m18 7 1.131 2.869L22 11l-2.869 1.131L18 15l-1.131-2.869L14 11l2.869-1.131L18 7ZM27 1l.849 2.151L30 4l-2.151.849L27 7l-.849-2.151L24 4l2.151-.849L27 1ZM28 12l1.414 3.586L33 17l-3.586 1.414L28 22l-1.414-3.586L23 17l3.586-1.414L28 12Z" class="icon-dark-secondary-stroke icon-light-secondary-fill"/>`
};
const cyObjectBriefcaseX16 = {
  name: "objectBriefcaseX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M2.5 14A1.5 1.5 0 0 1 1 12.5V7l7 3 7-3v5.5a1.5 1.5 0 0 1-1.5 1.5h-11Z" class="icon-light" clip-rule="evenodd"/><path fill="#D0D2E0" d="M9 9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M11 4H5m6 0V2.5A1.5 1.5 0 0 0 9.5 1h-3A1.5 1.5 0 0 0 5 2.5V4m6 0h2.5A1.5 1.5 0 0 1 15 5.5V7M5 4H2.5A1.5 1.5 0 0 0 1 5.5V7m0 0v5.5A1.5 1.5 0 0 0 2.5 14h11a1.5 1.5 0 0 0 1.5-1.5V7M1 7l7 3 7-3M9 9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyObjectBugX24 = {
  name: "objectBugX24",
  data: `<path fill="#D0D2E0" d="M15 10V7a3 3 0 1 0-6 0v3h6ZM15 10H9a3.162 3.162 0 0 0-2 2v4a4.564 4.564 0 0 0 4.014 3.89l.685.076c.2.023.402.023.602 0l.685-.076A4.564 4.564 0 0 0 17 16v-4a3.162 3.162 0 0 0-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M17 12v2m0-2 .265-.088A4 4 0 0 0 20 8.117V7m-3 5v0a3.162 3.162 0 0 0-2-2v0m0 0V7a3 3 0 0 0-3-3v0a3 3 0 0 0-3 3v3m6 0H9m0 0v0a3.162 3.162 0 0 0-2 2v0m0 0v2m0-2-.265-.088A4 4 0 0 1 4 8.117V7m13 7h3m-3 0v2M7 14H4m3 0v2m10 0v0a4.564 4.564 0 0 1-4.014 3.89l-.685.076c-.2.023-.402.023-.602 0l-.685-.076A4.564 4.564 0 0 1 7 16v0m10 0 .265.088A4 4 0 0 1 20 19.883V21M7 16l-.265.088A4 4 0 0 0 4 19.883V21" class="icon-dark"/>`
};
const cyObjectChainLinkX16 = {
  name: "objectChainLinkX16",
  data: `<path fill="currentColor" d="M10 3a1 1 0 1 0 0 2V3Zm0 8a1 1 0 1 0 0 2v-2ZM6 5a1 1 0 0 0 0-2v2Zm0 8a1 1 0 1 0 0-2v2ZM5 7a1 1 0 0 0 0 2V7Zm6 2a1 1 0 1 0 0-2v2Zm-1-4h1V3h-1v2Zm1 6h-1v2h1v-2ZM5 5h1V3H5v2Zm1 6H5v2h1v-2ZM5 9h6V7H5v2ZM2 8a3 3 0 0 1 3-3V3a5 5 0 0 0-5 5h2ZM0 8a5 5 0 0 0 5 5v-2a3 3 0 0 1-3-3H0Zm14 0a3 3 0 0 1-3 3v2a5 5 0 0 0 5-5h-2Zm2 0a5 5 0 0 0-5-5v2a3 3 0 0 1 3 3h2Z" class="icon-dark"/>`
};
const cyObjectFolderDarkX16 = {
  name: "objectFolderDarkX16",
  data: `<path fill="#D0D2E0" d="M14 13a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H9L7.293 4.707A1 1 0 0 1 6.586 5H1v7a1 1 0 0 0 1 1h12Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M9 3 7.293 1.293A1 1 0 0 0 6.586 1H2a1 1 0 0 0-1 1v3m8-2h5a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V5m8-2L7.293 4.707A1 1 0 0 1 6.586 5H1" class="icon-dark"/>`
};
const cyObjectFolderDarkSmallX16 = {
  name: "objectFolderDarkSmallX16",
  data: `<path fill="#D0D2E0" d="M12.5 12a.5.5 0 0 0 .5-.5v-6a.5.5 0 0 0-.5-.5h-4L7.146 6.354a.5.5 0 0 1-.353.146H3v5a.5.5 0 0 0 .5.5h9Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M8.5 5 7.146 3.646a.5.5 0 0 0-.353-.146H3.5A.5.5 0 0 0 3 4v2.5M8.5 5h4a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5v-5M8.5 5 7.146 6.354a.5.5 0 0 1-.353.146H3" class="icon-dark"/>`
};
const cyObjectFolderLightX16 = {
  name: "objectFolderLightX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M7.293 2.293A1 1 0 0 0 6.586 2H2a1 1 0 0 0-1 1v3h5.586a1 1 0 0 0 .707-.293L9 4 7.293 2.293Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M9 4 7.293 2.293A1 1 0 0 0 6.586 2H2a1 1 0 0 0-1 1v3m8-2h5a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6m8-2L7.293 5.707A1 1 0 0 1 6.586 6H1" class="icon-dark"/>`
};
const cyObjectFolderLightX24 = {
  name: "objectFolderLightX24",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M10.293 4.293A1 1 0 0 0 9.586 4H4a1 1 0 0 0-1 1v3h6.586a1 1 0 0 0 .707-.293L12 6l-1.707-1.707Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="m12 6-1.707-1.707A1 1 0 0 0 9.586 4H4a1 1 0 0 0-1 1v3m9-2h8a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V8m9-2-1.707 1.707A1 1 0 0 1 9.586 8H3" class="icon-dark"/>`
};
const cyObjectGearX16 = {
  name: "objectGearX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M6.5 1h3a.5.5 0 0 1 .5.5v1.375a5.495 5.495 0 0 1 1.437.831l1.192-.688a.5.5 0 0 1 .683.183l1.5 2.598a.5.5 0 0 1-.183.683l-1.191.688a5.541 5.541 0 0 1 0 1.66l1.191.688a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.192-.688c-.43.345-.914.627-1.437.831V14.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.375a5.498 5.498 0 0 1-1.437-.831l-1.192.688a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.191-.688a5.544 5.544 0 0 1 0-1.66l-1.191-.688a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.192.688c.43-.345.914-.627 1.437-.831V1.5a.5.5 0 0 1 .5-.5ZM8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="m13.312 3.201-.866.5.866-.5Zm1.5 2.598.866-.5-.866.5Zm-12.124 7-.866.5.866-.5Zm-1.5-2.598.866-.5-.866.5Zm0-4.402.866.5-.866-.5Zm1.5-2.598.866.5-.866-.5Zm12.124 7 .866.5-.866-.5Zm-1.5 2.598-.866-.5.866.5ZM6 2.875l.364.931A1 1 0 0 0 7 2.875H6Zm-1.437.831-.5.866a1 1 0 0 0 1.125-.086l-.625-.78ZM3.37 3.018l-.5.866.5-.866ZM2.562 7.17l.989.15a1 1 0 0 0-.489-1.016l-.5.866Zm-1.191-.688.5-.866-.5.866ZM2.562 8.83l.5.866a1 1 0 0 0 .489-1.016l-.989.15Zm-1.191.688.5.866-.5-.866Zm3.192 2.776.625-.78a1 1 0 0 0-1.125-.086l.5.866Zm-1.192.688.5.866-.5-.866ZM6 13.125h1a1 1 0 0 0-.636-.931L6 13.125Zm4 0-.364-.931a1 1 0 0 0-.636.931h1Zm1.437-.831.5-.866a1 1 0 0 0-1.125.086l.625.78Zm1.192.688-.5.866.5-.866Zm.809-4.152-.989-.15a1 1 0 0 0 .489 1.016l.5-.866Zm1.191.688.5-.866-.5.866Zm0-3.036-.5-.866.5.866Zm-1.191.688-.5-.866a1 1 0 0 0-.489 1.016l.989-.15Zm-2-3.464-.626.78a1 1 0 0 0 1.125.086l-.5-.866Zm1.191-.688-.5-.866.5.866ZM10 2.875H9a1 1 0 0 0 .636.931L10 2.875ZM6.5 2h3V0h-3v2Zm3 12h-3v2h3v-2Zm2.946-10.299 1.5 2.598 1.732-1-1.5-2.598-1.732 1Zm-8.892 8.598-1.5-2.598-1.732 1 1.5 2.598 1.732-1Zm-1.5-6 1.5-2.598-1.732-1-1.5 2.598 1.732 1Zm11.892 3.402-1.5 2.598 1.732 1 1.5-2.598-1.732-1ZM7 2.875V1.5H5v1.375h2ZM5.188 4.486a4.494 4.494 0 0 1 1.176-.68l-.728-1.863a6.494 6.494 0 0 0-1.699.983l1.251 1.56Zm-2.317-.602 1.192.688 1-1.732-1.192-.688-1 1.732ZM3.5 8c0-.232.017-.46.051-.68l-1.978-.3c-.048.32-.073.648-.073.98h2Zm-.438-1.696-1.191-.688-1 1.732 1.191.688 1-1.732Zm.489 2.376A4.543 4.543 0 0 1 3.5 8h-2c0 .332.025.66.073.98l1.978-.3Zm-1.68 1.704 1.191-.688-1-1.732-1.191.688 1 1.732Zm2.192 1.044-1.192.688 1 1.732 1.192-.688-1-1.732Zm2.3.766a4.497 4.497 0 0 1-1.175-.68l-1.25 1.56c.508.408 1.08.741 1.698.982l.728-1.862ZM7 14.5v-1.375H5V14.5h2Zm2-1.375V14.5h2v-1.375H9Zm1.812-1.611a4.495 4.495 0 0 1-1.176.68l.728 1.862a6.495 6.495 0 0 0 1.699-.982l-1.251-1.56Zm2.317.602-1.192-.688-1 1.732 1.192.688 1-1.732ZM12.5 8c0 .232-.017.46-.051.68l1.978.3c.048-.32.073-.648.073-.98h-2Zm.438 1.696 1.191.688 1-1.732-1.191-.688-1 1.732Zm1.191-4.08-1.191.688 1 1.732 1.191-.688-1-1.732ZM12.45 7.32c.034.22.051.448.051.68h2c0-.332-.025-.66-.073-.98l-1.978.3Zm-.512-2.748 1.192-.688-1-1.732-1.192.688 1 1.732Zm-2.3-.766c.426.167.822.398 1.175.68l1.25-1.56a6.496 6.496 0 0 0-1.698-.983l-.728 1.863ZM9 1.5v1.375h2V1.5H9Zm3.446 10.799a.5.5 0 0 1 .683-.183l-1 1.732a1.5 1.5 0 0 0 2.05-.549l-1.733-1Zm3.232-1.598a1.5 1.5 0 0 0-.549-2.05l-1 1.733a.5.5 0 0 1-.183-.683l1.732 1Zm-12.124-7a.5.5 0 0 1-.683.183l1-1.732a1.5 1.5 0 0 0-2.05.549l1.733 1ZM.322 5.299a1.5 1.5 0 0 0 .549 2.05l1-1.733a.5.5 0 0 1 .183.683l-1.732-1Zm1.732 4.402a.5.5 0 0 1-.183.683l-1-1.732A1.5 1.5 0 0 0 .32 10.7l1.733-1Zm-.232 3.598a1.5 1.5 0 0 0 2.049.55l-1-1.733a.5.5 0 0 1 .683.183l-1.732 1Zm12.124-7a.5.5 0 0 1 .183-.683l1 1.732a1.5 1.5 0 0 0 .55-2.049l-1.733 1Zm.232-3.598a1.5 1.5 0 0 0-2.049-.55l1 1.733a.5.5 0 0 1-.683-.183l1.732-1ZM6.5 14a.5.5 0 0 1 .5.5H5A1.5 1.5 0 0 0 6.5 16v-2Zm3 2a1.5 1.5 0 0 0 1.5-1.5H9a.5.5 0 0 1 .5-.5v2Zm0-14a.5.5 0 0 1-.5-.5h2A1.5 1.5 0 0 0 9.5 0v2Zm-3-2A1.5 1.5 0 0 0 5 1.5h2a.5.5 0 0 1-.5.5V0ZM9 8a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3H9ZM8 9a1 1 0 0 1-1-1H5a3 3 0 0 0 3 3V9ZM7 8a1 1 0 0 1 1-1V5a3 3 0 0 0-3 3h2Zm1-1a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2Z" class="icon-dark"/>`
};
const cyObjectGearX24 = {
  name: "objectGearX24",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" stroke="currentColor" stroke-width="2" d="M9.794 3.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1.417c0 .221.146.414.355.489.804.287 1.54.717 2.177 1.259a.524.524 0 0 0 .6.062l1.23-.71a.5.5 0 0 1 .683.184l1.5 2.598a.5.5 0 0 1-.184.683l-1.227.709a.524.524 0 0 0-.247.55 7.043 7.043 0 0 1 0 2.518c-.04.217.055.44.247.55l1.227.709a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.229-.71a.524.524 0 0 0-.6.063 6.993 6.993 0 0 1-2.177 1.26.525.525 0 0 0-.355.488V20.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.417a.525.525 0 0 0-.354-.489 6.993 6.993 0 0 1-2.178-1.259.524.524 0 0 0-.6-.063l-1.229.71a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.228-.709a.524.524 0 0 0 .246-.55 7.042 7.042 0 0 1 0-2.518.524.524 0 0 0-.246-.55l-1.228-.709a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.229.71c.191.11.432.08.6-.063a6.992 6.992 0 0 1 2.178-1.26.525.525 0 0 0 .354-.488V3.5Zm2 11.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z" class="icon-dark-stroke icon-light-fill" clip-rule="evenodd"/>`
};
const cyObjectGraduationCapX16 = {
  name: "objectGraduationCapX16",
  data: `<path fill="#D0D2E0" d="m8 3 7 3-2 .857V8.97a3 3 0 0 1-1.886 2.785l-2.371.949a2 2 0 0 1-1.486 0l-2.371-.949A3 3 0 0 1 3 8.97V6.857L1 6l7-3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 6.857 15 6 8 3 1 6l2 .857m10 0V8.97a3 3 0 0 1-1.886 2.785l-2.371.949a2 2 0 0 1-1.486 0l-2.371-.949A3 3 0 0 1 3 8.97V6.857m10 0L8 9 3 6.857" class="icon-dark"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M15.5 6v3" class="icon-dark"/>`
};
const cyObjectLetterX16 = {
  name: "objectLetterX16",
  data: `<path fill="#D0D2E0" d="M14.5 3h-13a.498.498 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.499.499 0 0 0-.5-.5Z" class="icon-light"/><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M14.842 3.135 8 9 1.158 3.135m13.684 0A.498.498 0 0 0 14.5 3h-13a.498.498 0 0 0-.342.135m13.684 0c.097.092.158.221.158.365v9a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-9c0-.144.06-.273.158-.365" class="icon-dark"/>`
};
const cyObjectMagicWandDarkModeX16 = {
  name: "objectMagicWandDarkModeX16",
  data: `<path fill="#D0D2E0" d="m5.5 3.5-2 2L6 8l2-2-2.5-2.5Z" class="icon-light"/><path fill="currentColor" d="m5.5 3.5.707-.707a1 1 0 0 0-1.414 0L5.5 3.5Zm8 8 .707.707a1 1 0 0 0 0-1.414l-.707.707Zm-2 2-.707.707a1 1 0 0 0 1.414 0L11.5 13.5Zm-8-8-.707-.707a1 1 0 0 0 0 1.414L3.5 5.5Zm9.293 5.293-2 2 1.414 1.414 2-2-1.414-1.414ZM4.207 6.207l2-2-1.414-1.414-2 2 1.414 1.414Zm8 6.586-5.5-5.5-1.414 1.414 5.5 5.5 1.414-1.414Zm-5.5-5.5-2.5-2.5-1.414 1.414 2.5 2.5 1.414-1.414ZM4.793 4.207l2.5 2.5 1.414-1.414-2.5-2.5-1.414 1.414Zm2.5 2.5 5.5 5.5 1.414-1.414-5.5-5.5-1.414 1.414Zm-.586 2 2-2-1.414-1.414-2 2 1.414 1.414Z" class="icon-dark"/><path stroke="#D0D2E0" stroke-linecap="round" stroke-linejoin="round" d="M5.5 1.5v-1m-5 5h1m1.172-2.828-.708-.708m0 7.072.708-.708m5.656-5.656.708-.708" class="icon-light"/>`
};
const cyObjectMagnifyingGlassX16 = {
  name: "objectMagnifyingGlassX16",
  data: `<path fill="#D0D2E0" d="M12 7c0 1.38-.56 2.63-1.464 3.536A5 5 0 1 1 12 7Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.536 10.536a5 5 0 1 0-7.071-7.071 5 5 0 0 0 7.07 7.07Zm0 0L14 14" class="icon-dark"/>`
};
const cyObjectOdometerX24 = {
  name: "objectOdometerX24",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M2 13C2 7.477 6.477 3 12 3s10 4.477 10 10a9.985 9.985 0 0 1-4 8H6a9.985 9.985 0 0 1-4-8Zm10 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="m6 21-.6.8a1 1 0 0 0 .6.2v-1Zm12 0v1a1 1 0 0 0 .6-.2L18 21Zm-6.707-8.707a1 1 0 0 0 1.414 1.414l-1.414-1.415Zm6.414-3.586a1 1 0 0 0-1.414-1.414l1.414 1.414ZM3 13a9 9 0 0 1 9-9V2C5.925 2 1 6.925 1 13h2Zm9-9a9 9 0 0 1 9 9h2c0-6.075-4.925-11-11-11v2ZM6.6 20.2A8.985 8.985 0 0 1 3 13H1c0 3.6 1.73 6.795 4.4 8.8l1.2-1.6ZM21 13a8.985 8.985 0 0 1-3.6 7.2l1.2 1.6c2.67-2.005 4.4-5.2 4.4-8.8h-2Zm-9 0v2a2 2 0 0 0 2-2h-2Zm0 0h-2a2 2 0 0 0 2 2v-2Zm0 0v-2a2 2 0 0 0-2 2h2Zm-6 9h12v-2H6v2Zm8-9c0-.552-.225-1.054-.586-1.415L12 13h2Zm-.586-1.415A1.997 1.997 0 0 0 12 11v2l1.414-1.415Zm-.707 2.122.707-.707L12 11.585l-.707.707 1.414 1.415Zm.707-.707 4.293-4.293-1.414-1.414L12 11.585 13.414 13Z" class="icon-dark"/><path fill="currentColor" fill-rule="evenodd" d="M5.68 8.094A8.048 8.048 0 0 1 7.094 6.68l.663.663a1 1 0 0 1-1.414 1.414l-.663-.663ZM4.062 14a8.079 8.079 0 0 1 0-2H5a1 1 0 1 1 0 2h-.938Zm15.876-2a8.07 8.07 0 0 1 0 2H19a1 1 0 1 1 0-2h.938ZM13 5.062V6a1 1 0 1 1-2 0v-.938a8.079 8.079 0 0 1 2 0Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyObjectPaperAirplaneX16 = {
  name: "objectPaperAirplaneX16",
  data: `<path fill="transparent" d="M15 8 1 1l2 7-2 7 14-7Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m3 8-2 7 14-7L1 1l2 7Zm0 0h3" class="icon-dark"/>`
};
const cyObjectPinModernX16 = {
  name: "objectPinModernX16",
  data: `<path fill="#D0D2E0" d="M12 6a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z" class="icon-light"/><path fill="currentColor" d="M7 14a1 1 0 1 0 2 0H7Zm0-4v4h2v-4H7Zm4-4a3 3 0 0 1-3 3v2a5 5 0 0 0 5-5h-2ZM8 9a3 3 0 0 1-3-3H3a5 5 0 0 0 5 5V9ZM5 6a3 3 0 0 1 3-3V1a5 5 0 0 0-5 5h2Zm3-3a3 3 0 0 1 3 3h2a5 5 0 0 0-5-5v2Z" class="icon-dark"/>`
};
const cyObjectRulerX16 = {
  name: "objectRulerX16",
  data: `<path fill="#D0D2E0" d="M5 11a.5.5 0 0 0-1 0h1Zm-1 1a.5.5 0 0 0 1 0H4Zm4-1a.5.5 0 0 0-1 0h1Zm-1 1a.5.5 0 0 0 1 0H7Zm3 0a.5.5 0 0 0 1 0h-1Zm2-1a.5.5 0 0 0 0-1v1Zm-1-4a.5.5 0 0 0 0 1V7Zm1 1a.5.5 0 0 0 0-1v1Zm-1-4a.5.5 0 0 0 0 1V4Zm1 1a.5.5 0 0 0 0-1v1Zm-1 5a.5.5 0 0 0 0 1v-1Zm0 1a.5.5 0 0 0-1 0h1Zm-7 0v1h1v-1H4Zm3 0v1h1v-1H7Zm4-3h1V7h-1v1Zm0-3h1V4h-1v1Zm0 6h1v-1h-1v1Zm-1 0v1h1v-1h-1Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 15V1h-5v9H1v5h14Zm0 0v-4" class="icon-dark"/>`
};
const cyObjectSlidersRoundX16 = {
  name: "objectSlidersRoundX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 12h5m7 0h-2M2 4h2m10 0H9m3 8v0a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v0a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v0ZM9 4v0a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v0m5 0v0a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v0m-1406-193.999h100v100h-100v-100Z" class="icon-dark"/>`
};
const cyObjectTagX16 = {
  name: "objectTagX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7.586 2a1 1 0 0 1 .707.294l5.5 5.5a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-5.5-5.5A1 1 0 0 1 2 7.587V3a1 1 0 0 1 1-1h4.586Z" class="icon-dark-stroke icon-light-fill" clip-rule="evenodd"/><circle cx="5.5" cy="5.501" r="1" fill="currentColor" class="icon-dark"/>`
};
const cyObjectTasselX16 = {
  name: "objectTasselX16",
  data: `<path fill="#D0D2E0" d="m8 3 7 3-2 .857V8.97a3 3 0 0 1-1.886 2.785l-2.371.949a2 2 0 0 1-1.486 0l-2.371-.949A3 3 0 0 1 3 8.97V6.857L1 6l7-3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 6.857 15 6 8 3 1 6l2 .857m10 0V8.97a3 3 0 0 1-1.886 2.785l-2.371.949a2 2 0 0 1-1.486 0l-2.371-.949A3 3 0 0 1 3 8.97V6.857m10 0L8 9 3 6.857" class="icon-dark"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M15.5 6v3" class="icon-dark-secondary"/>`
};
const cyOsAppleX16 = {
  name: "osAppleX16",
  data: `<g clip-path="url(#os-apple_x16_svg__a)"><path fill="currentColor" d="M13.61 5.454c-.093.072-1.732.996-1.732 3.048 0 2.375 2.085 3.215 2.148 3.236-.01.05-.332 1.15-1.1 2.27-.684.986-1.4 1.97-2.488 1.97s-1.368-.632-2.624-.632c-1.224 0-1.659.652-2.654.652-.995 0-1.69-.912-2.488-2.032C1.747 12.651 1 10.608 1 8.67c0-3.11 2.022-4.76 4.013-4.76 1.057 0 1.939.694 2.603.694.632 0 1.618-.736 2.82-.736.457 0 2.095.042 3.174 1.587ZM9.866 2.55c.497-.59.85-1.41.85-2.228 0-.114-.01-.23-.031-.322-.81.03-1.773.54-2.354 1.213-.456.518-.881 1.337-.881 2.168 0 .125.02.25.03.29.051.009.134.02.218.02.726 0 1.64-.486 2.168-1.14Z"/></g><defs><clipPath id="os-apple_x16_svg__a"><path fill="currentColor" d="M0 0h16v16H0z"/></clipPath></defs>`
};
const cyOsGenericX16 = {
  name: "osGenericX16",
  data: `<g clip-path="url(#os-generic_x16_svg__a)"><path fill="currentColor" fill-rule="evenodd" d="M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Zm6-8a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm-.026 8.004c0 1.618-.967 2.527-2.554 2.527-1.59 0-2.548-.914-2.548-2.527v-.008c0-1.582.993-2.527 2.548-2.527 1.56 0 2.554.931 2.554 2.527v.008Zm-3.274 0c0 .77.268 1.191.725 1.191.448 0 .72-.426.72-1.19v-.01c0-.75-.285-1.19-.725-1.19-.443 0-.72.44-.72 1.19v.01Zm8.428.831c0 1.046-.94 1.696-2.346 1.696-1.53 0-2.33-.655-2.44-1.621l-.004-.04h1.74l.01.035c.07.282.29.449.694.449.347 0 .562-.12.562-.313v-.004c0-.176-.145-.277-.545-.351l-.879-.163c-.962-.176-1.472-.69-1.472-1.441v-.005c0-1.006.857-1.608 2.268-1.608 1.503 0 2.267.747 2.267 1.63v.03H11.35l-.005-.039c-.026-.228-.242-.444-.628-.444-.33 0-.545.124-.545.33v.004c0 .172.123.269.562.352l.88.163c1.045.193 1.515.602 1.515 1.336v.004Z" class="icon-light" clip-rule="evenodd"/></g><defs><clipPath id="os-generic_x16_svg__a"><path fill="currentColor" d="M0 0h16v16H0z" class="icon-light"/></clipPath></defs>`
};
const cyOsLinuxX16 = {
  name: "osLinuxX16",
  data: `<g clip-path="url(#os-linux_x16_svg__a)"><path fill="currentColor" d="M7.758 4.389c0 .053-.053.053-.053.053h-.053c-.053 0-.053-.053-.106-.106 0 0-.053-.053-.053-.106s0-.053.053-.053l.106.053c.053.053.106.106.106.159Zm-.954-.53c0-.265-.106-.424-.265-.424 0 0 0 .053-.053.053v.106h.16c0 .106.052.16.052.265h.106Zm1.854-.265c.106 0 .16.106.212.265h.106c-.053-.053-.053-.106-.053-.159 0-.053 0-.106-.053-.159-.053-.053-.106-.106-.159-.106 0 0-.053.053-.106.053 0 .053.053.053.053.106Zm-1.589.848c-.053 0-.053 0-.053-.053s0-.106.053-.16c.106 0 .16-.052.16-.052.052 0 .052.053.052.053 0 .053-.053.106-.159.212H7.07Zm-.583-.053c-.211-.106-.264-.265-.264-.53 0-.159 0-.265.106-.37a.291.291 0 0 1 .264-.16c.106 0 .16.053.265.16.053.158.106.317.106.476v.106h.053v-.053c.053 0 .053-.106.053-.318 0-.159 0-.318-.106-.477-.106-.159-.212-.265-.424-.265a.398.398 0 0 0-.37.265c-.106.212-.127.371-.127.636 0 .212.074.424.286.636.053-.053.106-.053.158-.106Zm6.622 7.47c.053 0 .053-.022.053-.07 0-.116-.053-.254-.212-.407-.159-.16-.423-.26-.741-.303-.053-.005-.106-.005-.106-.005-.053-.01-.053-.01-.106-.01a2.891 2.891 0 0 1-.212-.027c.159-.493.212-.927.212-1.308 0-.53-.106-.9-.318-1.219-.212-.318-.424-.477-.689-.53-.053.053-.053.053-.053.106.265.106.53.318.69.636.158.371.211.689.211 1.06 0 .296-.053.736-.265 1.297-.212.085-.424.281-.583.588 0 .048 0 .075.053.075 0 0 .053-.048.106-.138.106-.09.16-.18.265-.27.16-.09.265-.138.424-.138.265 0 .53.037.689.111.212.07.318.143.37.228.053.08.106.154.16.223 0 .069.052.1.052.1ZM8.235 4.176c-.053-.053-.053-.159-.053-.265 0-.212 0-.318.106-.477.106-.106.212-.159.317-.159.16 0 .265.106.371.212.053.16.106.265.106.424 0 .265-.106.424-.318.477 0 0 .053.053.106.053.106 0 .16.053.265.106.053-.318.106-.53.106-.795 0-.318-.053-.53-.159-.689a.68.68 0 0 0-.53-.211.854.854 0 0 0-.476.158c-.106.16-.16.265-.16.424 0 .265.054.477.16.689.053 0 .106.053.159.053Zm.635.847c-.688.477-1.218.69-1.642.69-.37 0-.742-.16-1.06-.425.054.106.107.212.16.265l.317.318c.212.212.477.318.742.318.37 0 .795-.212 1.324-.583l.477-.318c.106-.106.212-.212.212-.37 0-.053 0-.106-.053-.106-.053-.106-.318-.265-.847-.424-.477-.212-.848-.318-1.06-.318-.159 0-.424.106-.795.318-.317.212-.53.424-.53.635 0 0 .054.053.107.16.317.264.635.423.953.423.424 0 .954-.212 1.642-.741v.106c.053 0 .053.052.053.052Zm1.219 10.701c.212.399.582.599 1.006.599.106 0 .212-.016.318-.048a.691.691 0 0 0 .265-.1c.053-.037.106-.074.159-.117.106-.037.106-.063.159-.09l.9-.779c.212-.169.424-.316.69-.445.211-.127.423-.211.529-.26a.946.946 0 0 0 .37-.19.547.547 0 0 0 .107-.307c0-.154-.106-.27-.212-.355a1.077 1.077 0 0 0-.318-.18c-.106-.037-.212-.122-.37-.265a1.428 1.428 0 0 1-.266-.578l-.053-.307c-.053-.143-.053-.249-.106-.307 0-.016 0-.021-.053-.021a.29.29 0 0 0-.212.138c-.106.09-.212.19-.317.296-.053.106-.212.201-.318.291a.952.952 0 0 1-.424.138c-.424 0-.636-.116-.795-.344-.106-.17-.159-.366-.212-.588-.106-.09-.159-.138-.264-.138-.265 0-.371.276-.371.832v1.648c0 .047-.053.153-.053.317-.053.165-.053.351-.053.562l-.106.588V15.725Zm-7.682-.281c.493.072 1.06.226 1.7.461.642.233 1.034.355 1.177.355.37 0 .678-.164.932-.482.053-.102.053-.223.053-.362 0-.5-.302-1.134-.906-1.902l-.36-.482a5.015 5.015 0 0 1-.28-.46 4.537 4.537 0 0 0-.292-.477 1.43 1.43 0 0 0-.323-.366 1.088 1.088 0 0 0-.472-.244c-.222.043-.376.117-.45.218a.648.648 0 0 0-.127.328c-.016.111-.048.185-.1.222a.966.966 0 0 1-.266.085c-.026 0-.074 0-.143.006h-.143c-.28 0-.471.031-.572.084a.777.777 0 0 0-.201.514c0 .085.021.228.064.43.042.195.063.354.063.465 0 .218-.063.435-.196.652-.132.228-.201.397-.201.518.053.206.402.35 1.043.435v.002Zm1.764-4.817c0-.366.096-.769.292-1.245.19-.477.381-.795.567-1.007-.01-.053-.037-.053-.08-.053l-.053-.053c-.153.16-.339.53-.561 1.06-.223.476-.34.916-.34 1.24 0 .238.059.444.165.624.116.175.397.43.842.753l.562.365c.598.52.916.88.916 1.091 0 .112-.053.223-.212.345a.502.502 0 0 1-.37.19c-.011 0-.016.011-.016.038 0 .005.053.11.164.317.222.302.7.45 1.335.45 1.165 0 2.066-.476 2.755-1.43 0-.264 0-.429-.053-.498v-.196c0-.344.053-.604.158-.773.106-.17.212-.249.371-.249.106 0 .212.037.318.117.053-.408.053-.763.053-1.081 0-.482 0-.88-.106-1.25a2.791 2.791 0 0 0-.265-.795l-.318-.477c-.106-.159-.159-.318-.264-.476-.053-.212-.106-.371-.106-.636-.16-.265-.265-.53-.424-.795-.106-.265-.212-.53-.318-.741l-.477.37c-.53.371-.953.53-1.324.53-.318 0-.583-.053-.742-.265l-.318-.265c0 .16-.053.371-.159.583l-.333.636c-.149.37-.228.582-.244.741-.021.106-.037.212-.048.212l-.397.795c-.43.795-.646 1.53-.646 2.14 0 .122.01.25.031.376a.785.785 0 0 1-.355-.688Zm3.793 5.011c-.688 0-1.218.093-1.589.278V15.9c-.265.318-.561.482-.974.482-.26 0-.668-.1-1.219-.302a14.385 14.385 0 0 0-1.478-.433 3.174 3.174 0 0 0-.291-.055 11.134 11.134 0 0 1-.408-.072 3.091 3.091 0 0 1-.376-.109.93.93 0 0 1-.318-.162.3.3 0 0 1-.11-.227c0-.084.019-.175.055-.271.034-.059.07-.117.108-.17.037-.058.069-.111.09-.164a.773.773 0 0 0 .074-.148.818.818 0 0 0 .074-.313 5.61 5.61 0 0 0-.063-.493 4.775 4.775 0 0 1-.064-.524c0-.233.053-.419.17-.551.116-.132.227-.201.344-.201h.61c.047 0 .121-.027.232-.09.037-.085.07-.154.09-.218.027-.063.037-.11.048-.132.01-.032.021-.064.032-.09a.735.735 0 0 1 .085-.122.32.32 0 0 1-.064-.207c0-.058 0-.11.01-.143 0-.19.09-.46.281-.815l.186-.334c.153-.286.27-.498.355-.71.09-.212.185-.53.291-.954.085-.37.286-.741.604-1.112l.397-.477c.276-.318.456-.582.556-.794.101-.212.154-.477.154-.689 0-.106-.026-.424-.085-.954-.053-.53-.08-1.06-.08-1.536 0-.37.033-.636.102-.9.068-.265.19-.53.37-.742.16-.212.371-.424.689-.53A3.522 3.522 0 0 1 7.964.48c.16 0 .318 0 .477.053.16 0 .371.053.636.16.212.105.424.211.583.37.212.159.37.424.53.689.105.317.211.635.264 1.06.053.264.053.529.106.9 0 .318.053.53.053.688.053.16.053.371.106.636.053.212.106.424.212.583.106.212.212.424.37.636.16.264.372.53.584.847.476.53.847 1.113 1.06 1.695.264.53.423 1.219.423 1.955a3.6 3.6 0 0 1-.159 1.065c.106 0 .159.042.212.116.053.075.106.233.159.482l.053.393a.623.623 0 0 0 .265.323c.106.095.212.175.37.238.106.053.265.127.371.223a.471.471 0 0 1 .16.333c0 .18-.054.313-.16.408a.83.83 0 0 1-.37.228c-.106.053-.318.159-.636.308a5.77 5.77 0 0 0-.795.572l-.53.451a2.934 2.934 0 0 1-.582.445c-.16.096-.371.143-.583.143l-.37-.042c-.425-.111-.69-.323-.848-.646-.848-.103-1.537-.154-1.96-.154"/></g><defs><clipPath id="os-linux_x16_svg__a"><path fill="currentColor" d="M0 0h16v16H0z"/></clipPath></defs>`
};
const cyOsWindowsX16 = {
  name: "osWindowsX16",
  data: `<path fill="#00A4EF" d="M7.6 0H0v7.6h7.6V0ZM16 0H8.4v7.6H16V0ZM7.6 8.4H0V16h7.6V8.4ZM16 8.4H8.4V16H16V8.4Z"/>`
};
const cySecurityKeyX16 = {
  name: "securityKeyX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M1.861 7.354a2 2 0 0 1 .273-2.488l2.732-2.732a2 2 0 0 1 2.488-.273l2.502 1.593a2 2 0 0 1 .642 2.716L10 7l5 5v3h-3l-1-2.5H9L8 10H7l-.83.498a2 2 0 0 1-2.716-.642L1.861 7.354Z" class="icon-light-fill icon-dark-stroke"/><circle cx="5.752" cy="5.752" r="1.002" fill="currentColor" class="icon-dark"/>`
};
const cySecurityKeyX24 = {
  name: "securityKeyX24",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M10.038 2.475a3 3 0 0 0-3.757.394L2.87 6.28a3 3 0 0 0-.394 3.757L5.25 14.31a3 3 0 0 0 4.316.765L11 14l1.5 3.5 1.5-1 1.5 3.5 1.5-1s1 1.7 1.5 2c2.5 1.5 3.5-2 3.5-2l-8-8 1.075-1.433a3 3 0 0 0-.765-4.316l-4.272-2.776ZM8 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-light-fill icon-dark-stroke" clip-rule="evenodd"/>`
};
const cySecurityLockLockedX16 = {
  name: "securityLockLockedX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M2 13a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v5Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 6H4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-1M5 6V4a3 3 0 0 1 3-3v0a3 3 0 0 1 3 3v2M5 6h6m-3 4v1" class="icon-dark"/>`
};
const cySecurityShieldCrossX16 = {
  name: "securityShieldCrossX16",
  data: `<path fill="#D0D2E0" d="M8 1S5.5 3 2 3v4h6V1ZM2 11c1 3 6 4 6 4V7H2v4Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 15s5-1 6-4V7m-6 8s-5-1-6-4V7m6 8V7m0-6S5.5 3 2 3v4m6-6s2.5 2 6 2v4M8 1v6m6 0H8M2 7h6" class="icon-dark"/>`
};
const cySecurityShieldCrossX24 = {
  name: "securityShieldCrossX24",
  data: `<path fill="#D0D2E0" d="M12 2S8 5 3 5v5h9V2ZM3 16c1 4.5 9 6 9 6V10H3v6Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 22s8-1.5 9-6v-6m-9 12s-8-1.5-9-6v-6m9 12V10m0-8S8 5 3 5v5m9-8s4 3 9 3v5m-9-8v8m9 0h-9m-9 0h9" class="icon-dark"/>`
};
const cyShapeHeartX16 = {
  name: "shapeHeartX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M4.448 2a3.427 3.427 0 0 0-2.432 1.02l-.007-.004A3.503 3.503 0 0 0 1 5.479c0 .924.363 1.81 1.01 2.463l5.984 6.05.002-.002.01.01 5.985-6.05A3.502 3.502 0 0 0 15 5.485c0-.923-.363-1.81-1.01-2.463a3.413 3.413 0 0 0-4.875-.003L8.002 4.147 6.883 3.015A3.427 3.427 0 0 0 4.448 2Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyShapeHeartX24 = {
  name: "shapeHeartX24",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M6.673 3a5.14 5.14 0 0 0-3.649 1.53l-.01-.006A5.254 5.254 0 0 0 1.5 8.22c0 1.385.545 2.714 1.514 3.694l8.977 9.076.004-.003.014.014 8.977-9.076A5.254 5.254 0 0 0 22.5 8.23a5.254 5.254 0 0 0-1.514-3.695A5.167 5.167 0 0 0 19.31 3.4a5.12 5.12 0 0 0-5.636 1.131l-1.67 1.688-1.678-1.697A5.14 5.14 0 0 0 6.673 3Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyShapeLightningBoltX16 = {
  name: "shapeLightningBoltX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 1v5h5.5L8 15v-5H2.5L8 1Z" class="icon-light-fill icon-dark-stroke"/>`
};
const cyShapeLightningBoltX24 = {
  name: "shapeLightningBoltX24",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10V2L5 14h7v8l7-12h-7Z" class="icon-light-fill icon-dark-stroke"/>`
};
const cyShapeMoonCrescentX16 = {
  name: "shapeMoonCrescentX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M14.382 10.881a8 8 0 0 1-9.263-9.263 7.001 7.001 0 1 0 9.262 9.263Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="m14.382 10.881.91.412a1 1 0 0 0-1.082-1.397l.171.985ZM5.119 1.62l.985.171A1 1 0 0 0 4.707.707l.412.912Zm9.091 8.277A7.051 7.051 0 0 1 13 10v2c.529 0 1.048-.046 1.553-.134l-.343-1.97ZM13 10a7 7 0 0 1-7-7H4a9 9 0 0 0 9 9v-2ZM6 3c0-.413.036-.818.104-1.21l-1.97-.343A9.05 9.05 0 0 0 4 3h2ZM2 8a6.001 6.001 0 0 1 3.53-5.47L4.708.707A8.001 8.001 0 0 0 0 8h2Zm6 6a6 6 0 0 1-6-6H0a8 8 0 0 0 8 8v-2Zm5.47-3.53A6.001 6.001 0 0 1 8 14v2a8.001 8.001 0 0 0 7.293-4.707l-1.823-.824Z" class="icon-dark"/>`
};
const cyShapeStarX16 = {
  name: "shapeStarX16",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="m8 1.345 2.345 4.027 4.555.986-3.105 3.475.47 4.636L8 12.59l-4.264 1.88.47-4.637L1.1 6.358l4.555-.986L8 1.345Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyShapeStarX24 = {
  name: "shapeStarX24",
  data: `<path fill="#D0D2E0" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="m12 2 3.569 6.128 6.93 1.5-4.724 5.288.714 7.056L12 19.112l-6.49 2.86.715-7.056L1.5 9.628l6.93-1.5L12 2Z" class="icon-dark-stroke icon-light-fill"/>`
};
const cyShapeSunLongX16 = {
  name: "shapeSunLongX16",
  data: `<path fill="#D0D2E0" d="M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" class="icon-light"/><path fill="currentColor" d="M3.757 2.343a1 1 0 1 0-1.414 1.414l1.414-1.414Zm9.9 1.414a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-1.414 9.9a1 1 0 0 0 1.414-1.414l-1.414 1.414Zm-9.9-1.414a1 1 0 0 0 1.414 1.414l-1.414-1.414ZM9 1a1 1 0 0 0-2 0h2Zm6 8a1 1 0 1 0 0-2v2Zm-8 6a1 1 0 1 0 2 0H7ZM1 7a1 1 0 0 0 0 2V7Zm1.343-3.243 1.414 1.415 1.415-1.415-1.415-1.414-1.414 1.414Zm9.9-1.414-1.415 1.414 1.415 1.415 1.414-1.415-1.414-1.414Zm-1.415 9.9 1.415 1.414 1.414-1.414-1.414-1.415-1.415 1.415Zm-7.07-1.415-1.415 1.415 1.414 1.414 1.415-1.414-1.415-1.415ZM9 3V1H7v2h2Zm4 6h2V7h-2v2Zm-6 4v2h2v-2H7ZM3 7H1v2h2V7Zm7 1a2 2 0 0 1-2 2v2a4 4 0 0 0 4-4h-2Zm-2 2a2 2 0 0 1-2-2H4a4 4 0 0 0 4 4v-2ZM6 8a2 2 0 0 1 2-2V4a4 4 0 0 0-4 4h2Zm2-2a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2Z" class="icon-dark"/>`
};
const cySocialDiscordSolidX16 = {
  name: "socialDiscordSolidX16",
  data: `<path fill="currentColor" d="M13.545 3.069a13.513 13.513 0 0 0-3.257-.978.05.05 0 0 0-.052.024c-.141.242-.297.558-.406.806a12.576 12.576 0 0 0-3.658 0 8.054 8.054 0 0 0-.412-.806.052.052 0 0 0-.052-.024c-1.143.19-2.236.524-3.257.978a.046.046 0 0 0-.021.017c-2.074 3-2.643 5.927-2.364 8.818.001.014.01.027.02.036a13.443 13.443 0 0 0 3.996 1.955.053.053 0 0 0 .056-.018c.308-.407.582-.836.818-1.287a.048.048 0 0 0-.028-.068 8.874 8.874 0 0 1-1.248-.576.049.049 0 0 1-.005-.082 6.78 6.78 0 0 0 .248-.189.05.05 0 0 1 .051-.006c2.619 1.157 5.454 1.157 8.041 0a.05.05 0 0 1 .053.006c.08.064.164.128.248.189a.049.049 0 0 1-.004.082 8.318 8.318 0 0 1-1.249.575.049.049 0 0 0-.027.07c.24.45.514.879.817 1.286a.052.052 0 0 0 .056.018 13.399 13.399 0 0 0 4.001-1.955.05.05 0 0 0 .021-.036c.334-3.341-.559-6.244-2.365-8.817a.04.04 0 0 0-.021-.018Zm-8.198 7.075c-.789 0-1.438-.701-1.438-1.562 0-.86.637-1.56 1.438-1.56.807 0 1.45.706 1.438 1.56 0 .861-.637 1.562-1.438 1.562Zm5.316 0c-.788 0-1.438-.701-1.438-1.562 0-.86.637-1.56 1.438-1.56.807 0 1.45.706 1.438 1.56 0 .861-.63 1.562-1.438 1.562Z" class="icon-dark"/>`
};
const cySocialEmailX16 = {
  name: "socialEmailX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M11 5.25V8.5a2 2 0 0 0 3.92.562A7 7 0 1 0 12 13.745M10.5 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" class="icon-dark"/>`
};
const cySocialFacebookSolidX16 = {
  name: "socialFacebookSolidX16",
  data: `<path fill="currentColor" d="M16 8a8 8 0 1 0-9.25 7.903v-5.59H4.719V8H6.75V6.237c0-2.005 1.194-3.112 3.022-3.112.875 0 1.79.156 1.79.156V5.25h-1.008c-.994 0-1.304.617-1.304 1.25V8h2.219l-.355 2.313H9.25v5.59A8.002 8.002 0 0 0 16 8Z" class="icon-dark"/>`
};
const cySocialGithubSolidX16 = {
  name: "socialGithubSolidX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M8 1.002a7 7 0 0 0-2.213 13.642c.35.065.479-.152.479-.337 0-.167-.007-.719-.01-1.303-1.948.424-2.358-.826-2.358-.826-.319-.81-.778-1.025-.778-1.025-.635-.434.049-.425.049-.425.703.05 1.073.721 1.073.721.624 1.07 1.638.76 2.037.582.063-.453.244-.762.444-.937-1.555-.176-3.19-.776-3.19-3.459 0-.764.275-1.389.722-1.878-.073-.177-.313-.889.067-1.853 0 0 .588-.188 1.926.718a6.714 6.714 0 0 1 1.751-.236c.595.003 1.195.08 1.754.236 1.336-.905 1.923-.718 1.923-.718.38.965.142 1.677.07 1.853.448.49.72 1.114.72 1.878 0 2.689-1.639 3.28-3.197 3.453.251.217.476.643.476 1.296 0 .936-.008 1.69-.008 1.92 0 .187.126.405.48.337A7 7 0 0 0 8 1v.002Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cySocialLinkedinSolidX16 = {
  name: "socialLinkedinSolidX16",
  data: `<path fill="currentColor" d="M16 1.176v13.647A1.176 1.176 0 0 1 14.823 16H1.176A1.176 1.176 0 0 1 0 14.823V1.176A1.176 1.176 0 0 1 1.176 0h13.647A1.176 1.176 0 0 1 16 1.176ZM4.706 6.118H2.353v7.53h2.353v-7.53Zm.212-2.589a1.355 1.355 0 0 0-1.346-1.364h-.043a1.365 1.365 0 1 0 0 2.73 1.355 1.355 0 0 0 1.389-1.323v-.043Zm8.73 5.544c0-2.264-1.44-3.144-2.871-3.144a2.682 2.682 0 0 0-2.382 1.215H8.33V6.118H6.118v7.53H8.47V9.641a1.562 1.562 0 0 1 1.411-1.684h.09c.748 0 1.303.47 1.303 1.656v4.033h2.353l.02-4.574Z" class="icon-dark"/>`
};
const cySocialTwitterSolidX16 = {
  name: "socialTwitterSolidX16",
  data: `<path fill="currentColor" d="M14.355 4.741c.01.142.01.284.01.427 0 4.335-3.299 9.33-9.33 9.33A9.266 9.266 0 0 1 0 13.024c.264.03.518.041.792.041a6.567 6.567 0 0 0 4.07-1.401 3.285 3.285 0 0 1-3.065-2.274c.203.03.406.05.62.05.294 0 .588-.04.862-.111A3.28 3.28 0 0 1 .65 6.112v-.04c.437.243.945.395 1.483.415A3.277 3.277 0 0 1 .67 3.757c0-.61.162-1.168.447-1.655a9.32 9.32 0 0 0 6.761 3.431 3.702 3.702 0 0 1-.081-.751 3.278 3.278 0 0 1 3.28-3.28c.943 0 1.796.397 2.395 1.036a6.457 6.457 0 0 0 2.081-.792 3.27 3.27 0 0 1-1.441 1.807c.66-.07 1.3-.253 1.888-.507a7.048 7.048 0 0 1-1.645 1.695Z" class="icon-dark"/>`
};
const cySocialYoutubeSolidX16 = {
  name: "socialYoutubeSolidX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M14.25 2.575c.69.184 1.231.725 1.415 1.414C16 5.237 16 7.84 16 7.84s0 2.604-.335 3.852a2.004 2.004 0 0 1-1.414 1.414c-1.247.335-6.251.335-6.251.335s-5.004 0-6.25-.335a2.004 2.004 0 0 1-1.415-1.414C0 10.444 0 7.84 0 7.84s0-2.603.335-3.85a2.004 2.004 0 0 1 1.414-1.415C2.996 2.24 8 2.24 8 2.24s5.004 0 6.25.335ZM10.556 7.84l-4.157 2.4v-4.8l4.157 2.4Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusCancelledOutlineX16 = {
  name: "statusCancelledOutlineX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 8h4m-2 6A6 6 0 1 1 8 2a6 6 0 0 1 0 12Z" class="icon-dark"/>`
};
const cyStatusCancelledOutlineX24 = {
  name: "statusCancelledOutlineX24",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M8 12h8m-4 9a9 9 0 1 1 0-18 9 9 0 0 1 0 18Z" class="icon-dark"/>`
};
const cyStatusCancelledSimpleX4 = {
  name: "statusCancelledSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusCancelledSimpleX8 = {
  name: "statusCancelledSimpleX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M1 4h6" class="icon-dark"/>`
};
const cyStatusCancelledSolidX12 = {
  name: "statusCancelledSolidX12",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M2 6h8" class="icon-dark"/>`
};
const cyStatusCancelledSolidX16 = {
  name: "statusCancelledSolidX16",
  data: `<path fill="#AFB3C7" fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8Zm4-1a1 1 0 0 0 0 2h6a1 1 0 1 0 0-2H5Z" clip-rule="evenodd"/>`
};
const cyStatusCancelledSolidX24 = {
  name: "statusCancelledSolidX24",
  data: `<path fill="#AFB3C7" fill-rule="evenodd" d="M2 12c0 5.523 4.477 10 10 10s10-4.477 10-10S17.523 2 12 2 2 6.477 2 12Zm6-1a1 1 0 1 0 0 2h8a1 1 0 1 0 0-2H8Z" clip-rule="evenodd"/>`
};
const cyStatusErroredOutlineX16 = {
  name: "statusErroredOutlineX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Zm6-8a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm1 5a1 1 0 0 0-2 0v3a1 1 0 0 0 2 0V5Zm-1 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusErroredOutlineX24 = {
  name: "statusErroredOutlineX24",
  data: `<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"/><path fill="currentColor" fill-rule="evenodd" d="M12 7a1 1 0 0 1 1 1v5a1 1 0 1 1-2 0V8a1 1 0 0 1 1-1Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M13 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyStatusErroredSimpleX4 = {
  name: "statusErroredSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusErroredSimpleX8 = {
  name: "statusErroredSimpleX8",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M4 0a1 1 0 0 1 1 1v3a1 1 0 0 1-2 0V1a1 1 0 0 1 1-1Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M5 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyStatusErroredSolidX12 = {
  name: "statusErroredSolidX12",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M6 1a1 1 0 0 1 1 1v5a1 1 0 0 1-2 0V2a1 1 0 0 1 1-1Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M7 10a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyStatusErroredSolidX16 = {
  name: "statusErroredSolidX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM9 5a1 1 0 0 0-2 0v3a1 1 0 0 0 2 0V5Zm-1 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusErroredSolidX24 = {
  name: "statusErroredSolidX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Zm1-14a1 1 0 1 0-2 0v5a1 1 0 1 0 2 0V8Zm-1 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusFailedOutlineX16 = {
  name: "statusFailedOutlineX16",
  data: `<path fill="currentColor" d="M6.707 5.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414l-1.414 1.414Zm1.414-4a1 1 0 0 0-1.414-1.414l1.414 1.414ZM5.293 9.293a1 1 0 0 0 1.414 1.414L5.293 9.293ZM13 8a5 5 0 0 1-5 5v2a7 7 0 0 0 7-7h-2Zm-5 5a5 5 0 0 1-5-5H1a7 7 0 0 0 7 7v-2ZM3 8a5 5 0 0 1 5-5V1a7 7 0 0 0-7 7h2Zm5-5a5 5 0 0 1 5 5h2a7 7 0 0 0-7-7v2ZM5.293 6.707l2 2 1.414-1.414-2-2-1.414 1.414Zm2 2 2 2 1.414-1.414-2-2-1.414 1.414Zm2-3.414-2 2 1.414 1.414 2-2-1.414-1.414Zm-2 2-2 2 1.414 1.414 2-2-1.414-1.414Z" class="icon-dark"/>`
};
const cyStatusFailedOutlineX24 = {
  name: "statusFailedOutlineX24",
  data: `<path fill="currentColor" d="M9.707 8.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm4.586 7.414a1 1 0 0 0 1.414-1.414l-1.414 1.414Zm1.414-6a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-7.414 4.586a1 1 0 1 0 1.414 1.414l-1.414-1.414Zm0-4.586 3 3 1.414-1.414-3-3-1.414 1.414Zm3 3 3 3 1.414-1.414-3-3-1.414 1.414Zm3-4.414-3 3 1.414 1.414 3-3-1.414-1.414Zm-3 3-3 3 1.414 1.414 3-3-1.414-1.414ZM20 12a8 8 0 0 1-8 8v2c5.523 0 10-4.477 10-10h-2Zm-8 8a8 8 0 0 1-8-8H2c0 5.523 4.477 10 10 10v-2Zm-8-8a8 8 0 0 1 8-8V2C6.477 2 2 6.477 2 12h2Zm8-8a8 8 0 0 1 8 8h2c0-5.523-4.477-10-10-10v2Z" class="icon-dark"/>`
};
const cyStatusFailedSimpleX12 = {
  name: "statusFailedSimpleX12",
  data: `<path fill="currentColor" d="M3.707 2.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm4.586 7.414a1 1 0 0 0 1.414-1.414L8.293 9.707Zm1.414-6a1 1 0 0 0-1.414-1.414l1.414 1.414ZM2.293 8.293a1 1 0 0 0 1.414 1.414L2.293 8.293Zm0-4.586 6 6 1.414-1.414-6-6-1.414 1.414Zm6-1.414-6 6 1.414 1.414 6-6-1.414-1.414Z" class="icon-dark"/>`
};
const cyStatusFailedSimpleX16 = {
  name: "statusFailedSimpleX16",
  data: `<path fill="currentColor" d="M4.707 3.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm6.586 9.414a1 1 0 0 0 1.414-1.414l-1.414 1.414Zm1.414-8a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-9.414 6.586a1 1 0 1 0 1.414 1.414l-1.414-1.414Zm0-6.586 4 4 1.414-1.414-4-4-1.414 1.414Zm4 4 4 4 1.414-1.414-4-4-1.414 1.414Zm4-5.414-4 4 1.414 1.414 4-4-1.414-1.414Zm-4 4-4 4 1.414 1.414 4-4-1.414-1.414Z" class="icon-dark"/>`
};
const cyStatusFailedSimpleX24 = {
  name: "statusFailedSimpleX24",
  data: `<path fill="currentColor" d="M6.707 5.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm10.586 13.414a1 1 0 0 0 1.414-1.414l-1.414 1.414Zm1.414-12a1 1 0 0 0-1.414-1.414l1.414 1.414ZM5.293 17.293a1 1 0 1 0 1.414 1.414l-1.414-1.414Zm0-10.586 6 6 1.414-1.414-6-6-1.414 1.414Zm6 6 6 6 1.414-1.414-6-6-1.414 1.414Zm6-7.414-6 6 1.414 1.414 6-6-1.414-1.414Zm-6 6-6 6 1.414 1.414 6-6-1.414-1.414Z" class="icon-dark"/>`
};
const cyStatusFailedSimpleX4 = {
  name: "statusFailedSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusFailedSimpleX8 = {
  name: "statusFailedSimpleX8",
  data: `<path fill="currentColor" d="M2.707 1.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414L5.293 6.707Zm1.414-4a1 1 0 0 0-1.414-1.414l1.414 1.414ZM1.293 5.293a1 1 0 0 0 1.414 1.414L1.293 5.293Zm0-2.586 4 4 1.414-1.414-4-4-1.414 1.414Zm4-1.414-4 4 1.414 1.414 4-4-1.414-1.414Z" class="icon-dark"/>`
};
const cyStatusFailedSolidX16 = {
  name: "statusFailedSolidX16",
  data: `<circle cx="8" cy="8" r="7" fill="currentColor" class="icon-dark"/><path fill="#fff" d="M6.707 5.293a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414l-1.414 1.414Zm1.414-4a1 1 0 0 0-1.414-1.414l1.414 1.414ZM5.293 9.293a1 1 0 0 0 1.414 1.414L5.293 9.293Zm0-2.586 4 4 1.414-1.414-4-4-1.414 1.414Zm4-1.414-4 4 1.414 1.414 4-4-1.414-1.414Z"/>`
};
const cyStatusFailedSolidX24 = {
  name: "statusFailedSolidX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10ZM9.707 8.293a1 1 0 0 0-1.414 1.414L10.586 12l-2.293 2.293a1 1 0 1 0 1.414 1.414L12 13.414l2.293 2.293a1 1 0 0 0 1.414-1.414L13.414 12l2.293-2.293a1 1 0 0 0-1.414-1.414L12 10.586 9.707 8.293Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusFlakyX16 = {
  name: "statusFlakyX16",
  data: `<path fill="#F5F4D7" d="M1 12V4a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3Z" class="icon-light"/><path stroke="#963F00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.5 5h-3v3.5m0 2.5V8.5m0 0h2" class="icon-dark"/>`
};
const cyStatusFlakyX24 = {
  name: "statusFlakyX24",
  data: `<path fill="#F5F4D7" d="M2 18V6a4 4 0 0 1 4-4h12a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4Z" class="icon-light"/><path stroke="#963F00" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 8h-4v4.5m0 3.5v-3.5m0 0h3" class="icon-dark"/>`
};
const cyStatusPassedOutlineX16 = {
  name: "statusPassedOutlineX16",
  data: `<circle cx="8" cy="8" r="6" stroke="currentColor" stroke-width="2" class="icon-dark"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m10 6-2.5 4L6 8.5" class="icon-dark"/>`
};
const cyStatusPassedOutlineX24 = {
  name: "statusPassedOutlineX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm3.864 7.504a1 1 0 0 0-1.728-1.008l-2.846 4.88-1.583-1.583a1 1 0 0 0-1.414 1.414l2.5 2.5a1 1 0 0 0 1.57-.203l3.5-6Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusPassedSimpleX12 = {
  name: "statusPassedSimpleX12",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 3 5 9 3 6.5" class="icon-dark"/>`
};
const cyStatusPassedSimpleX16 = {
  name: "statusPassedSimpleX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8.667 7.333 12 12 4" class="icon-dark"/>`
};
const cyStatusPassedSimpleX24 = {
  name: "statusPassedSimpleX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M15.504 8.136a1 1 0 0 1 .36 1.368l-3.5 6a1 1 0 0 1-1.571.203l-2.5-2.5a1 1 0 1 1 1.414-1.414l1.583 1.583 2.846-4.88a1 1 0 0 1 1.368-.36Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusPassedSimpleX4 = {
  name: "statusPassedSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPassedSimpleX8 = {
  name: "statusPassedSimpleX8",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 2 3.5 6 2 4.5" class="icon-dark"/>`
};
const cyStatusPassedSolidX16 = {
  name: "statusPassedSolidX16",
  data: `<circle cx="8" cy="8" r="7" fill="currentColor" class="icon-dark"/><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m10 6-2.5 4L6 8.5"/>`
};
const cyStatusPassedSolidX24 = {
  name: "statusPassedSolidX24",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Zm3.864-12.496a1 1 0 0 0-1.728-1.008l-2.846 4.88-1.583-1.583a1 1 0 0 0-1.414 1.414l2.5 2.5a1 1 0 0 0 1.57-.203l3.5-6Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyStatusPendingOutlineX12 = {
  name: "statusPendingOutlineX12",
  data: `<path stroke="currentColor" stroke-width="2" d="M4.47 2.305a4 4 0 1 0 3.061 0" class="icon-dark"/>`
};
const cyStatusPendingOutlineX16 = {
  name: "statusPendingOutlineX16",
  data: `<path stroke="currentColor" stroke-width="2" d="M5.706 2.46a5.998 5.998 0 1 0 4.59 0" class="icon-dark"/>`
};
const cyStatusPendingOutlineX24 = {
  name: "statusPendingOutlineX24",
  data: `<path stroke="currentColor" stroke-width="2" d="M8.555 3.685a8.999 8.999 0 1 0 6.887 0" class="icon-dark"/>`
};
const cyStatusPendingSimpleX4 = {
  name: "statusPendingSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusPendingSimpleX8 = {
  name: "statusPendingSimpleX8",
  data: `<path stroke="currentColor" stroke-width="2" d="M2.852 1.228a3 3 0 1 0 2.296 0" class="icon-dark"/>`
};
const cyStatusPlaceholderSimpleX4 = {
  name: "statusPlaceholderSimpleX4",
  data: `<circle cx="2" cy="2" r="2" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSimpleX8 = {
  name: "statusPlaceholderSimpleX8",
  data: `<circle cx="4" cy="4" r="3" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSolidX12 = {
  name: "statusPlaceholderSolidX12",
  data: `<circle cx="6" cy="6" r="5" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSolidX16 = {
  name: "statusPlaceholderSolidX16",
  data: `<circle cx="8" cy="8" r="7" fill="currentColor" class="icon-dark"/>`
};
const cyStatusPlaceholderSolidX24 = {
  name: "statusPlaceholderSolidX24",
  data: `<circle cx="12" cy="12" r="10" fill="currentColor" class="icon-dark"/>`
};
const cyStatusQueuedOutlineX12 = {
  name: "statusQueuedOutlineX12",
  data: `<circle cx="6" cy="6" r="4" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"/>`
};
const cyStatusQueuedOutlineX16 = {
  name: "statusQueuedOutlineX16",
  data: `<circle cx="8" cy="8" r="6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"/>`
};
const cyStatusQueuedOutlineX24 = {
  name: "statusQueuedOutlineX24",
  data: `<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" class="icon-dark"/>`
};
const cyStatusQueuedSimpleX4 = {
  name: "statusQueuedSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusQueuedSimpleX8 = {
  name: "statusQueuedSimpleX8",
  data: `<circle cx="4" cy="4" r="3" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"/>`
};
const cyStatusRunningOutlineX12 = {
  name: "statusRunningOutlineX12",
  data: `<circle cx="6" cy="6" r="4" stroke="#E1E3ED" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><circle cx="6" cy="6" r="4" stroke="currentColor" stroke-dasharray="5 20" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="25;0"/></circle>`
};
const cyStatusRunningOutlineX16 = {
  name: "statusRunningOutlineX16",
  data: `<circle cx="8" cy="8" r="6" stroke="#E1E3ED" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><circle cx="8" cy="8" r="6" stroke="currentColor" stroke-dasharray="10 28" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="36.6;0"/></circle>`
};
const cyStatusRunningOutlineX24 = {
  name: "statusRunningOutlineX24",
  data: `<circle cx="12" cy="12" r="9" stroke="#E1E3ED" stroke-width="2" class="icon-light"/><circle cx="12" cy="12" r="9" stroke="currentColor" stroke-dasharray="15 42" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="57;0"/></circle>`
};
const cyStatusRunningSimpleX4 = {
  name: "statusRunningSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" fill="#C5C9FD" stroke="currentColor" class="icon-dark-stroke icon-light-fill"><animate attributeName="stroke-width" dur="1.5s" repeatCount="indefinite" values="2;1;2"/><animate attributeName="r" dur="1.5s" repeatCount="indefinite" values="1;1.5;1"/></circle>`
};
const cyStatusRunningSimpleX8 = {
  name: "statusRunningSimpleX8",
  data: `<circle cx="4" cy="4" r="3" stroke="#E1E3ED" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-light"/><circle cx="4" cy="4" r="3" stroke="currentColor" stroke-dasharray="5 14" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark"><animate attributeName="stroke-dashoffset" dur="1s" repeatCount="indefinite" values="18.3;0"/></circle>`
};
const cyStatusSkippedOutlineX12 = {
  name: "statusSkippedOutlineX12",
  data: `<path stroke="currentColor" stroke-width="2" d="M3.172 8.828a4 4 0 0 0 5.656-5.656M3.172 8.828a4 4 0 0 1 5.656-5.656M3.172 8.828l5.656-5.656" class="icon-dark"/>`
};
const cyStatusSkippedOutlineX16 = {
  name: "statusSkippedOutlineX16",
  data: `<path stroke="currentColor" stroke-width="2" d="M3.757 12.243a6 6 0 1 0 8.486-8.486m-8.486 8.486a6 6 0 1 1 8.486-8.486m-8.486 8.486 8.486-8.486" class="icon-dark"/>`
};
const cyStatusSkippedOutlineX24 = {
  name: "statusSkippedOutlineX24",
  data: `<path stroke="currentColor" stroke-width="2" d="M5.636 18.364A9 9 0 0 0 18.364 5.636M5.636 18.364A9 9 0 0 1 18.364 5.636M5.636 18.364 18.364 5.636" class="icon-dark"/>`
};
const cyStatusSkippedSimpleX4 = {
  name: "statusSkippedSimpleX4",
  data: `<circle cx="2" cy="2" r="1.5" stroke="currentColor" class="icon-dark"/>`
};
const cyStatusSkippedSimpleX8 = {
  name: "statusSkippedSimpleX8",
  data: `<path stroke="currentColor" stroke-width="2" d="M1.879 6.121A3 3 0 0 0 6.12 1.88M1.88 6.12A3 3 0 1 1 6.12 1.88M1.88 6.12 6.12 1.88" class="icon-dark"/>`
};
const cyTechnologyBranchHX16 = {
  name: "technologyBranchHX16",
  data: `<path fill="currentColor" d="M3 12h3v-2H3v2Zm3 0h7v-2H6v2Zm4.236-6H13V4h-2.764v2Zm-3.342 5.447 2.448-4.894-1.79-.895-2.446 4.895 1.788.894ZM14 5v2a2 2 0 0 0 2-2h-2Zm0 0h-2a2 2 0 0 0 2 2V5Zm0 0V3a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2Zm0 6v2a2 2 0 0 0 2-2h-2Zm0 0h-2a2 2 0 0 0 2 2v-2Zm0 0V9a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2ZM2 11v2a2 2 0 0 0 2-2H2Zm0 0H0a2 2 0 0 0 2 2v-2Zm0 0V9a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2Zm8.236-7a3 3 0 0 0-2.683 1.658l1.789.895A1 1 0 0 1 10.236 6V4Z" class="icon-dark"/>`
};
const cyTechnologyBranchHTallX16 = {
  name: "technologyBranchHTallX16",
  data: `<path fill="currentColor" d="M3 13h3v-2H3v2Zm3 0h7v-2H6v2Zm4.386-8H13V3h-2.614v2Zm-3.45 7.351L9.45 5.65l-1.873-.702-2.513 6.702 1.872.702ZM14 4v2a2 2 0 0 0 2-2h-2Zm0 0h-2a2 2 0 0 0 2 2V4Zm0 0V2a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2Zm0 8v2a2 2 0 0 0 2-2h-2Zm0 0h-2a2 2 0 0 0 2 2v-2Zm0 0v-2a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2ZM2 12v2a2 2 0 0 0 2-2H2Zm0 0H0a2 2 0 0 0 2 2v-2Zm0 0v-2a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2Zm8.386-9a3 3 0 0 0-2.809 1.947l1.873.702A1 1 0 0 1 10.386 5V3Z" class="icon-dark"/>`
};
const cyTechnologyBrowserDarkX16 = {
  name: "technologyBrowserDarkX16",
  data: `<path fill="#D0D2E0" d="M2 6h12v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6Z" class="icon-light"/><path fill="currentColor" fill-rule="evenodd" d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3ZM2 3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2H2V3Zm12 3H2v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6ZM3.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1Zm2 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1ZM8 3.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyTechnologyBrowserLightX16 = {
  name: "technologyBrowserLightX16",
  data: `<path fill="#D0D2E0" d="M2 3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2H2V3Z" class="icon-light"/><path fill="currentColor" fill-rule="evenodd" d="M3 0a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3H3ZM2 3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2H2V3Zm12 3H2v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6ZM3.5 4a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1Zm2 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1ZM8 3.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyTechnologyBrowserTesting2X48 = {
  name: "technologyBrowserTesting2X48",
  data: `<path fill="#D0D2E0" d="M40 8H8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M8 8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3H8Z" class="icon-light" clip-rule="evenodd"/><path fill="currentColor" d="M5 16H4a1 1 0 0 0 1 1v-1Zm38 0v1a1 1 0 0 0 1-1h-1Zm-24-5a1 1 0 1 0 0 2v-2Zm20 2a1 1 0 1 0 0-2v2ZM8 9h32V7H8v2Zm34 2v26h2V11h-2ZM6 37V11H4v26h2ZM5 17h38v-2H5v2Zm14-4h20v-2H19v2ZM8 39a2 2 0 0 1-2-2H4a4 4 0 0 0 4 4v-2Zm34-2a2 2 0 0 1-2 2v2a4 4 0 0 0 4-4h-2ZM40 9a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2ZM8 7a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2V7Zm-4 4v5h2v-5H4Zm40 5v-5h-2v5h2Zm-4 23H24v2h16v-2Zm-16 0h-8v2h8v-2Zm-8 0H8v2h8v-2ZM10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path fill="#9AA2FC" d="M15 30h4v4h-4v-4Z" class="icon-light-secondary"/><path fill="#4956E3" d="M33 25a1 1 0 1 0 0-2v2Zm-10-2a1 1 0 1 0 0 2v-2Zm10 10a1 1 0 1 0 0-2v2Zm-10-2a1 1 0 1 0 0 2v-2Zm-8.707-5.707a1 1 0 0 0 1.414 1.414l-1.414-1.414Zm5.414-2.586a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-4-1.414a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414l-1.414 1.414ZM15 30v-1a1 1 0 0 0-1 1h1Zm4 0h1a1 1 0 0 0-1-1v1Zm0 4v1a1 1 0 0 0 1-1h-1Zm-4 0h-1a1 1 0 0 0 1 1v-1Zm18-11H23v2h10v-2Zm0 8H23v2h10v-2Zm-17.293-4.293 2-2-1.414-1.414-2 2 1.414 1.414Zm2-2 2-2-1.414-1.414-2 2 1.414 1.414Zm-3.414-2 2 2 1.414-1.414-2-2-1.414 1.414Zm2 2 2 2 1.414-1.414-2-2-1.414 1.414ZM15 31h4v-2h-4v2Zm3-1v4h2v-4h-2Zm1 3h-4v2h4v-2Zm-3 1v-4h-2v4h2Z" class="icon-dark-secondary"/>`
};
const cyTechnologyCodeEditorX16 = {
  name: "technologyCodeEditorX16",
  data: `<path fill="#D0D2E0" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 4v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4M1 4V3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1M1 4h14m-5 4 1.5 1.5L10 11M6 8 4.5 9.5 6 11" class="icon-dark"/>`
};
const cyTechnologyCodeEditorX24 = {
  name: "technologyCodeEditorX24",
  data: `<path fill="#D0D2E0" d="M21 6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2h18V6Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M21 6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2h18V6Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8M3 8V6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v2M3 8h18m-7 4 2 2-2 2m-4-4-2 1.929 2 1.928" class="icon-dark"/>`
};
const cyTechnologyCommandLineX16 = {
  name: "technologyCommandLineX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m3 6 3.5 3.5L3 13m6 0h4" class="icon-dark"/>`
};
const cyTechnologyCommandLineErrorX48 = {
  name: "technologyCommandLineErrorX48",
  data: `<rect fill="currentColor"/><path fill="#E1E3ED" d="M43 37V16H5v21a3 3 0 0 0 3 3h32a3 3 0 0 0 3-3Z" class="icon-light"/><path fill="#747994" d="M13 28a1 1 0 1 0 0 2v-2Zm-2 3a1 1 0 1 0 0 2v-2Zm2-6a1 1 0 1 0 0 2v-2Zm-2-3a1 1 0 1 0 0 2v-2Zm13 2a1 1 0 1 0 0-2v2Zm-5-3a1 1 0 1 0 0-2v2ZM9 19a1 1 0 1 0 0 2v-2Zm14.01 14a1 1 0 1 0 0-2v2ZM29 27a1 1 0 1 0 0-2v2ZM9 34a1 1 0 1 0 0 2v-2Zm17-4a1 1 0 1 0 0-2v2Zm-8 6a1 1 0 1 0 0-2v2ZM8 9h32V7H8v2Zm34 2v26h2V11h-2ZM6 37V11H4v26h2Zm2 2a2 2 0 0 1-2-2H4a4 4 0 0 0 4 4v-2Zm34-2a2 2 0 0 1-2 2v2a4 4 0 0 0 4-4h-2ZM40 9a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2ZM8 7a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2V7Zm-4 4v5h2v-5H4Zm40 5v-5h-2v5h2Zm0 21V16h-2v21h2ZM4 16v21h2V16H4Zm1 1h38v-2H5v2Zm35 22H8v2h32v-2Zm-27-9h4v-2h-4v2Zm3 1h-5v2h5v-2Zm0-4h8v-2h-8v2Zm-3 0h2v-2h-2v2Zm-2-3h5v-2h-5v2Zm13-2h-6.99v2H24v-2Zm-5-3h-6v2h6v-2ZM9 21h3v-2H9v2Zm8 12h6.01v-2H17v2Zm8-6h4v-2h-4v2Zm-7 3h5v-2h-5v2Zm-4 4H9v2h5v-2Zm10-4h2v-2h-2v2Zm-9 6h3v-2h-3v2ZM10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path fill="#F8C4CD" d="M34 36.998a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-light-secondary"/><path fill="#F8C4CD" fill-rule="evenodd" d="M31 31.498a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1.17a.5.5 0 0 0 .75.432l1.013-.584a.5.5 0 0 1 .683.183l1.5 2.598a.5.5 0 0 1-.183.683l-1.013.585a.5.5 0 0 0 0 .866l1.013.585a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.013-.585a.5.5 0 0 0-.75.433v1.17a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.17a.5.5 0 0 0-.75-.432l-1.013.584a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.013-.585a.5.5 0 0 0 0-.866l-1.013-.585a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.013.584a.5.5 0 0 0 .75-.433v-1.169Zm2 6.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-light-secondary" clip-rule="evenodd"/><path stroke="#C62B49" stroke-linejoin="round" stroke-width="2" d="M34 36.998a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark-secondary"/><path stroke="#C62B49" stroke-linejoin="round" stroke-width="2" d="M31 31.498a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1.17a.5.5 0 0 0 .75.432l1.013-.584a.5.5 0 0 1 .683.183l1.5 2.598a.5.5 0 0 1-.183.683l-1.013.585a.5.5 0 0 0 0 .866l1.013.585a.5.5 0 0 1 .183.683l-1.5 2.598a.5.5 0 0 1-.683.183l-1.013-.585a.5.5 0 0 0-.75.433v1.17a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1.17a.5.5 0 0 0-.75-.432l-1.013.584a.5.5 0 0 1-.683-.183l-1.5-2.598a.5.5 0 0 1 .183-.683l1.013-.585a.5.5 0 0 0 0-.866l-1.013-.585a.5.5 0 0 1-.183-.683l1.5-2.598a.5.5 0 0 1 .683-.183l1.013.584a.5.5 0 0 0 .75-.433v-1.169Zm2 6.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark-secondary" clip-rule="evenodd"/>`
};
const cyTechnologyCypressX16 = {
  name: "technologyCypressX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M7.872 8.854A2.49 2.49 0 0 1 7.1 9.857c-.43.334-.972.533-1.561.533-1.394 0-2.524-1.113-2.524-2.487s1.13-2.487 2.524-2.487a2.538 2.538 0 0 1 1.705.654c.27.243.485.544.627.882l-1.339.464c-.169-.385-.532-.652-.953-.652-.582 0-1.054.51-1.054 1.139s.472 1.139 1.054 1.139c.421 0 .784-.267.953-.652l1.339.464Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" fill-rule="evenodd" d="M7.872 8.854A2.49 2.49 0 0 1 7.1 9.857c-.43.334-.972.533-1.561.533-1.394 0-2.524-1.113-2.524-2.487s1.13-2.487 2.524-2.487a2.538 2.538 0 0 1 1.705.654c.27.243.485.544.627.882l-1.339.464c-.169-.385-.532-.652-.953-.652-.582 0-1.054.51-1.054 1.139s.472 1.139 1.054 1.139c.421 0 .784-.267.953-.652l1.339.464Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M2 8a6 6 0 1 1 9.122 5.125l-.996 2.59A8 8 0 0 0 16 8a8 8 0 1 0-7.64 7.991.93.93 0 0 0 .817-.61l3.806-9.88h-1.458L10.39 8.717 9.23 5.5H7.687l1.93 4.975-1.364 3.519A6.001 6.001 0 0 1 2 8Z" class="icon-dark"/>`
};
const cyTechnologyDashboardCheckmarkX48 = {
  name: "technologyDashboardCheckmarkX48",
  data: `<path fill="#D0D2E0" d="M40 8H8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M8 8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3H8Z" class="icon-light" clip-rule="evenodd"/><path fill="#D0D2E0" d="m19 30-5-2-5 3v5h29a1 1 0 0 0 1-1V23l-5 1-5 3-5-2-5 5Z" class="icon-light"/><path fill="currentColor" d="M5 16H4a1 1 0 0 0 1 1v-1Zm38 0v1a1 1 0 0 0 1-1h-1Zm-24-5a1 1 0 1 0 0 2v-2Zm20 2a1 1 0 1 0 0-2v2ZM14 28l.371-.928a1 1 0 0 0-.886.07L14 28Zm5 2-.371.928a1 1 0 0 0 1.078-.22L19 30Zm5-5 .371-.928a1 1 0 0 0-1.078.22L24 25Zm5 2-.371.928a1 1 0 0 0 .886-.07L29 27ZM9 31l-.514-.858A1 1 0 0 0 8 31h1Zm25-7-.196-.98a1 1 0 0 0-.319.122L34 24ZM9 36H8a1 1 0 0 0 1 1v-1ZM8 9h32V7H8v2Zm34 2v26h2V11h-2ZM6 37V11H4v26h2ZM5 17h38v-2H5v2Zm14-4h20v-2H19v2ZM8 39a2 2 0 0 1-2-2H4a4 4 0 0 0 4 4v-2Zm34-2a2 2 0 0 1-2 2v2a4 4 0 0 0 4-4h-2ZM40 9a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2ZM8 7a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2V7Zm-4 4v5h2v-5H4Zm40 5v-5h-2v5h2Zm-6 3H10v2h28v-2Zm-24.371 9.928 5 2 .742-1.857-5-2-.742 1.857Zm6.078 1.78 5-5-1.414-1.415-5 5 1.414 1.414Zm3.922-4.78 5 2 .742-1.857-5-2-.742 1.857ZM40 35V23h-2v12h2Zm0-12v-2h-2v2h2Zm0 16H24v2h16v-2Zm-16 0h-8v2h8v-2Zm-8 0H8v2h8v-2Zm-6.486-7.142 5-3-1.028-1.716-5 3 1.028 1.716Zm20-4 5-3-1.029-1.716-5 3 1.03 1.716Zm4.682-2.877 5-1-.392-1.962-5 1 .392 1.962ZM38 35H9v2h29v-2Zm-28 1V21H8v15h2Zm-2-5v5h2v-5H8Zm30-10h2a2 2 0 0 0-2-2v2Zm0 14v2a2 2 0 0 0 2-2h-2ZM10 19a2 2 0 0 0-2 2h2v-2ZM10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path fill="#69D3A7" d="M37 37a6 6 0 1 0-12 0 6 6 0 0 0 12 0Z"/><path fill="#00814D" d="M28.293 38.207a1 1 0 0 1 1.414-1.414l-1.414 1.414ZM30.5 39l.814.581a1 1 0 0 1-1.521.126L30.5 39Zm1.686-4.081a1 1 0 1 1 1.628 1.162l-1.628-1.162ZM36 37a5 5 0 0 0-5-5v-2a7 7 0 0 1 7 7h-2Zm-5-5a5 5 0 0 0-5 5h-2a7 7 0 0 1 7-7v2Zm-5 5a5 5 0 0 0 5 5v2a7 7 0 0 1-7-7h2Zm5 5a5 5 0 0 0 5-5h2a7 7 0 0 1-7 7v-2Zm-1.293-5.207 1.5 1.5-1.414 1.414-1.5-1.5 1.414-1.414Zm-.02 1.626 2.5-3.5 1.627 1.162-2.5 3.5-1.628-1.162Z"/>`
};
const cyTechnologyDashboardFailX48 = {
  name: "technologyDashboardFailX48",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M8 8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3H8Z" class="icon-light" clip-rule="evenodd"/><path fill="#D0D2E0" d="m19 30-5-2-5 3v5h29a1 1 0 0 0 1-1V23l-5 1-5 3-5-2-5 5Z" class="icon-light"/><path fill="currentColor" d="M5 16H4a1 1 0 0 0 1 1v-1Zm38 0v1a1 1 0 0 0 1-1h-1Zm-24-5a1 1 0 1 0 0 2v-2Zm20 2a1 1 0 1 0 0-2v2ZM14 28l.371-.928a1 1 0 0 0-.886.07L14 28Zm5 2-.371.928a1 1 0 0 0 1.078-.22L19 30Zm5-5 .371-.928a1 1 0 0 0-1.078.22L24 25Zm5 2-.371.928a1 1 0 0 0 .886-.07L29 27ZM9 31l-.514-.858A1 1 0 0 0 8 31h1Zm25-7-.196-.98a1 1 0 0 0-.319.122L34 24ZM9 36H8a1 1 0 0 0 1 1v-1ZM8 9h32V7H8v2Zm34 2v26h2V11h-2ZM6 37V11H4v26h2ZM5 17h38v-2H5v2Zm14-4h20v-2H19v2ZM8 39a2 2 0 0 1-2-2H4a4 4 0 0 0 4 4v-2Zm34-2a2 2 0 0 1-2 2v2a4 4 0 0 0 4-4h-2ZM40 9a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2ZM8 7a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2V7Zm-4 4v5h2v-5H4Zm40 5v-5h-2v5h2Zm-6 3H10v2h28v-2Zm-24.371 9.928 5 2 .742-1.857-5-2-.742 1.857Zm6.078 1.78 5-5-1.414-1.415-5 5 1.414 1.414Zm3.922-4.78 5 2 .742-1.857-5-2-.742 1.857ZM40 35V23h-2v12h2Zm0-12v-2h-2v2h2Zm0 16H24v2h16v-2Zm-16 0h-8v2h8v-2Zm-8 0H8v2h8v-2Zm-6.486-7.142 5-3-1.028-1.716-5 3 1.028 1.716Zm20-4 5-3-1.029-1.716-5 3 1.03 1.716Zm4.682-2.877 5-1-.392-1.962-5 1 .392 1.962ZM38 35H9v2h29v-2Zm-28 1V21H8v15h2Zm-2-5v5h2v-5H8Zm30-10h2a2 2 0 0 0-2-2v2Zm0 14v2a2 2 0 0 0 2-2h-2ZM10 19a2 2 0 0 0-2 2h2v-2ZM10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path fill="#F8C4CD" d="M35.243 41.243a6 6 0 1 1-8.486-8.485 6 6 0 0 1 8.486 8.485Z" class="icon-light-secondary"/><path stroke="#C62B49" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m32.5 35.5-3 3m3 0-3-3m5.743 5.743a6 6 0 1 1-8.486-8.485 6 6 0 0 1 8.486 8.485Z" class="icon-dark-secondary"/>`
};
const cyTechnologyDashboardRunningX48 = {
  name: "technologyDashboardRunningX48",
  data: `<path fill="#E1E3ED" d="M40 8H8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3Z" class="icon-light"/><path fill="#E1E3ED" fill-rule="evenodd" d="M8 8a3 3 0 0 0-3 3v5h38v-5a3 3 0 0 0-3-3H8Z" class="icon-light" clip-rule="evenodd"/><path fill="#E1E3ED" d="m19 30-5-2-5 3v5h29a1 1 0 0 0 1-1V23l-5 1-5 3-5-2-5 5Z" class="icon-light"/><path stroke="#9095AD" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 12h20m4-1v26a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3V11m38 0a3 3 0 0 0-3-3H8a3 3 0 0 0-3 3m38 0v5H5v-5m34 12v12a1 1 0 0 1-1 1H9m30-13v-2a1 1 0 0 0-1-1H10a1 1 0 0 0-1 1v15m30-13-5 1-5 3-5-2-5 5-5-2-5 3v5" class="icon-dark"/><path fill="#9095AD" d="M10 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM16 12a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/><path fill="#fff" d="M39 37a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z"/><path fill="currentColor" d="M37 37a6 6 0 1 1-12 0 6 6 0 0 1 12 0Z" class="icon-light"/><path fill="#C5C9FD" fill-rule="evenodd" d="M31 32a5 5 0 1 0 0 10 5 5 0 0 0 0-10Zm-7 5a7 7 0 1 1 14 0 7 7 0 0 1-14 0Z" class="icon-light-secondary" clip-rule="evenodd"/><path fill="#4956E3" fill-rule="evenodd" d="M30 31a1 1 0 0 1 1-1 7 7 0 0 1 7 7 1 1 0 1 1-2 0 5 5 0 0 0-5-5 1 1 0 0 1-1-1Z" class="icon-dark-secondary" clip-rule="evenodd"/><path fill="#fff" d="M36 37a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z"/>`
};
const cyTechnologyDebuggerX24 = {
  name: "technologyDebuggerX24",
  data: `<path fill="#D0D2E0" d="M15 10V7a3 3 0 1 0-6 0v3h6ZM15 10H9a3.162 3.162 0 0 0-2 2v4a4.564 4.564 0 0 0 4.014 3.89l.685.076c.2.023.402.023.602 0l.685-.076A4.564 4.564 0 0 0 17 16v-4a3.162 3.162 0 0 0-2-2Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M17 12v2m0-2 .265-.088A4 4 0 0 0 20 8.117V7m-3 5v0a3.162 3.162 0 0 0-2-2v0m0 0V7a3 3 0 0 0-3-3v0a3 3 0 0 0-3 3v3m6 0H9m0 0v0a3.162 3.162 0 0 0-2 2v0m0 0v2m0-2-.265-.088A4 4 0 0 1 4 8.117V7m13 7h3m-3 0v2M7 14H4m3 0v2m10 0v0a4.564 4.564 0 0 1-4.014 3.89l-.685.076c-.2.023-.402.023-.602 0l-.685-.076A4.564 4.564 0 0 1 7 16v0m10 0 .265.088A4 4 0 0 1 20 19.883V21M7 16l-.265.088A4 4 0 0 0 4 19.883V21" class="icon-dark"/>`
};
const cyTechnologyDollarX16 = {
  name: "technologyDollarX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 3h3a1 1 0 0 1 1 1v.5M5 3H2a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3m0-5V1m0 2v5m0 5h3a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1H5m0 5H2a1 1 0 0 1-1-1v-.5M5 13v2m0-2V8" class="icon-dark"/>`
};
const cyTechnologyDragProjectX48 = {
  name: "technologyDragProjectX48",
  data: `<path stroke="rgba(0,0,0,0.2)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M38.5 15v-1m-29 24h-2a3 3 0 0 1-3-3v-1m34-24V9a3 3 0 0 0-3-3h-1m-30 4V9a3 3 0 0 1 3-3h1m-4 24v-2.5m0-4v-3m0-4V14m8-8H16m4 0h3m4 0h3.5" class="icon-dark-secondary"/><path fill="#69D3A7" d="M26.086 15.586A2 2 0 0 0 24.672 15H13.5a1 1 0 0 0-1 1v5h12.172a2 2 0 0 0 1.414-.586L28.5 18l-2.414-2.414Z" class="icon-light"/><path fill="currentColor" d="M12.5 21h-1 1Zm13.586-.586.707.707-.707-.707ZM24.672 15v-1 1Zm1.414.586.707-.707-.707.707ZM13.5 15v1-1Zm10.707 13.707a.999.999 0 1 0-1.414-1.414l1.414 1.414ZM21 30.5l-.707-.707a.999.999 0 0 0 0 1.414L21 30.5Zm1.793 3.207a.999.999 0 1 0 1.414-1.414l-1.414 1.414Zm9.414-6.414a.999.999 0 1 0-1.414 1.414l1.414-1.414ZM34 30.5l.707.707a.999.999 0 0 0 0-1.414L34 30.5Zm-3.207 1.793a.999.999 0 1 0 1.414 1.414l-1.414-1.414Zm-5.269 2.49a1 1 0 1 0 1.952.434l-1.952-.434Zm3.952-8.566a1 1 0 1 0-1.952-.434l1.952.434ZM41.5 20v19h2V20h-2Zm-1 20h-26v2h26v-2Zm-27-24h11.172v-2H13.5v2Zm11.879.293 2.414 2.414 1.414-1.414-2.414-2.414-1.414 1.414ZM28.5 19h12v-2h-12v2Zm-.707-1.707-2.414 2.414 1.414 1.414 2.414-2.414-1.414-1.414ZM13.5 39V21h-2v18h2Zm0-18v-5h-2v5h2Zm11.172-1H12.5v2h12.172v-2Zm.707-.293a1 1 0 0 1-.707.293v2a3 3 0 0 0 2.121-.879l-1.414-1.414ZM24.672 16a1 1 0 0 1 .707.293l1.414-1.414A3 3 0 0 0 24.672 14v2ZM14.5 40a1 1 0 0 1-1-1h-2a3 3 0 0 0 3 3v-2Zm27-1a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2Zm2-19a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2Zm-30-6a2 2 0 0 0-2 2h2v-2Zm9.293 13.293-2.5 2.5 1.414 1.414 2.5-2.5-1.414-1.414Zm-2.5 3.914 2.5 2.5 1.414-1.414-2.5-2.5-1.414 1.414Zm10.5-2.5 2.5 2.5 1.414-1.414-2.5-2.5-1.414 1.414Zm2.5 1.086-2.5 2.5 1.414 1.414 2.5-2.5-1.414-1.414Zm-5.817 5.424 2-9-1.952-.434-2 9 1.952.434Z" class="icon-dark"/>`
};
const cyTechnologyElementSelectorX16 = {
  name: "technologyElementSelectorX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h1" class="icon-dark"/><path fill="currentColor" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="m10 11 3 3 1-1-3-3 1.5-1.5L7 7l1.5 5.5L10 11Z" class="icon-dark"/>`
};
const cyTechnologyImageScreenshotX16 = {
  name: "technologyImageScreenshotX16",
  data: `<path fill="#D0D2E0" d="M1 14a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2l-2.5-2.5L10 12 5.5 7.5 1 12v2ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-light"/><path fill="currentColor" d="m5.5 7.5.707-.707a1 1 0 0 0-1.414 0L5.5 7.5ZM10 12l-.707.707a1 1 0 0 0 1.414 0L10 12Zm2.5-2.5.707-.707a1 1 0 0 0-1.414 0l.707.707ZM14 0H2v2h12V0ZM2 14v-2H0v2h2Zm0-2V2H0v10h2Zm-.293.707 4.5-4.5-1.414-1.414-4.5 4.5 1.414 1.414Zm3.086-4.5 4.5 4.5 1.414-1.414-4.5-4.5-1.414 1.414Zm5.914 4.5 2.5-2.5-1.414-1.414-2.5 2.5 1.414 1.414ZM16 14v-2h-2v2h2Zm0-2V2h-2v10h2Zm-4.207-1.793 2.5 2.5 1.414-1.414-2.5-2.5-1.414 1.414ZM2 16h12v-2H2v2Zm9-11v2a2 2 0 0 0 2-2h-2Zm0 0H9a2 2 0 0 0 2 2V5Zm0 0V3a2 2 0 0 0-2 2h2Zm0 0h2a2 2 0 0 0-2-2v2Zm3-3h2a2 2 0 0 0-2-2v2Zm0 12v2a2 2 0 0 0 2-2h-2ZM2 0a2 2 0 0 0-2 2h2V0ZM0 14a2 2 0 0 0 2 2v-2H0Z" class="icon-dark"/>`
};
const cyTechnologyImageScreenshotX24 = {
  name: "technologyImageScreenshotX24",
  data: `<path fill="#C5C9FD" d="M3 19a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-2l-3-3-3 3-6-6-6 6v2ZM18 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" class="icon-light"/><path fill="currentColor" d="m9 11 .707-.707a1 1 0 0 0-1.414 0L9 11Zm6 6-.707.707a1 1 0 0 0 1.414 0L15 17Zm3-3 .707-.707a1 1 0 0 0-1.414 0L18 14Zm2-11H4v2h16V3ZM4 19v-2H2v2h2Zm0-2V5H2v12h2Zm-.293.707 6-6-1.414-1.414-6 6 1.414 1.414Zm4.586-6 6 6 1.414-1.414-6-6-1.414 1.414Zm7.414 6 3-3-1.414-1.414-3 3 1.414 1.414ZM22 19v-2h-2v2h2Zm0-2V5h-2v12h2Zm-4.707-2.293 3 3 1.414-1.414-3-3-1.414 1.414ZM4 21h16v-2H4v2ZM17 9a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2Zm-1 1a1 1 0 0 1-1-1h-2a3 3 0 0 0 3 3v-2Zm-1-1a1 1 0 0 1 1-1V6a3 3 0 0 0-3 3h2Zm1-1a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2Zm4-3h2a2 2 0 0 0-2-2v2Zm0 14v2a2 2 0 0 0 2-2h-2ZM4 3a2 2 0 0 0-2 2h2V3ZM2 19a2 2 0 0 0 2 2v-2H2Z" class="icon-dark"/>`
};
const cyTechnologyInfinityLoopX16 = {
  name: "technologyInfinityLoopX16",
  data: `<path fill="currentColor" d="M7 5v1h2V5H7Zm2 6v-1H7v1h2ZM5 7a2 2 0 0 1-2-2H1a4 4 0 0 0 4 4V7ZM3 5a2 2 0 0 1 2-2V1a4 4 0 0 0-4 4h2Zm2-2a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2Zm8 8a2 2 0 0 1-2 2v2a4 4 0 0 0 4-4h-2Zm-2 2a2 2 0 0 1-2-2H7a4 4 0 0 0 4 4v-2Zm0-4a2 2 0 0 1 2 2h2a4 4 0 0 0-4-4v2Zm0-2H5v2h6V7Z" class="icon-dark"/>`
};
const cyTechnologyInfinityLoopX20 = {
  name: "technologyInfinityLoopX20",
  data: `<path fill="currentColor" d="M11 13v-1H9v1h2ZM9 7v1h2V7H9ZM5.5 9A3.5 3.5 0 0 1 2 5.5H0A5.5 5.5 0 0 0 5.5 11V9ZM2 5.5A3.5 3.5 0 0 1 5.5 2V0A5.5 5.5 0 0 0 0 5.5h2ZM5.5 2A3.5 3.5 0 0 1 9 5.5h2A5.5 5.5 0 0 0 5.5 0v2ZM18 14.5a3.5 3.5 0 0 1-3.5 3.5v2a5.5 5.5 0 0 0 5.5-5.5h-2ZM14.5 18a3.5 3.5 0 0 1-3.5-3.5H9a5.5 5.5 0 0 0 5.5 5.5v-2Zm0-7a3.5 3.5 0 0 1 3.5 3.5h2A5.5 5.5 0 0 0 14.5 9v2Zm0-2h-9v2h9V9ZM11 14.5V13H9v1.5h2Zm-2-9V7h2V5.5H9Z" class="icon-dark"/>`
};
const cyTechnologyInfinityLoopX24 = {
  name: "technologyInfinityLoopX24",
  data: `<path fill="currentColor" d="M13 15v-1h-2v1h2Zm-2-6v1h2V9h-2Zm-3.5 2A3.5 3.5 0 0 1 4 7.5H2A5.5 5.5 0 0 0 7.5 13v-2ZM4 7.5A3.5 3.5 0 0 1 7.5 4V2A5.5 5.5 0 0 0 2 7.5h2ZM7.5 4A3.5 3.5 0 0 1 11 7.5h2A5.5 5.5 0 0 0 7.5 2v2ZM20 16.5a3.5 3.5 0 0 1-3.5 3.5v2a5.5 5.5 0 0 0 5.5-5.5h-2ZM16.5 20a3.5 3.5 0 0 1-3.5-3.5h-2a5.5 5.5 0 0 0 5.5 5.5v-2Zm0-7a3.5 3.5 0 0 1 3.5 3.5h2a5.5 5.5 0 0 0-5.5-5.5v2Zm0-2h-9v2h9v-2ZM13 16.5V15h-2v1.5h2Zm-2-9V9h2V7.5h-2Z" class="icon-dark"/>`
};
const cyTechnologyLockedProjectX48 = {
  name: "technologyLockedProjectX48",
  data: `<path fill="#D0D2E0" d="M18.586 8.586A2 2 0 0 0 17.172 8H6a1 1 0 0 0-1 1v5h12.172a2 2 0 0 0 1.414-.586L21 11l-2.414-2.414Z" class="icon-light"/><path fill="currentColor" d="m18.586 13.414.707.707-.707-.707ZM17.172 8v1-1Zm1.414.586.707-.707-.707.707ZM5 38H4h1ZM6 8V7v1Zm36 5v25h2V13h-2Zm-1 26H7v2h34v-2ZM6 9h11.172V7H6v2Zm11.879.293 2.414 2.414 1.414-1.414-2.414-2.414-1.414 1.414ZM21 12h20v-2H21v2Zm-.707-1.707-2.414 2.414 1.414 1.414 2.414-2.414-1.414-1.414ZM6 38V14H4v24h2Zm0-24V9H4v5h2Zm11.172-1H5v2h12.172v-2Zm.707-.293a1 1 0 0 1-.707.293v2a3 3 0 0 0 2.12-.879l-1.413-1.414ZM17.172 9a1 1 0 0 1 .707.293l1.414-1.414A3 3 0 0 0 17.172 7v2ZM7 39a1 1 0 0 1-1-1H4a3 3 0 0 0 3 3v-2Zm35-1a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2Zm2-25a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2ZM6 7a2 2 0 0 0-2 2h2V7Z" class="icon-dark"/><path fill="#69D3A7" fill-rule="evenodd" d="M25 41a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-5a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v5Z" class="icon-light-secondary" clip-rule="evenodd"/><path stroke="#00814D" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M28 34h-1a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-5a2 2 0 0 0-2-2h-1m-6 0v-2a3 3 0 0 1 3-3v0a3 3 0 0 1 3 3v2m-6 0h6m-3 4v1" class="icon-dark-secondary"/>`
};
const cyTechnologyOctothorpeX16 = {
  name: "technologyOctothorpeX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 2 4 14m5 0 3-12m2 4H3m10 4H2" class="icon-dark"/>`
};
const cyTechnologyPullRequestX16 = {
  name: "technologyPullRequestX16",
  data: `<path fill="currentColor" d="M2.5 12a1 1 0 1 0 2 0h-2Zm2-8a1 1 0 1 0-2 0h2Zm7 8a1 1 0 1 0 2 0h-2Zm-4-8-.707-.707a1 1 0 0 0 0 1.414L7.5 4ZM9 2.5h1a1 1 0 0 0-1.707-.707L9 2.5Zm0 3-.707.707A1 1 0 0 0 10 5.5H9ZM11.5 4v1-1Zm-7 8V4h-2v8h2Zm9 0V5h-2v7h2Zm-2-9h-4v2h4V3ZM8.207 4.707l1.5-1.5-1.414-1.414-1.5 1.5 1.414 1.414Zm-1.414 0 1.5 1.5 1.414-1.414-1.5-1.5-1.414 1.414ZM8 2.5v3h2v-3H8ZM13.5 5a2 2 0 0 0-2-2v2h2Z" class="icon-dark"/><path fill="#D0D2E0" stroke="currentColor" d="M5 4a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm0 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm9 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z" class="icon-light-fill icon-dark-stroke"/>`
};
const cyTechnologyServerX16 = {
  name: "technologyServerX16",
  data: `<rect width="14" height="6" x="1" y="2" fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark-stroke icon-light-fill" rx="2"/><rect width="14" height="6" x="1" y="8" fill="#D0D2E0" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-dark-stroke icon-light-fill" rx="2"/><path fill="currentColor" d="M13 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM10 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM13 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyTechnologyTerminalX16 = {
  name: "technologyTerminalX16",
  data: `<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 4v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4M1 4V3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1M1 4h14M5 8l1.5 1.5L5 11" class="icon-dark" opacity=".7"/>`
};
const cyTechnologyTerminalLogX16 = {
  name: "technologyTerminalLogX16",
  data: `<path fill="#D0D2E0" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light"/><path fill="#D0D2E0" fill-rule="evenodd" d="M15 3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v1h14V3Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 4v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4M1 4V3a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v1M1 4h14" class="icon-dark"/><path fill="currentColor" d="M4.5 7a.5.5 0 0 0 0 1V7Zm1 1H6V7h-.5v1Zm-1 1a.5.5 0 0 0 0 1V9ZM6 10h.5V9H6v1Zm-1.5 1a.5.5 0 0 0 0 1v-1Zm3 1H8v-1h-.5v1Zm0-3H7v1h.5V9ZM9 10a.5.5 0 0 0 0-1v1Zm0 1h-.5v1H9v-1Zm2 1a.5.5 0 0 0 0-1v1ZM7 7h-.5v1H7V7Zm1 1h.5V7H8v1Zm1.5-1H9v1h.5V7Zm2 1a.5.5 0 0 0 0-1v1Zm-7 0h1V7h-1v1Zm0 2H6V9H4.5v1Zm0 2h3v-1h-3v1Zm3-2H9V9H7.5v1ZM9 12h2v-1H9v1ZM7 8h1V7H7v1Zm2.5 0h2V7h-2v1Z" class="icon-dark"/>`
};
const cyTechnologyTestResultsX16 = {
  name: "technologyTestResultsX16",
  data: `<path fill="currentColor" d="M1 10h3v3H1v-3Z" class="icon-dark"/><path fill="currentColor" d="M15 5.5a1 1 0 1 0 0-2v2Zm-8-2a1 1 0 0 0 0 2v-2Zm8 9a1 1 0 1 0 0-2v2Zm-8-2a1 1 0 1 0 0 2v-2ZM.293 5.293a1 1 0 0 0 1.414 1.414L.293 5.293Zm4.414-1.586a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-3-1.414A1 1 0 0 0 .293 3.707l1.414-1.414Zm1.586 4.414a1 1 0 0 0 1.414-1.414L3.293 6.707ZM1 10V9a1 1 0 0 0-1 1h1Zm3 0h1a1 1 0 0 0-1-1v1Zm0 3v1a1 1 0 0 0 1-1H4Zm-3 0H0a1 1 0 0 0 1 1v-1Zm14-9.5H7v2h8v-2Zm0 7H7v2h8v-2ZM1.707 6.707l1.5-1.5-1.414-1.414-1.5 1.5 1.414 1.414Zm1.5-1.5 1.5-1.5-1.414-1.414-1.5 1.5 1.414 1.414Zm-2.914-1.5 1.5 1.5 1.414-1.414-1.5-1.5L.293 3.707Zm1.5 1.5 1.5 1.5 1.414-1.414-1.5-1.5-1.414 1.414ZM1 11h3V9H1v2Zm2-1v3h2v-3H3Zm1 2H1v2h3v-2Zm-2 1v-3H0v3h2Z" class="icon-dark"/>`
};
const cyTechnologyTestResultsX24 = {
  name: "technologyTestResultsX24",
  data: `<path fill="#D0D2E0" d="M3 15h4v4H3v-4Z" class="icon-light"/><path fill="currentColor" d="M21 8a1 1 0 1 0 0-2v2ZM11 6a1 1 0 1 0 0 2V6Zm10 12a1 1 0 1 0 0-2v2Zm-10-2a1 1 0 1 0 0 2v-2ZM2.293 8.293a1 1 0 0 0 1.414 1.414L2.293 8.293Zm5.414-2.586a1 1 0 0 0-1.414-1.414l1.414 1.414Zm-4-1.414a1 1 0 0 0-1.414 1.414l1.414-1.414Zm2.586 5.414a1 1 0 0 0 1.414-1.414L6.293 9.707ZM3 15v-1a1 1 0 0 0-1 1h1Zm4 0h1a1 1 0 0 0-1-1v1Zm0 4v1a1 1 0 0 0 1-1H7Zm-4 0H2a1 1 0 0 0 1 1v-1ZM21 6H11v2h10V6Zm0 10H11v2h10v-2ZM3.707 9.707l2-2-1.414-1.414-2 2 1.414 1.414Zm2-2 2-2-1.414-1.414-2 2 1.414 1.414Zm-3.414-2 2 2 1.414-1.414-2-2-1.414 1.414Zm2 2 2 2 1.414-1.414-2-2-1.414 1.414ZM3 16h4v-2H3v2Zm3-1v4h2v-4H6Zm1 3H3v2h4v-2Zm-3 1v-4H2v4h2Z" class="icon-dark"/>`
};
const cyTestingTypeComponentX16 = {
  name: "testingTypeComponentX16",
  data: `<path fill="currentColor" fill-opacity=".5" d="M2 10h4v4H2v-4ZM10 2h4v4h-4V2Z" class="icon-dark"/><path fill="currentColor" d="M2 6V5a1 1 0 0 0-1 1h1Zm4 0h1V5H6v1Zm-4 8H1a1 1 0 0 0 1 1v-1Zm8-12V1H9v1h1Zm4 0h1a1 1 0 0 0-1-1v1Zm0 4v1h1V6h-1Zm-4 0H9v1h1V6Zm0 4h1V9h-1v1Zm0 4v1a1 1 0 0 0 1-1h-1ZM2 7h4V5H2v2Zm3-1v4h2V6H5Zm1 3H2v2h4V9Zm-3 1V6H1v4h2Zm2 0v4h2v-4H5Zm1 3H2v2h4v-2Zm-3 1v-4H1v4h2Zm7-11h4V1h-4v2Zm3-1v4h2V2h-2Zm1 3h-4v2h4V5Zm-3 1V2H9v4h2Zm-5 5h4V9H6v2Zm3-1v4h2v-4H9Zm1 3H6v2h4v-2Z" class="icon-dark"/>`
};
const cyTestingTypeComponentX24 = {
  name: "testingTypeComponentX24",
  data: `<path fill="#D0D2E0" d="M3 14h7v7H4a1 1 0 0 1-1-1v-6ZM14 3h6a1 1 0 0 1 1 1v6h-7V3Z" class="icon-light"/><path fill="currentColor" d="M10 7h1V6h-1v1Zm4-4V2h-1v1h1Zm7 7v1h1v-1h-1Zm-7 0h-1v1h1v-1Zm3 4h1v-1h-1v1ZM4 8h6V6H4v2Zm5-1v7h2V7H9Zm1 6H3v2h7v-2Zm-6 1V8H2v6h2Zm5 0v7h2v-7H9Zm1 6H4v2h6v-2Zm-6 0v-6H2v6h2ZM14 4h6V2h-6v2Zm6 0v6h2V4h-2Zm1 5h-7v2h7V9Zm-6 1V3h-2v7h2Zm-5 5h7v-2h-7v2Zm6-1v6h2v-6h-2Zm0 6h-6v2h6v-2Zm0 0v2a2 2 0 0 0 2-2h-2Zm4-16h2a2 2 0 0 0-2-2v2ZM4 20H2a2 2 0 0 0 2 2v-2ZM4 6a2 2 0 0 0-2 2h2V6Z" class="icon-dark"/>`
};
const cyTestingTypeComponentX64 = {
  name: "testingTypeComponentX64",
  data: `<path fill="#D0D2E0" d="M36 5h21.5A1.5 1.5 0 0 1 59 6.5V28H36V5ZM32 32H9v21.5a1.5 1.5 0 0 0 1.5 1.5H32V32Z" class="icon-light"/><path fill="currentColor" d="M32 9h1V8h-1v1Zm4-4V4h-1v1h1Zm23 23v1h1v-1h-1Zm-23 0h-1v1h1v-1Zm19 4h1v-1h-1v1ZM10.5 10H32V8H10.5v2ZM31 9v23h2V9h-2Zm1 22H9v2h23v-2Zm-22 1V10.5H8V32h2Zm21 0v23h2V32h-2Zm1 22H10.5v2H32v-2Zm-22-.5V32H8v21.5h2ZM36 6h21.5V4H36v2Zm22 .5V28h2V6.5h-2ZM59 27H36v2h23v-2Zm-22 1V5h-2v23h2Zm-5 5h23v-2H32v2Zm22-1v21.5h2V32h-2Zm-.5 22H32v2h21.5v-2Zm.5-.5a.5.5 0 0 1-.5.5v2a2.5 2.5 0 0 0 2.5-2.5h-2ZM57.5 6a.5.5 0 0 1 .5.5h2A2.5 2.5 0 0 0 57.5 4v2Zm-47 48a.5.5 0 0 1-.5-.5H8a2.5 2.5 0 0 0 2.5 2.5v-2Zm0-46A2.5 2.5 0 0 0 8 10.5h2a.5.5 0 0 1 .5-.5V8Z" class="icon-dark"/>`
};
const cyTestingTypeComponentSolidX24 = {
  name: "testingTypeComponentSolidX24",
  data: `<mask id="testing-type-component-solid_x24_svg__a" fill="#fff"><path d="M2 13h9v9H4a2 2 0 0 1-2-2v-7ZM13 2h7a2 2 0 0 1 2 2v7h-9V2Z"/></mask><path fill="currentColor" d="M2 13h9v9H4a2 2 0 0 1-2-2v-7ZM13 2h7a2 2 0 0 1 2 2v7h-9V2Z" class="icon-dark"/><path fill="currentColor" d="M11 13h2a2 2 0 0 0-2-2v2Zm-9 0v-2a2 2 0 0 0-2 2h2Zm9 9v2a2 2 0 0 0 2-2h-2Zm2-20V0h-2v2h2Zm9 9v2h2v-2h-2Zm-9 0h-2v2h2v-2Zm-2 0H2v4h9v-4Zm-2 2v9h4v-9H9Zm2 7H4v4h7v-4Zm-7 0v-7H0v7h4Zm9-16h7V0h-7v4Zm7 0v7h4V4h-4Zm2 5h-9v4h9V9Zm-7 2V2h-4v9h4Zm5-7h4a4 4 0 0 0-4-4v4ZM4 20H0a4 4 0 0 0 4 4v-4Z" class="icon-dark" mask="url(#testing-type-component-solid_x24_svg__a)"/><path fill="#D0D2E0" d="M4 4h7v9h9v7a2 2 0 0 1-2 2h-7v-9H2V6a2 2 0 0 1 2-2Z" class="icon-light"/>`
};
const cyTestingTypeComponentSolidX64 = {
  name: "testingTypeComponentSolidX64",
  data: `<path fill="currentColor" d="M36 4h21a3 3 0 0 1 3 3v21H36V4ZM32 56H11a3 3 0 0 1-3-3V32h24v24Z" class="icon-dark"/><path fill="#D0D2E0" d="M11 8h21v24h24v21a3 3 0 0 1-3 3H32V32H8V11a3 3 0 0 1 3-3Z" class="icon-light"/>`
};
const cyTestingTypeE2EX16 = {
  name: "testingTypeE2EX16",
  data: `<path fill="#D0D2E0" d="M15 14V5h-3v6H4v3h11Z" class="icon-light"/><path fill="currentColor" d="M15 5h1a1 1 0 0 0-1-1v1ZM4 14H3a1 1 0 0 0 1 1v-1Zm11 0v1a1 1 0 0 0 1-1h-1ZM1 2V1a1 1 0 0 0-1 1h1Zm11 0h1a1 1 0 0 0-1-1v1ZM1 11H0a1 1 0 0 0 1 1v-1Zm11 0v1a1 1 0 0 0 1-1h-1Zm2-6v9h2V5h-2Zm1 8H4v2h11v-2ZM1 3h11V1H1v2Zm11 7H4v2h8v-2Zm-8 0H1v2h3v-2Zm1 4v-3H3v3h2Zm7-8h3V4h-3v2Zm-1-4v3h2V2h-2Zm0 3v6h2V5h-2Zm-9 6V2H0v9h2ZM4 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0ZM6 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0ZM8 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z" class="icon-dark"/>`
};
const cyTestingTypeE2EX24 = {
  name: "testingTypeE2EX24",
  data: `<path fill="#D0D2E0" d="M20 20a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1h-3v7a1 1 0 0 1-1 1H7v3a1 1 0 0 0 1 1h12Z" class="icon-light"/><path fill="currentColor" d="M6 6a1 1 0 0 0 0 2V6Zm.01 2a1 1 0 0 0 0-2v2ZM9 6a1 1 0 0 0 0 2V6Zm.01 2a1 1 0 0 0 0-2v2ZM12 6a1 1 0 1 0 0 2V6Zm.01 2a1 1 0 1 0 0-2v2ZM20 9v10h2V9h-2Zm0 10H8v2h12v-2ZM4 5h12V3H4v2Zm12 10H7v2h9v-2Zm-9 0H4v2h3v-2Zm1 4v-3H6v3h2Zm9-10h3V7h-3v2Zm-1-4v3h2V5h-2Zm0 3v7h2V8h-2ZM4 15V5H2v10h2Zm2-7h.01V6H6v2Zm3 0h.01V6H9v2Zm3 0h.01V6H12v2Zm4 9a2 2 0 0 0 2-2h-2v2ZM4 15H2a2 2 0 0 0 2 2v-2ZM16 5h2a2 2 0 0 0-2-2v2ZM4 3a2 2 0 0 0-2 2h2V3Zm16 16v2a2 2 0 0 0 2-2h-2ZM8 19H6a2 2 0 0 0 2 2v-2ZM22 9a2 2 0 0 0-2-2v2h2Z" class="icon-dark"/>`
};
const cyTestingTypeE2EX64 = {
  name: "testingTypeE2EX64",
  data: `<path fill="#D0D2E0" d="M55.5 55a1.5 1.5 0 0 0 1.5-1.5v-34a1.5 1.5 0 0 0-1.5-1.5H48v26.5a1.5 1.5 0 0 1-1.5 1.5H16v7.5a1.5 1.5 0 0 0 1.5 1.5h38ZM48 10.5A1.5 1.5 0 0 0 46.5 9h-38A1.5 1.5 0 0 0 7 10.5V18h41v-7.5Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 18v26.5A1.5 1.5 0 0 0 8.5 46H16M7 18v-7.5A1.5 1.5 0 0 1 8.5 9h38a1.5 1.5 0 0 1 1.5 1.5V18M7 18h41M16 46h30.5a1.5 1.5 0 0 0 1.5-1.5V18M16 46v7.5a1.5 1.5 0 0 0 1.5 1.5h38a1.5 1.5 0 0 0 1.5-1.5v-34a1.5 1.5 0 0 0-1.5-1.5H48m-5-4.5H25m-13.001 0h.014m3.987 0h.013m3.987 0h.013" class="icon-dark"/>`
};
const cyTestingTypeE2ESolidX24 = {
  name: "testingTypeE2ESolidX24",
  data: `<path fill="#D0D2E0" d="M4 3a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H4Z" class="icon-light"/><path fill="currentColor" d="M20 21a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2v8a2 2 0 0 1-2 2H6v2a2 2 0 0 0 2 2h12ZM6 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM12 6a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyTestingTypeE2ESolidX64 = {
  name: "testingTypeE2ESolidX64",
  data: `<path fill="#D0D2E0" d="M9 8a3 3 0 0 0-3 3v33a3 3 0 0 0 3 3h37a3 3 0 0 0 3-3V11a3 3 0 0 0-3-3H9Z" class="icon-light"/><path fill="currentColor" d="M55 56a3 3 0 0 0 3-3V20a3 3 0 0 0-3-3h-6v27a3 3 0 0 1-3 3H15v6a3 3 0 0 0 3 3h37Z" class="icon-dark"/><path fill="currentColor" fill-rule="evenodd" d="M49 11a3 3 0 0 0-3-3H9a3 3 0 0 0-3 3v6h43v-6Zm-5 .5a1 1 0 1 1 0 2H25a1 1 0 1 1 0-2h19Zm-33 2a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm4-2a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm4 2a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const cyTimeCalendarDayX16 = {
  name: "timeCalendarDayX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M14 4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v2h12V4Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 6V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v2m12 0v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6m12 0H2m3-5v2m6-2v2M5 9v1h1V9H5Z" class="icon-dark"/>`
};
const cyTimeStopwatchX16 = {
  name: "timeStopwatchX16",
  data: `<path fill="#D0D2E0" fill-rule="evenodd" d="M13.5 9.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM8 9.993a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1Z" class="icon-light" clip-rule="evenodd"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 4V1m0 3c1.519 0 2.894.616 3.89 1.61M8 4a5.483 5.483 0 0 0-3.89 1.61M8 1h2M8 1H6m5.89 4.61a5.5 5.5 0 1 1-7.778 0m7.777 0L13 4.5M4.11 5.61 3 4.5m5 5 .357-.357M10 7.5 8.357 9.143m0 0a.498.498 0 0 1-.357.85.5.5 0 1 1 .357-.85Z" class="icon-dark"/>`
};
const cyUserGeneralOutlineX16 = {
  name: "userGeneralOutlineX16",
  data: `<path fill="transparent" d="M8 1a7 7 0 0 0-4.9 12 5.009 5.009 0 0 1 3.043-3.644 3 3 0 1 1 3.714 0A5.009 5.009 0 0 1 12.9 13 7 7 0 0 0 8 1Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="M6.143 9.356C6.653 9.76 7.299 10 8 10c.701 0 1.346-.24 1.857-.644m-3.714 0a3 3 0 1 1 3.714 0m-3.714 0A5.009 5.009 0 0 0 3.1 13m6.757-3.643A5.009 5.009 0 0 1 12.9 13m0 0a7 7 0 1 0-9.8 0m9.8 0A6.977 6.977 0 0 1 8 15a6.977 6.977 0 0 1-4.9-2" class="icon-dark"/>`
};
const cyUserGeneralSolidX16 = {
  name: "userGeneralSolidX16",
  data: `<path fill="#D0D2E0" d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0Z" class="icon-light"/><path fill="#D0D2E0" d="M5 7a3 3 0 1 1 4.857 2.356A5.009 5.009 0 0 1 12.9 13 6.977 6.977 0 0 1 8 15a6.977 6.977 0 0 1-4.9-2 5.009 5.009 0 0 1 3.043-3.644A2.995 2.995 0 0 1 5 7Z" class="icon-light"/><path stroke="currentColor" stroke-width="2" d="M6.143 9.356C6.653 9.76 7.299 10 8 10c.701 0 1.346-.24 1.857-.644m-3.714 0a3 3 0 1 1 3.714 0m-3.714 0A5.009 5.009 0 0 0 3.1 13 6.977 6.977 0 0 0 8 15a6.977 6.977 0 0 0 4.9-2 5.009 5.009 0 0 0-3.043-3.644" class="icon-dark"/>`
};
const cyViewListX16 = {
  name: "viewListX16",
  data: `<path fill="currentColor" fill-opacity=".4" d="M1 7h2v2H1V7ZM1 1h2v2H1V1Z" class="icon-dark"/><path fill="currentColor" d="M15 3a1 1 0 1 0 0-2v2ZM6 1a1 1 0 0 0 0 2V1Zm9 8a1 1 0 1 0 0-2v2ZM6 7a1 1 0 1 0 0 2V7ZM1 3H0a1 1 0 0 0 1 1V3Zm2-2h1a1 1 0 0 0-1-1v1ZM1 1V0a1 1 0 0 0-1 1h1Zm2 2v1a1 1 0 0 0 1-1H3ZM1 7V6a1 1 0 0 0-1 1h1Zm2 0h1a1 1 0 0 0-1-1v1Zm0 2v1a1 1 0 0 0 1-1H3ZM1 9H0a1 1 0 0 0 1 1V9Zm14-8H6v2h9V1Zm0 6H6v2h9V7ZM1 8h2V6H1v2Zm1-1v2h2V7H2Zm1 1H1v2h2V8ZM2 9V7H0v2h2ZM1 2h2V0H1v2Zm3 1V1H2v2h2ZM3 2H1v2h2V2ZM2 3V1H0v2h2Z" class="icon-dark"/>`
};
const cyViewPieChartX16 = {
  name: "viewPieChartX16",
  data: `<path fill="#D0D2E0" d="M8 1a7 7 0 0 1 7 7H8V1Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 8a7 7 0 0 1-11.95 4.95M15 8a7 7 0 0 0-7-7m7 7H8m0-7a6.978 6.978 0 0 0-4.95 2.05A6.978 6.978 0 0 0 1 8c0 1.933.784 3.683 2.05 4.95M8 1v7m-4.95 4.95L8 8" class="icon-dark"/>`
};
const cyViewPieChartX24 = {
  name: "viewPieChartX24",
  data: `<path fill="#D0D2E0" d="M12 3a9 9 0 0 1 9 9h-9V3Z" class="icon-light"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 0 1-15.364 6.364M21 12a9 9 0 0 0-9-9m9 9h-9m0-9a8.972 8.972 0 0 0-6.364 2.636A8.972 8.972 0 0 0 3 12a8.972 8.972 0 0 0 2.636 6.364M12 3v9m-6.364 6.364L12 12" class="icon-dark"/>`
};
const cyViewTreeAltX16 = {
  name: "viewTreeAltX16",
  data: `<path fill="currentColor" d="M13 1.999h2v2h-2v-2ZM13 7.999h2v2h-2v-2Z" class="icon-dark"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 2.999v6h6m-6-6H1m3 0h6m3 1h2v-2h-2v2Zm0 6h2v-2h-2v2Z" class="icon-dark"/>`
};
const cyWarningX8 = {
  name: "warningX8",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M4 0a1 1 0 0 1 1 1v3a1 1 0 0 1-2 0V1a1 1 0 0 1 1-1Z" class="icon-dark" clip-rule="evenodd"/><path fill="currentColor" d="M5 7a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z" class="icon-dark"/>`
};
const cyWarningCircleX16 = {
  name: "warningCircleX16",
  data: `<path fill="currentColor" fill-rule="evenodd" d="M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8Zm6-8a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm1 5a1 1 0 0 0-2 0v3a1 1 0 0 0 2 0V5Zm-1 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" class="icon-dark" clip-rule="evenodd"/>`
};
const iconSet = [
  cyActionAddX8,
  cyActionAddLargeX16,
  cyActionAddMediumX16,
  cyActionAddSmallX16,
  cyActionAddXsmallX16,
  cyActionDeleteX12,
  cyActionDeleteCircleX16,
  cyActionDeleteLargeX16,
  cyActionDeleteLargeX24,
  cyActionDeleteMediumX16,
  cyActionDeleteXlargeX16,
  cyActionDisableCircleSolidX16,
  cyActionExportX16,
  cyActionNextX16,
  cyActionPlayLargeX16,
  cyActionPlaySmallX16,
  cyActionPlayVideoX16,
  cyActionPlayVideoX24,
  cyActionPowerX16,
  cyActionQuestionMarkCircleX16,
  cyActionQuestionMarkDefaultX16,
  cyActionQuestionMarkOutlineX16,
  cyActionRecordX16,
  cyActionRefreshX16,
  cyActionRestartX16,
  cyActionStopX16,
  cyArrowBottomRightX16,
  cyArrowCollapseX16,
  cyArrowDownX16,
  cyArrowExpandX16,
  cyArrowLeftX16,
  cyArrowOutlineDownX16,
  cyArrowRightX16,
  cyArrowRightLargeX16,
  cyArrowSquareDownX16,
  cyArrowTopRightX16,
  cyArrowUpX16,
  cyBrowserChromeX16,
  cyBrowserChromeBetaX16,
  cyBrowserChromeCanaryX16,
  cyBrowserEdgeX16,
  cyBrowserElectronDarkX16,
  cyBrowserElectronLightX16,
  cyBrowserMozillaFirefoxX16,
  cyBrowserSafariX16,
  cyBrowserWebkitX16,
  cyCheckmarkX16,
  cyCheckmarkOutlineX16,
  cyCheckmarkSmallX16,
  cyCheckmarkSolidX16,
  cyCheckmarkSolidX24,
  cyChevronDownDoubleX16,
  cyChevronDownLargeX16,
  cyChevronDownMediumX16,
  cyChevronDownSmallX16,
  cyChevronDownSmallX8,
  cyChevronLeftDoubleX16,
  cyChevronLeftLargeX16,
  cyChevronLeftSmallX16,
  cyChevronLeftSmallX8,
  cyChevronRightDoubleX16,
  cyChevronRightLargeX16,
  cyChevronRightSmallX16,
  cyChevronRightSmallX8,
  cyChevronUpDoubleX16,
  cyChevronUpLargeX16,
  cyChevronUpSmallX16,
  cyChevronUpSmallX8,
  cyCurrencyEurX16,
  cyCurrencyGbpX16,
  cyCurrencyInrX16,
  cyCurrencyRubX16,
  cyCurrencyUsdX16,
  cyDeviceLaptopX24,
  cyDeviceSmartphoneX16,
  cyDeviceSmartphoneX24,
  cyDocumentAddedX16,
  cyDocumentAddedSquarePlusX16,
  cyDocumentAddedSquarePlusX24,
  cyDocumentBlankX16,
  cyDocumentBlankX24,
  cyDocumentBlankX48,
  cyDocumentCodeX24,
  cyDocumentCodeX48,
  cyDocumentDeletedX16,
  cyDocumentDownloadX16,
  cyDocumentDownloadX24,
  cyDocumentMinusX16,
  cyDocumentMinusX24,
  cyDocumentModifiedX16,
  cyDocumentModifiedSquareDotX16,
  cyDocumentModifiedSquareDotX24,
  cyDocumentPlusX16,
  cyDocumentPlusX24,
  cyDocumentPlusMinusX16,
  cyDocumentPlusMinusX24,
  cyDocumentScriptX24,
  cyDocumentSheetX24,
  cyDocumentStarX16,
  cyDocumentStarX24,
  cyDocumentTextX16,
  cyDotOutlineLargeX8,
  cyDotOutlineSmallX8,
  cyFileChangesAddedX24,
  cyFileChangesErrorX24,
  cyFileChangesSkippedX24,
  cyFileChangesWarningX24,
  cyGeneral1XX16,
  cyGeneralChatBubbleX16,
  cyGeneralClipboardX16,
  cyGeneralCommandKeyX16,
  cyGeneralCrosshairsX16,
  cyGeneralEarthX16,
  cyGeneralEyeClosedX16,
  cyGeneralEyeOpenX16,
  cyGeneralGlobeX16,
  cyGeneralGlobeX48,
  cyGeneralGrid2X2X16,
  cyGeneralGrid2X2X24,
  cyGeneralGrid2X2MediumX16,
  cyGeneralGrid2X2SmallX16,
  cyGeneralHandleVerticalX16,
  cyGeneralLifeRingX16,
  cyGeneralOfficeBuildingX16,
  cyGeneralPlaceholderX12,
  cyGeneralPlaceholderX16,
  cyGeneralPlaceholderX24,
  cyGeneralPlaceholderX48,
  cyGeneralRocketX16,
  cyGeneralRocketX24,
  cyLoadingX16,
  cyMenuDotsVerticalX16,
  cyMenuExpandLeftX16,
  cyMenuExpandRightX16,
  cyMenuHamburgerX24,
  cyNumber1X24,
  cyNumber2X24,
  cyNumber3X24,
  cyNumber4X24,
  cyNumber5X24,
  cyNumberOctothorpeX24,
  cyObjectBookX16,
  cyObjectBookX24,
  cyObjectBookX48,
  cyObjectBookCodeX48,
  cyObjectBookmarkX16,
  cyObjectBookmarkX24,
  cyObjectBoxX16,
  cyObjectBoxX24,
  cyObjectBoxOpenX48,
  cyObjectBriefcaseX16,
  cyObjectBugX24,
  cyObjectChainLinkX16,
  cyObjectFolderDarkX16,
  cyObjectFolderDarkSmallX16,
  cyObjectFolderLightX16,
  cyObjectFolderLightX24,
  cyObjectGearX16,
  cyObjectGearX24,
  cyObjectGraduationCapX16,
  cyObjectLetterX16,
  cyObjectMagicWandDarkModeX16,
  cyObjectMagnifyingGlassX16,
  cyObjectOdometerX24,
  cyObjectPaperAirplaneX16,
  cyObjectPinModernX16,
  cyObjectRulerX16,
  cyObjectSlidersRoundX16,
  cyObjectTagX16,
  cyObjectTasselX16,
  cyOsAppleX16,
  cyOsGenericX16,
  cyOsLinuxX16,
  cyOsWindowsX16,
  cySecurityKeyX16,
  cySecurityKeyX24,
  cySecurityLockLockedX16,
  cySecurityShieldCrossX16,
  cySecurityShieldCrossX24,
  cyShapeHeartX16,
  cyShapeHeartX24,
  cyShapeLightningBoltX16,
  cyShapeLightningBoltX24,
  cyShapeMoonCrescentX16,
  cyShapeStarX16,
  cyShapeStarX24,
  cyShapeSunLongX16,
  cySocialDiscordSolidX16,
  cySocialEmailX16,
  cySocialFacebookSolidX16,
  cySocialGithubSolidX16,
  cySocialLinkedinSolidX16,
  cySocialTwitterSolidX16,
  cySocialYoutubeSolidX16,
  cyStatusCancelledOutlineX16,
  cyStatusCancelledOutlineX24,
  cyStatusCancelledSimpleX4,
  cyStatusCancelledSimpleX8,
  cyStatusCancelledSolidX12,
  cyStatusCancelledSolidX16,
  cyStatusCancelledSolidX24,
  cyStatusErroredOutlineX16,
  cyStatusErroredOutlineX24,
  cyStatusErroredSimpleX4,
  cyStatusErroredSimpleX8,
  cyStatusErroredSolidX12,
  cyStatusErroredSolidX16,
  cyStatusErroredSolidX24,
  cyStatusFailedOutlineX16,
  cyStatusFailedOutlineX24,
  cyStatusFailedSimpleX12,
  cyStatusFailedSimpleX16,
  cyStatusFailedSimpleX24,
  cyStatusFailedSimpleX4,
  cyStatusFailedSimpleX8,
  cyStatusFailedSolidX16,
  cyStatusFailedSolidX24,
  cyStatusFlakyX16,
  cyStatusFlakyX24,
  cyStatusPassedOutlineX16,
  cyStatusPassedOutlineX24,
  cyStatusPassedSimpleX12,
  cyStatusPassedSimpleX16,
  cyStatusPassedSimpleX24,
  cyStatusPassedSimpleX4,
  cyStatusPassedSimpleX8,
  cyStatusPassedSolidX16,
  cyStatusPassedSolidX24,
  cyStatusPendingOutlineX12,
  cyStatusPendingOutlineX16,
  cyStatusPendingOutlineX24,
  cyStatusPendingSimpleX4,
  cyStatusPendingSimpleX8,
  cyStatusPlaceholderSimpleX4,
  cyStatusPlaceholderSimpleX8,
  cyStatusPlaceholderSolidX12,
  cyStatusPlaceholderSolidX16,
  cyStatusPlaceholderSolidX24,
  cyStatusQueuedOutlineX12,
  cyStatusQueuedOutlineX16,
  cyStatusQueuedOutlineX24,
  cyStatusQueuedSimpleX4,
  cyStatusQueuedSimpleX8,
  cyStatusRunningOutlineX12,
  cyStatusRunningOutlineX16,
  cyStatusRunningOutlineX24,
  cyStatusRunningSimpleX4,
  cyStatusRunningSimpleX8,
  cyStatusSkippedOutlineX12,
  cyStatusSkippedOutlineX16,
  cyStatusSkippedOutlineX24,
  cyStatusSkippedSimpleX4,
  cyStatusSkippedSimpleX8,
  cyTechnologyBranchHX16,
  cyTechnologyBranchHTallX16,
  cyTechnologyBrowserDarkX16,
  cyTechnologyBrowserLightX16,
  cyTechnologyBrowserTesting2X48,
  cyTechnologyCodeEditorX16,
  cyTechnologyCodeEditorX24,
  cyTechnologyCommandLineX16,
  cyTechnologyCommandLineErrorX48,
  cyTechnologyCypressX16,
  cyTechnologyDashboardCheckmarkX48,
  cyTechnologyDashboardFailX48,
  cyTechnologyDashboardRunningX48,
  cyTechnologyDebuggerX24,
  cyTechnologyDollarX16,
  cyTechnologyDragProjectX48,
  cyTechnologyElementSelectorX16,
  cyTechnologyImageScreenshotX16,
  cyTechnologyImageScreenshotX24,
  cyTechnologyInfinityLoopX16,
  cyTechnologyInfinityLoopX20,
  cyTechnologyInfinityLoopX24,
  cyTechnologyLockedProjectX48,
  cyTechnologyOctothorpeX16,
  cyTechnologyPullRequestX16,
  cyTechnologyServerX16,
  cyTechnologyTerminalX16,
  cyTechnologyTerminalLogX16,
  cyTechnologyTestResultsX16,
  cyTechnologyTestResultsX24,
  cyTestingTypeComponentX16,
  cyTestingTypeComponentX24,
  cyTestingTypeComponentX64,
  cyTestingTypeComponentSolidX24,
  cyTestingTypeComponentSolidX64,
  cyTestingTypeE2EX16,
  cyTestingTypeE2EX24,
  cyTestingTypeE2EX64,
  cyTestingTypeE2ESolidX24,
  cyTestingTypeE2ESolidX64,
  cyTimeCalendarDayX16,
  cyTimeStopwatchX16,
  cyUserGeneralOutlineX16,
  cyUserGeneralSolidX16,
  cyViewListX16,
  cyViewPieChartX16,
  cyViewPieChartX24,
  cyViewTreeAltX16,
  cyWarningX8,
  cyWarningCircleX16
];
const compileIcon = (props) => {
  const { interactiveColorsOnGroup, name: name2 } = props, cleanProps = __rest(props, ["interactiveColorsOnGroup", "name"]);
  const { availableSizes } = iconsMetadata[name2];
  const { sizeWithDefault, compiledClasses } = getComponentAttributes(Object.assign(Object.assign({}, cleanProps), {
    availableSizes,
    interactiveColorsOnGroup
  }));
  const nameWithSize = camelCase$1(`${name2}_x${sizeWithDefault}`);
  const iconData = iconSet.find((i2) => i2.name === nameWithSize);
  if (!iconData) {
    throw new Error(`icon '${name2}' at size ${sizeWithDefault} not found`);
  }
  const compiledProps = Object.assign(Object.assign({}, cleanProps), { size: sizeWithDefault, compiledClasses, body: iconData.data });
  return compiledProps;
};
const getComponentAttributes = (props) => {
  const { size: size2, availableSizes, interactiveColorsOnGroup } = props, otherProps = __rest(props, ["size", "availableSizes", "interactiveColorsOnGroup"]);
  const sizeWithDefault = size2 !== null && size2 !== void 0 ? size2 : availableSizes.length >= 1 ? availableSizes.indexOf("16") > -1 ? "16" : availableSizes[0] : "";
  const protectedInteractiveColorsOnGroup = interactiveColorsOnGroup === void 0 ? otherProps["interactive-colors-on-group"] : interactiveColorsOnGroup;
  delete otherProps["interactive-colors-on-group"];
  const compiledClasses = Object.keys(otherProps).filter((attrName) => ICON_COLOR_PROP_NAMES.includes(attrName)).map((colorAttrName) => {
    const color = otherProps[colorAttrName];
    const lowerCaseColor = colorAttrName.toLowerCase().replace(/-/g, "");
    const colorClass = lowerCaseColor.includes("strokecolor") ? "dark" : "light";
    const secondaryClass = lowerCaseColor.includes("secondary") ? "-secondary" : "";
    const pseudoClass = COLOR_PREFIXES.reduce((state, sta) => {
      if (state.length)
        return state;
      return lowerCaseColor.includes(sta.replace(/-/g, "")) ? sta : "";
    }, "");
    const prefix = pseudoClass.length ? protectedInteractiveColorsOnGroup !== void 0 && protectedInteractiveColorsOnGroup !== false ? `group-${pseudoClass}:` : `icon-${pseudoClass}:` : "";
    const finalClass = `${prefix}icon-${colorClass}${secondaryClass}-${color}`;
    return finalClass;
  });
  return { compiledClasses, sizeWithDefault };
};
const c = ({
  body: a2,
  compiledClasses: t2,
  size: n,
  ...e
}) => {
  const o2 = Object.keys(e).reduce(
    (r2, s2) => (!ICON_COLOR_PROP_NAMES.includes(
      s2
    ) && s2 !== "name" && (r2[s2] = e[s2]), r2),
    {}
  ), i2 = {
    width: n,
    height: n,
    viewBox: `0 0 ${n} ${n}`,
    fill: "none",
    innerHTML: a2,
    class: void 0,
    ...o2
    // add all standard attributes back to the svg tag
  };
  return t2.length && (i2.class = t2.join(" ")), i2;
}, u = (a2) => {
  const { class: t2, ...n } = a2, e = c(compileIcon(n));
  return h$1("svg", {
    ...e,
    class: [t2, e.class]
  });
};
function getUtmSource() {
  return window.__CYPRESS_MODE__ ? "Binary: App" : "Binary: Launchpad";
}
const getUrlWithParams = (link4) => {
  let result = link4.url;
  const paramNames = Object.keys(link4.params);
  if (paramNames.length > 0) {
    const hasUtmParams = paramNames.some((param) => param.startsWith("utm_"));
    if (hasUtmParams) {
      link4.params.utm_source = getUtmSource();
    }
    let url2;
    let searchParams;
    if (link4.url.includes("?")) {
      url2 = link4.url.substring(0, link4.url.indexOf("?"));
      searchParams = new URLSearchParams(link4.url.substring(link4.url.indexOf("?")));
    } else {
      url2 = link4.url;
      searchParams = new URLSearchParams();
    }
    Object.entries(link4.params).forEach(([key, value]) => searchParams.append(key, value));
    result = `${url2}?${searchParams.toString()}`;
  }
  return result;
};
const _hoisted_1$1Y = { class: "flex bg-gray-50 h-[48px] py-[12px] px-[17px] text-gray-800 items-center" };
const _hoisted_2$1J = { class: "ml-[15px]" };
const _sfc_main$1m = /* @__PURE__ */ defineComponent({
  __name: "FrameworkOptionsFooter",
  setup(__props) {
    const { t: t2 } = useI18n();
    const href = getUrlWithParams({ url: "https://on.cypress.io/component-integrations", params: {
      utm_medium: "Select Framework Dropdown",
      utm_source: getUtmSource(),
      utm_campaign: "Browse third-party frameworks"
    } });
    return (_ctx, _cache) => {
      const _component_i_cy_arrow_right_x16 = __unplugin_components_0$n;
      return openBlock(), createElementBlock("div", _hoisted_1$1Y, [
        createBaseVNode("div", null, [
          createVNode(unref(u), {
            name: "general-grid-2x2",
            size: "16",
            "stroke-color": "gray-500",
            "fill-color": "gray-100"
          })
        ]),
        createBaseVNode("div", _hoisted_2$1J, [
          createVNode(_sfc_main$1x, {
            href: unref(href),
            class: "text-indigo-500 block hocus-link-default group"
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("setupPage.projectSetup.browseIntegrations")), 1),
              createVNode(_component_i_cy_arrow_right_x16, { class: "ml-[4px] transform transition-transform ease-in translate-y-[-1px] duration-200 inline-block icon-dark-current group-hocus:translate-x-[2px]" })
            ]),
            _: 1
          }, 8, ["href"])
        ])
      ]);
    };
  }
});
const _hoisted_1$1X = { class: "mt-[16px] mb-[8px] text-[16px] leading-[24px]" };
const _hoisted_2$1I = {
  key: 0,
  class: "ml-[4px] text-gray-500"
};
const _hoisted_3$1r = ["innerHTML"];
const _hoisted_4$T = { class: "text-gray-800 inline-block" };
const _hoisted_5$v = {
  key: 2,
  class: "ml-[4px] text-gray-400 inline-block"
};
const _hoisted_6$i = { class: "text-gray-800 inline-block" };
const _hoisted_7$e = {
  key: 2,
  class: "ml-[4px] text-gray-400 inline-block"
};
const _hoisted_8$d = ["innerHTML"];
const _sfc_main$1l = /* @__PURE__ */ defineComponent({
  __name: "SelectFrameworkOrBundler",
  props: {
    value: { default: void 0 },
    placeholder: { default: void 0 },
    options: null,
    label: { default: void 0 },
    description: { default: void 0 },
    selectorType: null
  },
  emits: ["selectFramework", "selectBundler"],
  setup(__props, { emit: emit2 }) {
    var _a2, _b2;
    const props = __props;
    const { t: t2 } = useI18n();
    const selectedOptionObject = computed(() => {
      return props.options.find((opt) => opt.type === props.value);
    });
    const selectedFrameworkOptionObject = computed(() => {
      const found = props.options.find((opt) => opt.type === props.value);
      return found ? found : void 0;
    });
    const selectedOptionName = ref(((_a2 = selectedOptionObject.value) == null ? void 0 : _a2.name) || "");
    const isDetected = ref((_b2 = selectedOptionObject.value) == null ? void 0 : _b2.isDetected);
    watch(selectedOptionObject, () => {
      if (selectedOptionObject.value) {
        selectedOptionName.value = selectedOptionObject.value.name;
        isDetected.value = selectedOptionObject.value.isDetected;
      }
    });
    const selectOption = (opt) => {
      selectedOptionName.value = opt.name;
      isDetected.value = opt.isDetected;
      if (props.selectorType === "framework") {
        emit2("selectFramework", opt.type);
      } else {
        emit2("selectBundler", opt.type);
      }
    };
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$1p, {
        "model-value": unref(selectedOptionObject),
        placeholder: props.placeholder,
        options: props.options,
        "item-key": "id",
        "onUpdate:modelValue": selectOption
      }, createSlots({
        label: withCtx(() => [
          createBaseVNode("div", _hoisted_1$1X, [
            createBaseVNode("span", null, toDisplayString$1(props.label), 1),
            props.description ? (openBlock(), createElementBlock("span", _hoisted_2$1I, toDisplayString$1(props.description), 1)) : createCommentVNode("", true)
          ])
        ]),
        selected: withCtx(() => {
          var _a3, _b3;
          return [
            createBaseVNode("span", _hoisted_4$T, toDisplayString$1(selectedOptionName.value), 1),
            ((_a3 = unref(selectedFrameworkOptionObject)) == null ? void 0 : _a3.supportStatus) === "alpha" ? (openBlock(), createBlock(_sfc_main$1o, { key: 0 })) : createCommentVNode("", true),
            ((_b3 = unref(selectedFrameworkOptionObject)) == null ? void 0 : _b3.supportStatus) === "community" ? (openBlock(), createBlock(_sfc_main$1n, { key: 1 })) : createCommentVNode("", true),
            isDetected.value ? (openBlock(), createElementBlock("span", _hoisted_5$v, toDisplayString$1(unref(t2)("setupPage.projectSetup.detected")), 1)) : createCommentVNode("", true)
          ];
        }),
        "item-body": withCtx(({ value: itemValue }) => [
          createBaseVNode("span", _hoisted_6$i, toDisplayString$1(itemValue.name), 1),
          itemValue.supportStatus === "alpha" ? (openBlock(), createBlock(_sfc_main$1o, { key: 0 })) : itemValue.supportStatus === "community" ? (openBlock(), createBlock(_sfc_main$1n, { key: 1 })) : createCommentVNode("", true),
          itemValue.isDetected ? (openBlock(), createElementBlock("span", _hoisted_7$e, toDisplayString$1(unref(t2)("setupPage.projectSetup.detected")), 1)) : createCommentVNode("", true)
        ]),
        "item-prefix": withCtx(({ value: itemValue }) => [
          !(itemValue == null ? void 0 : itemValue.icon) ? (openBlock(), createBlock(resolveDynamicComponent(unref(FrameworkBundlerLogos)[itemValue == null ? void 0 : itemValue.type]), {
            key: 0,
            class: "h-[16px] w-[16px]"
          })) : (openBlock(), createElementBlock("div", {
            key: 1,
            class: "h-[16px] w-[16px]",
            innerHTML: itemValue.icon
          }, null, 8, _hoisted_8$d))
        ]),
        _: 2
      }, [
        __props.value ? {
          name: "input-prefix",
          fn: withCtx(({ value: itemValue }) => [
            !(itemValue == null ? void 0 : itemValue.icon) ? (openBlock(), createBlock(resolveDynamicComponent(unref(FrameworkBundlerLogos)[itemValue == null ? void 0 : itemValue.type]), {
              key: 0,
              class: "h-[16px] w-[16px]"
            })) : (openBlock(), createElementBlock("div", {
              key: 1,
              class: "h-[16px] w-[16px]",
              innerHTML: itemValue.icon
            }, null, 8, _hoisted_3$1r))
          ]),
          key: "0"
        } : void 0,
        __props.selectorType === "framework" ? {
          name: "footer",
          fn: withCtx(() => [
            createVNode(_sfc_main$1m)
          ]),
          key: "1"
        } : void 0
      ]), 1032, ["model-value", "placeholder", "options"]);
    };
  }
});
const _hoisted_1$1W = { class: "relative shrink" };
const _hoisted_2$1H = ["aria-label"];
const _sfc_main$1k = /* @__PURE__ */ defineComponent({
  __name: "AlertHeader",
  props: {
    title: null,
    prefixIcon: null,
    suffixIcon: null,
    suffixIconAriaLabel: null,
    alertClass: null,
    prefixIconClass: null,
    suffixIconClass: null,
    headerClass: null,
    suffixButtonClass: null
  },
  emits: ["suffixIconClicked"],
  setup(__props, { emit: emit2 }) {
    const onSuffixIconClicked = () => {
      emit2("suffixIconClicked");
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["flex gap-[8px] group items-center relative", [__props.alertClass, __props.headerClass]])
      }, [
        renderSlot(_ctx.$slots, "prefixIcon", {}, () => [
          __props.prefixIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
            key: 0,
            "data-cy": "alert-prefix-icon",
            class: normalizeClass(["h-[16px] w-[16px] icon-dark-current", __props.prefixIconClass])
          }, null, 8, ["class"])) : createCommentVNode("", true)
        ]),
        createBaseVNode("h3", {
          class: normalizeClass(["grow font-medium text-left leading-normal decoration-current", __props.headerClass])
        }, [
          renderSlot(_ctx.$slots, "title", {}, () => [
            createTextVNode(toDisplayString$1(__props.title), 1)
          ])
        ], 2),
        createBaseVNode("div", _hoisted_1$1W, [
          renderSlot(_ctx.$slots, "suffixIcon", normalizeProps(guardReactiveProps({ ariaLabel: __props.suffixIconAriaLabel, buttonClasses: __props.suffixButtonClass, iconClasses: __props.suffixIconClass, onClick: onSuffixIconClicked })), () => [
            __props.suffixIcon ? (openBlock(), createElementBlock("button", {
              key: 0,
              "data-cy": "alert-suffix-icon",
              "aria-label": __props.suffixIconAriaLabel,
              class: normalizeClass(["rounded-full flex outline-none h-[32px] -top-[16px] right-[-8px] w-[32px] hocus:ring-current items-center justify-center absolute hocus:ring-1", __props.suffixButtonClass]),
              onClick: onSuffixIconClicked
            }, [
              (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                class: normalizeClass(["h-[16px] w-[16px]", __props.suffixIconClass])
              }, null, 8, ["class"]))
            ], 10, _hoisted_2$1H)) : createCommentVNode("", true)
          ])
        ])
      ], 2);
    };
  }
});
const _hoisted_1$1V = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1G = /* @__PURE__ */ createBaseVNode("path", {
  d: "M3 13L13 3M3 3L13 13",
  class: "icon-dark",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$1q = [
  _hoisted_2$1G
];
function render$W(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1V, _hoisted_3$1q);
}
const DeleteIcon = { name: "cy-delete_x16", render: render$W };
const _hoisted_1$1U = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1F = /* @__PURE__ */ createBaseVNode("path", {
  d: "M4 6L8 10L12 6",
  stroke: "currentColor",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$1p = [
  _hoisted_2$1F
];
function render$V(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1U, _hoisted_3$1p);
}
const ChevronDown = { name: "cy-chevron-down-small_x16", render: render$V };
var isVue2 = false;
function tryOnScopeDispose(fn) {
  if (getCurrentScope()) {
    onScopeDispose(fn);
    return true;
  }
  return false;
}
const isClient = typeof window !== "undefined";
const isString$1 = (val) => typeof val === "string";
const noop$1 = () => {
};
function createFilterWrapper(filter, fn) {
  function wrapper(...args) {
    filter(() => fn.apply(this, args), { fn, thisArg: this, args });
  }
  return wrapper;
}
const bypassFilter = (invoke) => {
  return invoke();
};
function debounceFilter(ms2, options2 = {}) {
  let timer;
  let maxTimer;
  const filter = (invoke) => {
    const duration = unref(ms2);
    const maxDuration = unref(options2.maxWait);
    if (timer)
      clearTimeout(timer);
    if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {
      if (maxTimer) {
        clearTimeout(maxTimer);
        maxTimer = null;
      }
      return invoke();
    }
    if (maxDuration && !maxTimer) {
      maxTimer = setTimeout(() => {
        if (timer)
          clearTimeout(timer);
        maxTimer = null;
        invoke();
      }, maxDuration);
    }
    timer = setTimeout(() => {
      if (maxTimer)
        clearTimeout(maxTimer);
      maxTimer = null;
      invoke();
    }, duration);
  };
  return filter;
}
function throttleFilter(ms2, trailing = true, leading = true) {
  let lastExec = 0;
  let timer;
  let preventLeading = !leading;
  const clear2 = () => {
    if (timer) {
      clearTimeout(timer);
      timer = void 0;
    }
  };
  const filter = (invoke) => {
    const duration = unref(ms2);
    const elapsed = Date.now() - lastExec;
    clear2();
    if (duration <= 0) {
      lastExec = Date.now();
      return invoke();
    }
    if (elapsed > duration) {
      lastExec = Date.now();
      if (preventLeading)
        preventLeading = false;
      else
        invoke();
    } else if (trailing) {
      timer = setTimeout(() => {
        lastExec = Date.now();
        if (!leading)
          preventLeading = true;
        clear2();
        invoke();
      }, duration);
    }
    if (!leading && !timer)
      timer = setTimeout(() => preventLeading = true, duration);
  };
  return filter;
}
function useDebounceFn(fn, ms2 = 200, options2 = {}) {
  return createFilterWrapper(debounceFilter(ms2, options2), fn);
}
var __getOwnPropSymbols$9$1 = Object.getOwnPropertySymbols;
var __hasOwnProp$9$1 = Object.prototype.hasOwnProperty;
var __propIsEnum$9$1 = Object.prototype.propertyIsEnumerable;
var __objRest$5 = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$9$1.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$9$1)
    for (var prop2 of __getOwnPropSymbols$9$1(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$9$1.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
function watchWithFilter(source, cb, options2 = {}) {
  const _a2 = options2, {
    eventFilter = bypassFilter
  } = _a2, watchOptions = __objRest$5(_a2, [
    "eventFilter"
  ]);
  return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);
}
var __defProp$7 = Object.defineProperty;
var __defProps$4 = Object.defineProperties;
var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$7 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$8.call(b2, prop2))
      __defNormalProp$7(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$8)
    for (var prop2 of __getOwnPropSymbols$8(b2)) {
      if (__propIsEnum$8.call(b2, prop2))
        __defNormalProp$7(a2, prop2, b2[prop2]);
    }
  return a2;
};
var __spreadProps$4 = (a2, b2) => __defProps$4(a2, __getOwnPropDescs$4(b2));
var __objRest$4 = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$8.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$8)
    for (var prop2 of __getOwnPropSymbols$8(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$8.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
function debouncedWatch(source, cb, options2 = {}) {
  const _a2 = options2, {
    debounce = 0
  } = _a2, watchOptions = __objRest$4(_a2, [
    "debounce"
  ]);
  return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$7({}, watchOptions), {
    eventFilter: debounceFilter(debounce)
  }));
}
function useThrottleFn(fn, ms2 = 200, trailing = true, leading = true) {
  return createFilterWrapper(throttleFilter(ms2, trailing, leading), fn);
}
function useIntervalFn(cb, interval = 1e3, options2 = {}) {
  const {
    immediate = true,
    immediateCallback = false
  } = options2;
  let timer = null;
  const isActive = ref(false);
  function clean() {
    if (timer) {
      clearInterval(timer);
      timer = null;
    }
  }
  function pause() {
    isActive.value = false;
    clean();
  }
  function resume() {
    if (interval <= 0)
      return;
    isActive.value = true;
    if (immediateCallback)
      cb();
    clean();
    timer = setInterval(cb, interval);
  }
  if (immediate && isClient)
    resume();
  tryOnScopeDispose(pause);
  return {
    isActive,
    pause,
    resume
  };
}
function useTimeoutFn(cb, interval, options2 = {}) {
  const {
    immediate = true
  } = options2;
  const isPending = ref(false);
  let timer = null;
  function clear2() {
    if (timer) {
      clearTimeout(timer);
      timer = null;
    }
  }
  function stop2() {
    isPending.value = false;
    clear2();
  }
  function start(...args) {
    clear2();
    isPending.value = true;
    timer = setTimeout(() => {
      isPending.value = false;
      timer = null;
      cb(...args);
    }, unref(interval));
  }
  if (immediate) {
    isPending.value = true;
    if (isClient)
      start();
  }
  tryOnScopeDispose(stop2);
  return {
    isPending,
    start,
    stop: stop2
  };
}
var __defProp$2 = Object.defineProperty;
var __getOwnPropSymbols$1$1 = Object.getOwnPropertySymbols;
var __hasOwnProp$1$1 = Object.prototype.hasOwnProperty;
var __propIsEnum$1$1 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$2 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$1$1.call(b2, prop2))
      __defNormalProp$2(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$1$1)
    for (var prop2 of __getOwnPropSymbols$1$1(b2)) {
      if (__propIsEnum$1$1.call(b2, prop2))
        __defNormalProp$2(a2, prop2, b2[prop2]);
    }
  return a2;
};
function useTimeout(interval = 1e3, options2 = {}) {
  const {
    controls: exposeControls = false
  } = options2;
  const controls = useTimeoutFn(noop$1, interval, options2);
  const ready = computed(() => !controls.isPending.value);
  if (exposeControls) {
    return __spreadValues$2({
      ready
    }, controls);
  } else {
    return ready;
  }
}
function useToggle(initialValue = false) {
  if (isRef(initialValue)) {
    return (value) => {
      initialValue.value = typeof value === "boolean" ? value : !initialValue.value;
    };
  } else {
    const boolean = ref(initialValue);
    const toggle = (value) => {
      boolean.value = typeof value === "boolean" ? value : !boolean.value;
    };
    return [boolean, toggle];
  }
}
function whenever(source, cb, options2) {
  return watch(source, (v, ov, onInvalidate) => {
    if (v)
      cb(v, ov, onInvalidate);
  }, options2);
}
function unrefElement(elRef) {
  var _a2;
  const plain = unref(elRef);
  return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;
}
const defaultWindow = isClient ? window : void 0;
function useEventListener(...args) {
  let target2;
  let event;
  let listener;
  let options2;
  if (isString$1(args[0])) {
    [event, listener, options2] = args;
    target2 = defaultWindow;
  } else {
    [target2, event, listener, options2] = args;
  }
  if (!target2)
    return noop$1;
  let cleanup = noop$1;
  const stopWatch = watch(() => unref(target2), (el2) => {
    cleanup();
    if (!el2)
      return;
    el2.addEventListener(event, listener, options2);
    cleanup = () => {
      el2.removeEventListener(event, listener, options2);
      cleanup = noop$1;
    };
  }, { immediate: true, flush: "post" });
  const stop2 = () => {
    stopWatch();
    cleanup();
  };
  tryOnScopeDispose(stop2);
  return stop2;
}
function onClickOutside(target2, handler, options2 = {}) {
  const { window: window2 = defaultWindow } = options2;
  if (!window2)
    return;
  const shouldListen = ref(true);
  const listener = (event) => {
    const el2 = unrefElement(target2);
    if (!el2 || el2 === event.target || event.composedPath().includes(el2) || !shouldListen.value)
      return;
    handler(event);
  };
  const cleanup = [
    useEventListener(window2, "click", listener, { passive: true, capture: true }),
    useEventListener(window2, "pointerdown", (e) => {
      const el2 = unrefElement(target2);
      shouldListen.value = !!el2 && !e.composedPath().includes(el2);
    }, { passive: true })
  ];
  const stop2 = () => cleanup.forEach((fn) => fn());
  return stop2;
}
const createKeyPredicate = (keyFilter) => {
  if (typeof keyFilter === "function")
    return keyFilter;
  else if (typeof keyFilter === "string")
    return (event) => event.key === keyFilter;
  else if (Array.isArray(keyFilter))
    return (event) => keyFilter.includes(event.key);
  else if (keyFilter)
    return () => true;
  else
    return () => false;
};
function onKeyStroke(key, handler, options2 = {}) {
  const { target: target2 = defaultWindow, eventName = "keydown", passive = false } = options2;
  const predicate = createKeyPredicate(key);
  const listener = (e) => {
    if (predicate(e))
      handler(e);
  };
  return useEventListener(target2, eventName, listener, passive);
}
var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
var __objRest$2 = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$9.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$9)
    for (var prop2 of __getOwnPropSymbols$9(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$9.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
function useResizeObserver(target2, callback, options2 = {}) {
  const _a2 = options2, { window: window2 = defaultWindow } = _a2, observerOptions = __objRest$2(_a2, ["window"]);
  let observer;
  const isSupported = window2 && "ResizeObserver" in window2;
  const cleanup = () => {
    if (observer) {
      observer.disconnect();
      observer = void 0;
    }
  };
  const stopWatch = watch(() => unrefElement(target2), (el2) => {
    cleanup();
    if (isSupported && window2 && el2) {
      observer = new window2.ResizeObserver(callback);
      observer.observe(el2, observerOptions);
    }
  }, { immediate: true, flush: "post" });
  const stop2 = () => {
    cleanup();
    stopWatch();
  };
  tryOnScopeDispose(stop2);
  return {
    isSupported,
    stop: stop2
  };
}
function useElementSize(target2, initialSize = { width: 0, height: 0 }, options2 = {}) {
  const width = ref(initialSize.width);
  const height = ref(initialSize.height);
  useResizeObserver(target2, ([entry]) => {
    width.value = entry.contentRect.width;
    height.value = entry.contentRect.height;
  }, options2);
  return {
    width,
    height
  };
}
function useRafFn(fn, options2 = {}) {
  const {
    immediate = true,
    window: window2 = defaultWindow
  } = options2;
  const isActive = ref(false);
  function loop() {
    if (!isActive.value)
      return;
    fn();
    if (window2)
      window2.requestAnimationFrame(loop);
  }
  function resume() {
    if (!isActive.value) {
      isActive.value = true;
      loop();
    }
  }
  function pause() {
    isActive.value = false;
  }
  if (immediate)
    resume();
  tryOnScopeDispose(pause);
  return {
    isActive,
    pause,
    resume
  };
}
function useNetwork(options2 = {}) {
  const { window: window2 = defaultWindow } = options2;
  const navigator2 = window2 == null ? void 0 : window2.navigator;
  const isSupported = Boolean(navigator2 && "connection" in navigator2);
  const isOnline = ref(true);
  const saveData = ref(false);
  const offlineAt = ref(void 0);
  const downlink = ref(void 0);
  const downlinkMax = ref(void 0);
  const rtt = ref(void 0);
  const effectiveType = ref(void 0);
  const type2 = ref("unknown");
  const connection = isSupported && navigator2.connection;
  function updateNetworkInformation() {
    if (!navigator2)
      return;
    isOnline.value = navigator2.onLine;
    offlineAt.value = isOnline.value ? void 0 : Date.now();
    if (connection) {
      downlink.value = connection.downlink;
      downlinkMax.value = connection.downlinkMax;
      effectiveType.value = connection.effectiveType;
      rtt.value = connection.rtt;
      saveData.value = connection.saveData;
      type2.value = connection.type;
    }
  }
  if (window2) {
    useEventListener(window2, "offline", () => {
      isOnline.value = false;
      offlineAt.value = Date.now();
    });
    useEventListener(window2, "online", () => {
      isOnline.value = true;
    });
  }
  if (connection)
    useEventListener(connection, "change", updateNetworkInformation, false);
  updateNetworkInformation();
  return {
    isSupported,
    isOnline,
    saveData,
    offlineAt,
    downlink,
    downlinkMax,
    effectiveType,
    rtt,
    type: type2
  };
}
var __defProp$5 = Object.defineProperty;
var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$5 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$5.call(b2, prop2))
      __defNormalProp$5(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$5)
    for (var prop2 of __getOwnPropSymbols$5(b2)) {
      if (__propIsEnum$5.call(b2, prop2))
        __defNormalProp$5(a2, prop2, b2[prop2]);
    }
  return a2;
};
function useNow(options2 = {}) {
  const {
    controls: exposeControls = false,
    interval = "requestAnimationFrame"
  } = options2;
  const now = ref(/* @__PURE__ */ new Date());
  const update = () => now.value = /* @__PURE__ */ new Date();
  const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });
  if (exposeControls) {
    return __spreadValues$5({
      now
    }, controls);
  } else {
    return now;
  }
}
function useOnline(options2 = {}) {
  const { isOnline } = useNetwork(options2);
  return isOnline;
}
var SwipeDirection;
(function(SwipeDirection2) {
  SwipeDirection2["UP"] = "UP";
  SwipeDirection2["RIGHT"] = "RIGHT";
  SwipeDirection2["DOWN"] = "DOWN";
  SwipeDirection2["LEFT"] = "LEFT";
  SwipeDirection2["NONE"] = "NONE";
})(SwipeDirection || (SwipeDirection = {}));
function useScroll(element, options2 = {}) {
  const {
    throttle = 0,
    idle = 200,
    onStop = noop$1,
    onScroll = noop$1,
    offset: offset2 = {
      left: 0,
      right: 0,
      top: 0,
      bottom: 0
    },
    eventListenerOptions = {
      capture: false,
      passive: true
    }
  } = options2;
  const x2 = ref(0);
  const y2 = ref(0);
  const isScrolling = ref(false);
  const arrivedState = reactive({
    left: true,
    right: false,
    top: true,
    bottom: false
  });
  const directions = reactive({
    left: false,
    right: false,
    top: false,
    bottom: false
  });
  if (element) {
    const onScrollEnd = useDebounceFn(() => {
      isScrolling.value = false;
      directions.left = false;
      directions.right = false;
      directions.top = false;
      directions.bottom = false;
      onStop();
    }, throttle + idle);
    const onScrollHandler = (e) => {
      const eventTarget = e.target === document ? e.target.documentElement : e.target;
      const scrollLeft = eventTarget.scrollLeft;
      directions.left = scrollLeft < x2.value;
      directions.right = scrollLeft > x2.value;
      arrivedState.left = scrollLeft <= 0 + (offset2.left || 0);
      arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset2.right || 0);
      x2.value = scrollLeft;
      const scrollTop = eventTarget.scrollTop;
      directions.top = scrollTop < y2.value;
      directions.bottom = scrollTop > y2.value;
      arrivedState.top = scrollTop <= 0 + (offset2.top || 0);
      arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset2.bottom || 0);
      y2.value = scrollTop;
      isScrolling.value = true;
      onScrollEnd();
      onScroll();
    };
    useEventListener(element, "scroll", throttle ? useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
  }
  return {
    x: x2,
    y: y2,
    isScrolling,
    arrivedState,
    directions
  };
}
var _a, _b;
isClient && (window == null ? void 0 : window.navigator) && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.platform) && /iP(ad|hone|od)/.test((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.platform);
var __defProp$1 = Object.defineProperty;
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$1 = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp$1.call(b2, prop2))
      __defNormalProp$1(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols$1)
    for (var prop2 of __getOwnPropSymbols$1(b2)) {
      if (__propIsEnum$1.call(b2, prop2))
        __defNormalProp$1(a2, prop2, b2[prop2]);
    }
  return a2;
};
var __objRest = (source, exclude) => {
  var target2 = {};
  for (var prop2 in source)
    if (__hasOwnProp$1.call(source, prop2) && exclude.indexOf(prop2) < 0)
      target2[prop2] = source[prop2];
  if (source != null && __getOwnPropSymbols$1)
    for (var prop2 of __getOwnPropSymbols$1(source)) {
      if (exclude.indexOf(prop2) < 0 && __propIsEnum$1.call(source, prop2))
        target2[prop2] = source[prop2];
    }
  return target2;
};
const UNITS = [
  { max: 6e4, value: 1e3, name: "second" },
  { max: 276e4, value: 6e4, name: "minute" },
  { max: 72e6, value: 36e5, name: "hour" },
  { max: 5184e5, value: 864e5, name: "day" },
  { max: 24192e5, value: 6048e5, name: "week" },
  { max: 28512e6, value: 2592e6, name: "month" },
  { max: Infinity, value: 31536e6, name: "year" }
];
const DEFAULT_MESSAGES = {
  justNow: "just now",
  past: (n) => n.match(/\d/) ? `${n} ago` : n,
  future: (n) => n.match(/\d/) ? `in ${n}` : n,
  month: (n, past) => n === 1 ? past ? "last month" : "next month" : `${n} month${n > 1 ? "s" : ""}`,
  year: (n, past) => n === 1 ? past ? "last year" : "next year" : `${n} year${n > 1 ? "s" : ""}`,
  day: (n, past) => n === 1 ? past ? "yesterday" : "tomorrow" : `${n} day${n > 1 ? "s" : ""}`,
  week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`,
  hour: (n) => `${n} hour${n > 1 ? "s" : ""}`,
  minute: (n) => `${n} minute${n > 1 ? "s" : ""}`,
  second: (n) => `${n} second${n > 1 ? "s" : ""}`
};
const DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);
function useTimeAgo(time, options2 = {}) {
  const {
    controls: exposeControls = false,
    max: max2,
    updateInterval = 3e4,
    messages = DEFAULT_MESSAGES,
    fullDateFormatter = DEFAULT_FORMATTER
  } = options2;
  const { abs, round: round2 } = Math;
  const _a2 = useNow({ interval: updateInterval, controls: true }), { now } = _a2, controls = __objRest(_a2, ["now"]);
  function getTimeago(from, now2) {
    var _a22;
    const diff = +now2 - +from;
    const absDiff = abs(diff);
    if (absDiff < 6e4)
      return messages.justNow;
    if (typeof max2 === "number" && absDiff > max2)
      return fullDateFormatter(new Date(from));
    if (typeof max2 === "string") {
      const unitMax = (_a22 = UNITS.find((i2) => i2.name === max2)) == null ? void 0 : _a22.max;
      if (unitMax && absDiff > unitMax)
        return fullDateFormatter(new Date(from));
    }
    for (const unit of UNITS) {
      if (absDiff < unit.max)
        return format3(diff, unit);
    }
  }
  function applyFormat(name2, val, isPast) {
    const formatter = messages[name2];
    if (typeof formatter === "function")
      return formatter(val, isPast);
    return formatter.replace("{0}", val.toString());
  }
  function format3(diff, unit) {
    const val = round2(abs(diff) / unit.value);
    const past = diff > 0;
    const str = applyFormat(unit.name, val, past);
    return applyFormat(past ? "past" : "future", str, past);
  }
  const timeAgo = computed(() => getTimeago(new Date(unref(time)), unref(now.value)));
  if (exposeControls) {
    return __spreadValues$1({
      timeAgo
    }, controls);
  } else {
    return timeAgo;
  }
}
function useVModel(props, key, emit2, options2 = {}) {
  var _a2;
  const {
    passive = false,
    eventName,
    deep = false
  } = options2;
  const vm = getCurrentInstance();
  const _emit = emit2 || (vm == null ? void 0 : vm.emit) || ((_a2 = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a2.bind(vm));
  let event = eventName;
  if (!key) {
    {
      key = "modelValue";
    }
  }
  event = eventName || event || `update:${key}`;
  if (passive) {
    const proxy = ref(props[key]);
    watch(() => props[key], (v) => proxy.value = v);
    watch(proxy, (v) => {
      if (v !== props[key] || deep)
        _emit(event, v);
    }, {
      deep
    });
    return proxy;
  } else {
    return computed({
      get() {
        return props[key];
      },
      set(value) {
        _emit(event, value);
      }
    });
  }
}
function useVModels(props, emit2, options2 = {}) {
  const ret = {};
  for (const key in props)
    ret[key] = useVModel(props, key, emit2, options2);
  return ret;
}
const _hoisted_1$1T = ["tabindex"];
const _hoisted_2$1E = ["aria-expanded"];
const _hoisted_3$1o = ["aria-hidden"];
const _sfc_main$1j = /* @__PURE__ */ defineComponent({
  __name: "Collapsible",
  props: {
    maxHeight: { default: "500px" },
    initiallyOpen: { type: Boolean, default: false },
    lazy: { type: Boolean, default: false },
    disable: { type: Boolean, default: false },
    overflow: { type: Boolean, default: true },
    fileRow: { type: Boolean, default: false }
  },
  setup(__props) {
    const props = __props;
    const [isOpen, toggle] = useToggle(props.initiallyOpen);
    watch(() => props.initiallyOpen, (val, oldVal) => {
      if (oldVal === false && val === true) {
        isOpen.value = true;
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        tabindex: __props.disable ? "-1" : "0",
        "data-cy": "collapsible",
        onKeypress: _cache[2] || (_cache[2] = withKeys(withModifiers(($event) => !__props.disable && unref(toggle)(), ["self", "prevent"]), ["space", "enter"]))
      }, [
        createBaseVNode("div", {
          "data-cy": "collapsible-header",
          "aria-expanded": unref(isOpen),
          class: normalizeClass(["rounded-t focus:outline-indigo-500", { "rounded-b": !unref(isOpen) }]),
          onClick: _cache[0] || (_cache[0] = ($event) => !__props.disable && unref(toggle)()),
          onKeypress: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => !__props.disable && unref(toggle)(), ["self"]), ["space", "enter"]))
        }, [
          renderSlot(_ctx.$slots, "target", {
            open: unref(isOpen),
            toggle: unref(toggle)
          })
        ], 42, _hoisted_2$1E),
        createBaseVNode("div", {
          style: normalizeStyle({
            maxHeight: unref(isOpen) ? __props.maxHeight : "0px"
          }),
          "aria-hidden": !unref(isOpen),
          class: normalizeClass({
            "overflow-auto": unref(isOpen) && __props.overflow,
            "border rounded rounded-t-none bg-light-50 border-gray-100 mb-4 w-full block": unref(isOpen) && __props.fileRow,
            "overflow-hidden": !unref(isOpen) && __props.fileRow
          })
        }, [
          !__props.lazy || __props.lazy && unref(isOpen) ? renderSlot(_ctx.$slots, "default", {
            key: 0,
            toggle: unref(toggle),
            open: unref(isOpen)
          }) : createCommentVNode("", true)
        ], 14, _hoisted_3$1o)
      ], 40, _hoisted_1$1T);
    };
  }
});
const _sfc_main$1i = /* @__PURE__ */ defineComponent({
  __name: "Alert",
  props: {
    title: { default: void 0 },
    status: { default: "info" },
    icon: { default: void 0 },
    headerClass: { default: void 0 },
    bodyClass: { default: void 0 },
    dismissible: { type: Boolean },
    collapsible: { type: Boolean },
    modelValue: { type: Boolean, default: true },
    iconClasses: { default: "" },
    maxHeight: { default: void 0 },
    overflow: { type: Boolean, default: true }
  },
  emits: ["update:modelValue"],
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    const slots = useSlots();
    const title = computed(() => props.title ?? "Alert");
    const alertStyles = {
      default: {
        headerClass: "text-gray-800 bg-gray-100",
        suffixIconClass: "icon-dark-gray-600",
        suffixButtonClass: "text-gray-600",
        bodyClass: "bg-gray-50",
        ring: "hocus:ring-gray-200 hocus:border-gray-300"
      },
      info: {
        headerClass: "text-info-700 bg-info-100",
        suffixIconClass: "icon-dark-info-500",
        suffixButtonClass: "text-info-500",
        bodyClass: "bg-info-50",
        ring: "hocus:ring-info-200 hocus:border-info-300"
      },
      warning: {
        headerClass: "text-warning-600 bg-warning-100",
        suffixIconClass: "icon-dark-warning-500",
        suffixButtonClass: "text-warning-500",
        bodyClass: "bg-warning-50",
        ring: "hocus:ring-warning-200 hocus:border-warning-300"
      },
      error: {
        headerClass: "text-error-600 bg-error-100",
        suffixIconClass: "icon-dark-error-500",
        suffixButtonClass: "text-error-500",
        bodyClass: "bg-error-50",
        ring: "hocus:ring-error-200 hocus:border-error-300"
      },
      success: {
        headerClass: "text-success-600 bg-success-100",
        suffixIconClass: "icon-dark-success-500",
        suffixButtonClass: "text-success-500",
        bodyClass: "bg-success-50",
        ring: "hocus:ring-success-200 hocus:border-success-300"
      },
      promo: {
        headerClass: "text-gray-900 bg-white border border-gray-100",
        suffixIconClass: "icon-dark-gray-700",
        suffixButtonClass: "text-gray-700",
        bodyClass: "bg-white border-t border-gray-100",
        ring: "hocus:ring-gray-100 hocus:border-gray-100"
      }
    };
    const classes = computed(() => {
      return {
        ...alertStyles[props.status],
        bodyClass: props.bodyClass ?? alertStyles[props.status].bodyClass,
        headerClass: props.headerClass ?? alertStyles[props.status].headerClass
      };
    });
    const canCollapse = computed(() => slots.default && props.collapsible);
    const initiallyOpen = computed(() => slots.default && !props.collapsible);
    const prefix = computed(() => {
      if (props.icon)
        return { classes: props.iconClasses, icon: props.icon };
      if (canCollapse.value) {
        return {
          icon: ChevronDown,
          classes: "transition transform duration-150 w-[16px] h-[16px]"
        };
      }
      return {};
    });
    const computedBodyClass = computed(() => {
      return `${classes.value.bodyClass} ${props.bodyClass}`;
    });
    return (_ctx, _cache) => {
      return __props.modelValue ? (openBlock(), createBlock(_sfc_main$1j, {
        key: 0,
        lazy: "",
        "initially-open": unref(initiallyOpen),
        disable: !unref(canCollapse),
        overflow: __props.overflow,
        class: normalizeClass(["rounded-t rounded-b outline-none group", [
          unref(classes).headerClass,
          { [`hocus-default border border-transparent rounded ${unref(classes).ring}`]: unref(canCollapse), "overflow-hidden": __props.overflow }
        ]]),
        "max-height": __props.maxHeight
      }, {
        target: withCtx(({ open }) => {
          var _a2, _b2, _c;
          return [
            createBaseVNode("div", {
              "data-cy": "alert-header",
              class: normalizeClass(["grid grid-cols-1 group", {
                "cursor-pointer": unref(canCollapse)
              }])
            }, [
              createVNode(_sfc_main$1k, {
                title: unref(title),
                "header-class": `${props.headerClass} ${unref(canCollapse) ? "group-hocus:underline" : ""}`,
                "prefix-icon": (_a2 = unref(prefix)) == null ? void 0 : _a2.icon,
                "prefix-icon-class": open && __props.collapsible ? ((_b2 = unref(prefix)) == null ? void 0 : _b2.classes) + " rotate-180" : (_c = unref(prefix)) == null ? void 0 : _c.classes,
                "suffix-icon-aria-label": props.dismissible ? unref(t2)("components.alert.dismissAriaLabel") : "",
                "suffix-icon": props.dismissible ? unref(DeleteIcon) : null,
                "suffix-button-class": unref(classes).suffixButtonClass,
                "suffix-icon-class": unref(classes).suffixIconClass,
                "data-cy": "alert",
                class: "rounded min-w-[200px] p-[16px]",
                onSuffixIconClicked: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("update:modelValue", !__props.modelValue))
              }, createSlots({ _: 2 }, [
                _ctx.$slots.title ? {
                  name: "title",
                  fn: withCtx(() => [
                    renderSlot(_ctx.$slots, "title")
                  ]),
                  key: "0"
                } : void 0,
                _ctx.$slots.prefixIcon ? {
                  name: "prefixIcon",
                  fn: withCtx((slotProps) => [
                    renderSlot(_ctx.$slots, "prefixIcon", normalizeProps(guardReactiveProps(slotProps)))
                  ]),
                  key: "1"
                } : void 0,
                _ctx.$slots.suffixIcon ? {
                  name: "suffixIcon",
                  fn: withCtx((slotProps) => [
                    renderSlot(_ctx.$slots, "suffixIcon", normalizeProps(guardReactiveProps(slotProps)))
                  ]),
                  key: "2"
                } : void 0
              ]), 1032, ["title", "header-class", "prefix-icon", "prefix-icon-class", "suffix-icon-aria-label", "suffix-icon", "suffix-button-class", "suffix-icon-class"])
            ], 2)
          ];
        }),
        default: withCtx(() => [
          _ctx.$slots.default ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: normalizeClass(["text-left p-[16px]", unref(computedBodyClass)]),
            "data-cy": "alert-body"
          }, [
            renderSlot(_ctx.$slots, "default")
          ], 2)) : createCommentVNode("", true)
        ]),
        _: 3
      }, 8, ["initially-open", "disable", "overflow", "class", "max-height"])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$1S = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1D = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8ZM8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0ZM9 5C9 4.44772 8.55228 4 8 4C7.44772 4 7 4.44772 7 5V8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8V5ZM8 12C8.55228 12 9 11.5523 9 11C9 10.4477 8.55228 10 8 10C7.44772 10 7 10.4477 7 11C7 11.5523 7.44772 12 8 12Z",
  fill: "#DB7903",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1n = [
  _hoisted_2$1D
];
function render$U(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1S, _hoisted_3$1n);
}
const ErrorOutlineIcon = { name: "cy-status-errored-outline_x16", render: render$U };
const _hoisted_1$1R = { class: "list-disc my-[12px] ml-[36px]" };
const _hoisted_2$1C = { class: "m-[24px]" };
const _sfc_main$1h = /* @__PURE__ */ defineComponent({
  __name: "EnvironmentSetup",
  props: {
    gql: null,
    nextFn: { type: Function }
  },
  setup(__props) {
    const props = __props;
    gql`
fragment EnvironmentSetup on Wizard {
  bundler {
    id
    name
    type
    isDetected
  }
  framework {
    type
    id
    name
    isDetected
    supportedBundlers {
      id
      type
      name
      isDetected
    }
    category
    icon
  }
  frameworks {
    id
    supportStatus
    name
    isDetected
    type
    category
    icon
  }
  allBundlers {
    id
    name
    type
    isDetected
  }
  erroredFrameworks {
    id
    path
  }
}
`;
    gql`
subscription EnvironmentSetup_DetectionChange {
  frameworkDetectionChange {
    ...EnvironmentSetup
  }
}
`;
    const { t: t2 } = useI18n();
    const bundlers = computed(() => {
      var _a2;
      const all = ((_a2 = props.gql.framework) == null ? void 0 : _a2.supportedBundlers) || [];
      return all.map((b2) => ({ disabled: all.length <= 1, ...b2 })).sort((x2, y2) => x2.name.localeCompare(y2.name));
    });
    const frameworks = computed(() => {
      const data = (props.gql.frameworks || []).map((x2) => {
        return {
          type: x2.type,
          supportStatus: x2.supportStatus,
          name: x2.name,
          id: x2.id,
          isDetected: x2.isDetected,
          icon: x2.icon || void 0
        };
      });
      data.sort((x2, y2) => x2.name.localeCompare(y2.name));
      return data;
    });
    const erroredFrameworks = computed(() => {
      return props.gql.erroredFrameworks.filter((framework) => framework.path);
    });
    gql`
mutation EnvironmentSetup_wizardUpdate($input: WizardUpdateInput!) {
  wizardUpdate(input: $input) {
    ...EnvironmentSetup
    bundler {
      id
      type
    }
    framework {
      id
      type
    }
  }
}
`;
    const wizardUpdateMutation = useMutation(EnvironmentSetup_WizardUpdateDocument);
    const onWizardSetup = (key, val) => {
      const input = {};
      input[key] = val;
      wizardUpdateMutation.executeMutation({
        input
      });
    };
    gql`
mutation EnvironmentSetup_ClearTestingType {
  clearCurrentTestingType {
    currentProject {
      id
      currentTestingType
    }
  }
}
`;
    const clearTestingTypeMutation = useMutation(EnvironmentSetup_ClearTestingTypeDocument);
    const onBack = () => {
      clearTestingTypeMutation.executeMutation({});
    };
    const canNavigateForward = computed(() => {
      const { bundler, framework } = props.gql;
      return bundler !== null && framework !== null;
    });
    useSubscription({ query: EnvironmentSetup_DetectionChangeDocument });
    const isAlertOpen = ref(true);
    const shouldRenderAlert = computed(() => erroredFrameworks.value.length > 0);
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createElementBlock(Fragment, null, [
        unref(shouldRenderAlert) ? (openBlock(), createBlock(_sfc_main$1i, {
          key: 0,
          modelValue: isAlertOpen.value,
          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isAlertOpen.value = $event),
          icon: unref(ErrorOutlineIcon),
          class: "mx-auto my-[24px] max-w-[640px]",
          status: "warning",
          title: unref(t2)("setupPage.projectSetup.communityFrameworkDefinitionProblem"),
          dismissible: ""
        }, {
          default: withCtx(() => [
            createBaseVNode("p", null, toDisplayString$1(unref(t2)("setupPage.projectSetup.communityDependenciesCouldNotBeParsed", unref(erroredFrameworks).length)), 1),
            createBaseVNode("ul", _hoisted_1$1R, [
              (openBlock(true), createElementBlock(Fragment, null, renderList(unref(erroredFrameworks), (framework) => {
                return openBlock(), createElementBlock("li", {
                  key: framework.path
                }, [
                  createVNode(_sfc_main$1x, {
                    "data-cy": "errored-framework-path",
                    href: `file://${framework.path}`
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(framework.path), 1)
                    ]),
                    _: 2
                  }, 1032, ["href"])
                ]);
              }), 128))
            ]),
            createVNode(_component_i18n_t, {
              tag: "p",
              keypath: "setupPage.projectSetup.seeFrameworkDefinitionDocumentation"
            }, {
              default: withCtx(() => [
                createVNode(_sfc_main$1x, {
                  href: unref(getUrlWithParams)({
                    url: "https://on.cypress.io/component-integrations",
                    params: {
                      utm_medium: "Framework Definition Warning"
                    }
                  })
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(t2)("setupPage.projectSetup.frameworkDefinitionDocumentation")), 1)
                  ]),
                  _: 1
                }, 8, ["href"])
              ]),
              _: 1
            })
          ]),
          _: 1
        }, 8, ["modelValue", "icon", "title"])) : createCommentVNode("", true),
        createVNode(_sfc_main$1q, {
          "back-fn": onBack,
          "next-fn": props.nextFn,
          "can-navigate-forward": unref(canNavigateForward),
          class: "max-w-[640px]"
        }, {
          default: withCtx(() => {
            var _a2, _b2, _c;
            return [
              createBaseVNode("div", _hoisted_2$1C, [
                createVNode(_sfc_main$1l, {
                  options: unref(frameworks) || [],
                  value: ((_a2 = props.gql.framework) == null ? void 0 : _a2.type) ?? void 0,
                  placeholder: unref(t2)("setupPage.projectSetup.frameworkPlaceholder"),
                  label: unref(t2)("setupPage.projectSetup.frameworkLabel"),
                  "selector-type": "framework",
                  "data-testid": "select-framework",
                  onSelectFramework: _cache[1] || (_cache[1] = (val) => onWizardSetup("framework", val))
                }, null, 8, ["options", "value", "placeholder", "label"]),
                ((_b2 = props.gql.framework) == null ? void 0 : _b2.type) && unref(bundlers).length > 1 ? (openBlock(), createBlock(_sfc_main$1l, {
                  key: 0,
                  class: "pt-[3px]",
                  options: unref(bundlers),
                  value: ((_c = props.gql.bundler) == null ? void 0 : _c.type) ?? void 0,
                  placeholder: unref(t2)("setupPage.projectSetup.bundlerPlaceholder"),
                  label: unref(t2)("setupPage.projectSetup.bundlerLabel"),
                  "selector-type": "bundler",
                  "data-testid": "select-bundler",
                  onSelectBundler: _cache[2] || (_cache[2] = (val) => onWizardSetup("bundler", val))
                }, null, 8, ["options", "value", "placeholder", "label"])) : createCommentVNode("", true)
              ])
            ];
          }),
          _: 1
        }, 8, ["next-fn", "can-navigate-forward"])
      ], 64);
    };
  }
});
const _hoisted_1$1Q = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1B = ["id"];
const _hoisted_3$1m = /* @__PURE__ */ createBaseVNode("circle", {
  cx: "12",
  cy: "12",
  r: "12"
}, null, -1);
const _hoisted_4$S = [
  _hoisted_3$1m
];
const _hoisted_5$u = ["clip-path"];
function render$T(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1Q, [
    createBaseVNode("defs", null, [
      createBaseVNode("clipPath", {
        id: _ctx.idMap["insideCircleOnly"]
      }, _hoisted_4$S, 8, _hoisted_2$1B)
    ]),
    createBaseVNode("circle", {
      cx: "12",
      cy: "12",
      r: "12",
      fill: "#F3F4FA",
      stroke: "#D0D2E0",
      "stroke-width": "2",
      "stroke-dasharray": "4.3 2",
      "clip-path": "url(#" + _ctx.idMap["insideCircleOnly"] + ")",
      class: "icon-dark-stroke icon-light-fill"
    }, null, 8, _hoisted_5$u)
  ]);
}
const __unplugin_components_1$6 = { name: "cy-status-download-pending_x24", render: render$T, data() {
  const __randId = () => Math.random().toString(36).substr(2, 10);
  const idMap = { "insideCircleOnly": "uicons-" + __randId() };
  return { idMap };
} };
const _hoisted_1$1P = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1A = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z",
  fill: "#DEF8ED",
  class: "icon-light"
}, null, -1);
const _hoisted_3$1l = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15.999 9L11 15L8.00098 12",
  stroke: "#00814D",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$R = [
  _hoisted_2$1A,
  _hoisted_3$1l
];
function render$S(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1P, _hoisted_4$R);
}
const __unplugin_components_0$j = { name: "cy-status-download-done_x24", render: render$S };
const _hoisted_1$1O = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1z = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15 3C15 1.89543 14.1046 1 13 1H3C1.89543 1 1 1.89543 1 3V4H15V3Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$1k = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M15 3C15 1.89543 14.1046 1 13 1H3C1.89543 1 1 1.89543 1 3V4H15V3Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_4$Q = /* @__PURE__ */ createBaseVNode("path", {
  d: "M1 4V13C1 14.1046 1.89543 15 3 15H13C14.1046 15 15 14.1046 15 13V4M1 4V3C1 1.89543 1.89543 1 3 1H13C14.1046 1 15 1.89543 15 3V4M1 4H15M5 8L6.5 9.5L5 11",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$t = [
  _hoisted_2$1z,
  _hoisted_3$1k,
  _hoisted_4$Q
];
function render$R(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1O, _hoisted_5$t);
}
const __unplugin_components_0$i = { name: "cy-terminal_x16", render: render$R };
const _hoisted_1$1N = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1y = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M19.5 18.5854C18.9174 18.7913 18.5 19.3469 18.5 20V29.5C18.5 30.3284 19.1716 31 20 31H28C28.8284 31 29.5 30.3284 29.5 29.5V20C29.5 19.3469 29.0826 18.7913 28.5 18.5854M23 20H25C25.5523 20 26 19.5523 26 19V18C26 17.4477 25.5523 17 25 17H23C22.4477 17 22 17.4477 22 18V19C22 19.5523 22.4477 20 23 20Z",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  style: { "transform": "translate(-16px, -16px)" }
}, null, -1);
const _hoisted_3$1j = [
  _hoisted_2$1y
];
function render$Q(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1N, _hoisted_3$1j);
}
const __unplugin_components_0$h = { name: "cy-copy-clipboard_x16", render: render$Q };
gql`
mutation Clipboard_CopyToClipboard($text: String!) {
  copyTextToClipboard(text: $text)
}
`;
function useClipboard(options2 = {}) {
  const copyMutation = useMutation(Clipboard_CopyToClipboardDocument);
  const copied = ref(false);
  let timer;
  const copy2 = async (text3) => {
    const { data } = await copyMutation.executeMutation({ text: text3 });
    copied.value = (data == null ? void 0 : data.copyTextToClipboard) ?? false;
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      copied.value = false;
      timer = void 0;
    }, options2.copiedDuring || 2e3);
  };
  return { copy: copy2, copied };
}
const _sfc_main$1g = {};
function _sfc_render$5(_ctx, _cache) {
  return openBlock(), createBlock(Transition, {
    "enter-active-class": "transition duration-200 ease-out",
    "enter-from-class": "translate-y-1 opacity-0",
    "enter-to-class": "translate-y-0 opacity-100",
    "leave-active-class": "transition duration-150 ease-in",
    "leave-from-class": "translate-y-0 opacity-100",
    "leave-to-class": "translate-y-1 opacity-0"
  }, {
    default: withCtx(() => [
      renderSlot(_ctx.$slots, "default")
    ]),
    _: 3
  });
}
const TransitionQuickFade = /* @__PURE__ */ _export_sfc$1(_sfc_main$1g, [["render", _sfc_render$5]]);
const _hoisted_1$1M = { key: 0 };
const _hoisted_2$1x = { key: 1 };
const _sfc_main$1f = /* @__PURE__ */ defineComponent({
  __name: "CopyButton",
  props: {
    text: null,
    noIcon: { type: Boolean, default: false },
    variant: { default: "tertiary" },
    size: { default: "md" }
  },
  setup(__props) {
    const props = __props;
    const { copy: copy2, copied } = useClipboard({ copiedDuring: 2e3 });
    const copyToClipboard = () => {
      if (props.text) {
        copy2(props.text);
      }
    };
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      const _component_i_cy_copy_clipboard_x16 = __unplugin_components_0$h;
      return openBlock(), createBlock(_sfc_main$1t, {
        size: __props.size,
        variant: __props.variant,
        "data-cy": "copy-button",
        onClick: copyToClipboard
      }, createSlots({
        default: withCtx(() => [
          createVNode(TransitionQuickFade, { mode: "out-in" }, {
            default: withCtx(() => [
              !unref(copied) ? (openBlock(), createElementBlock("span", _hoisted_1$1M, toDisplayString$1(unref(t2)("clipboard.copy")), 1)) : (openBlock(), createElementBlock("span", _hoisted_2$1x, toDisplayString$1(unref(t2)("clipboard.copied")), 1))
            ]),
            _: 1
          })
        ]),
        _: 2
      }, [
        !__props.noIcon ? {
          name: "prefix",
          fn: withCtx(() => [
            createVNode(_component_i_cy_copy_clipboard_x16, {
              class: normalizeClass(["h-[16px] w-[16px]", {
                "icon-dark-indigo-500": __props.variant === "tertiary",
                "icon-dark-gray-500": __props.variant === "outline"
              }])
            }, null, 8, ["class"])
          ]),
          key: "0"
        } : void 0
      ]), 1032, ["size", "variant"]);
    };
  }
});
const _hoisted_1$1L = { class: "border rounded flex font-normal border-gray-100 pl-[16px] pr-[4px] text-gray-700 leading-[40px] items-center whitespace-nowrap overflow-hidden" };
const _hoisted_2$1w = /* @__PURE__ */ createBaseVNode("span", { class: "mr-[8px] text-purple-500" }, " $ ", -1);
const _hoisted_3$1i = ["value"];
const _hoisted_4$P = { class: "font-sans" };
const _sfc_main$1e = /* @__PURE__ */ defineComponent({
  __name: "TerminalPrompt",
  props: {
    command: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      const _component_i_cy_terminal_x16 = __unplugin_components_0$i;
      return openBlock(), createElementBlock("code", _hoisted_1$1L, [
        createVNode(_component_i_cy_terminal_x16, { class: "shrink-0 h-[16px] mr-[8px] w-[16px] icon-dark-gray-500 icon-light-gray-100" }),
        _hoisted_2$1w,
        createBaseVNode("input", {
          readonly: "true",
          type: "text",
          value: __props.command,
          "data-cy": "terminal-prompt-input",
          class: "border-none flex-1"
        }, null, 8, _hoisted_3$1i),
        createBaseVNode("div", _hoisted_4$P, [
          createVNode(_sfc_main$1f, { text: __props.command }, null, 8, ["text"])
        ])
      ]);
    };
  }
});
const _hoisted_1$1K = { key: 0 };
const _hoisted_2$1v = { class: "pt-[24px] pr-[24px] pl-[24px] mb-[-12px] text-gray-800 font-500 text-[16px]" };
const _hoisted_3$1h = { "data-cy": "dependencies-to-install" };
const _hoisted_4$O = ["data-cy"];
const _hoisted_5$s = { class: "text-[14px]" };
const _hoisted_6$h = { class: "border rounded-md font-semibold border-gray-100 text-xs ml-[6px] text-gray-700" };
const _hoisted_7$d = { class: "p-[4px]" };
const _hoisted_8$c = {
  key: 0,
  class: "border-l font-medium bg-gray-50 border-gray-100 px-[4px] text-gray-600"
};
const _hoisted_9$c = ["innerHTML"];
const _sfc_main$1d = /* @__PURE__ */ defineComponent({
  __name: "ManualInstall",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment ManualInstall on Query {
  wizard {  
    packagesToInstall {
      id
      name
      description
      package
      minVersion
      detectedVersion
      satisfied
    }
    installDependenciesCommand
  }
  currentProject {
    id
    title
    packageManager
  }
}
`;
    const projectFolder = computed(() => {
      var _a2;
      return ((_a2 = props.gql.currentProject) == null ? void 0 : _a2.title) ?? "";
    });
    return (_ctx, _cache) => {
      const _component_i_cy_status_download_done_x24 = __unplugin_components_0$j;
      const _component_i_cy_status_download_pending_x24 = __unplugin_components_1$6;
      return openBlock(), createElementBlock(Fragment, null, [
        props.gql.wizard.installDependenciesCommand ? (openBlock(), createElementBlock("div", _hoisted_1$1K, [
          createBaseVNode("p", _hoisted_2$1v, toDisplayString$1(unref(t2)("setupWizard.installDependencies.pasteCommand")), 1),
          createVNode(_sfc_main$1e, {
            class: "m-[24px]",
            command: props.gql.wizard.installDependenciesCommand,
            "project-folder-name": unref(projectFolder)
          }, null, 8, ["command", "project-folder-name"])
        ])) : createCommentVNode("", true),
        createBaseVNode("div", {
          class: normalizeClass(["px-[24px]", { "border-t border-t-gray-100": !!props.gql.wizard.installDependenciesCommand }])
        }, [
          createBaseVNode("ul", _hoisted_3$1h, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(props.gql.wizard.packagesToInstall, (dep) => {
              return openBlock(), createElementBlock("li", {
                key: dep.package,
                class: "border-b border-b-gray-100 py-[16px] last-of-type:border-b-0",
                "data-cy": `dependency-${dep.package}`
              }, [
                dep.satisfied ? (openBlock(), createBlock(_component_i_cy_status_download_done_x24, {
                  key: 0,
                  class: "h-[24px] my-[12px] ml-[24px] w-[24px] float-right",
                  "aria-label": unref(t2)("setupWizard.installDependencies.installed")
                }, null, 8, ["aria-label"])) : (openBlock(), createBlock(_component_i_cy_status_download_pending_x24, {
                  key: 1,
                  class: "h-[24px] my-[8px] ml-[24px] w-[24px] float-right",
                  "aria-label": unref(t2)("setupWizard.installDependencies.pendingInstall")
                }, null, 8, ["aria-label"])),
                createBaseVNode("span", _hoisted_5$s, [
                  createVNode(_sfc_main$1x, {
                    href: `https://www.npmjs.com/package/${dep.package}`,
                    class: "text-indigo-500 hocus-link-default"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(dep.package), 1)
                    ]),
                    _: 2
                  }, 1032, ["href"]),
                  createBaseVNode("span", _hoisted_6$h, [
                    createBaseVNode("span", _hoisted_7$d, toDisplayString$1(dep.minVersion), 1),
                    !dep.satisfied && dep.detectedVersion ? (openBlock(), createElementBlock("span", _hoisted_8$c, " detected " + toDisplayString$1(dep.detectedVersion), 1)) : createCommentVNode("", true)
                  ])
                ]),
                createBaseVNode("p", {
                  class: "text-gray-500 text-[14px] leading-5",
                  innerHTML: dep.description
                }, null, 8, _hoisted_9$c)
              ], 8, _hoisted_4$O);
            }), 128))
          ])
        ], 2)
      ], 64);
    };
  }
});
const _hoisted_1$1J = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1u = /* @__PURE__ */ createBaseVNode("path", {
  d: "M12.9497 12.9497C10.2161 15.6834 5.78392 15.6834 3.05025 12.9497C0.316583 10.2161 0.316583 5.78392 3.05025 3.05025C5.78392 0.316583 10.2161 0.316583 12.9497 3.05025C15.6834 5.78392 15.6834 10.2161 12.9497 12.9497Z",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1g = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6 8L7.5 10L10 6",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$N = [
  _hoisted_2$1u,
  _hoisted_3$1g
];
function render$P(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1J, _hoisted_4$N);
}
const CircleCheck = { name: "cy-circle-check_x16", render: render$P };
const _sfc_main$1c = /* @__PURE__ */ defineComponent({
  __name: "InstallDependencies",
  props: {
    gql: null,
    backFn: { type: Function }
  },
  setup(__props) {
    const props = __props;
    gql`
mutation InstallDependencies_scaffoldFiles {
  scaffoldTestingType {
    ...ScaffoldedFiles
  }
}
`;
    gql`
fragment InstallDependencies on Query {
  ...ManualInstall
  wizard {
    packagesToInstall {
      id
      package
    }
  }
}
`;
    gql`
fragment Wizard_InstalledPackages_Data on Query {
  ...InstallDependencies
}
`;
    gql`
query Wizard_InstalledPackages {
  ...Wizard_InstalledPackages_Data
}`;
    const queryInstalled = useQuery({
      query: Wizard_InstalledPackagesDocument
    });
    const checkForInstalledDependencies = (wizard) => {
      var _a2;
      return ((_a2 = wizard == null ? void 0 : wizard.packagesToInstall) == null ? void 0 : _a2.every((pkg) => pkg.satisfied)) || false;
    };
    const allDependenciesInstalled = ref(checkForInstalledDependencies(props.gql.wizard));
    const showSuccessAlert = ref(true);
    if (!allDependenciesInstalled.value) {
      const intervalQueryTrigger = useIntervalFn(async () => {
        var _a2;
        const res = await queryInstalled.executeQuery({ requestPolicy: "network-only" });
        if (checkForInstalledDependencies((_a2 = res.data.value) == null ? void 0 : _a2.wizard)) {
          intervalQueryTrigger.pause();
          allDependenciesInstalled.value = true;
        }
      }, 1e3);
    }
    const { t: t2 } = useI18n();
    const mutation = useMutation(InstallDependencies_ScaffoldFilesDocument);
    const confirmInstalled = () => {
      mutation.executeMutation({});
    };
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$1q, {
        next: allDependenciesInstalled.value ? unref(t2)("setupPage.step.continue") : unref(t2)("setupWizard.installDependencies.waitForInstall"),
        "can-navigate-forward": allDependenciesInstalled.value,
        "back-fn": props.backFn,
        "next-fn": confirmInstalled,
        class: "max-w-[640px] relative",
        "main-button-variant": allDependenciesInstalled.value ? "primary" : "pending",
        "skip-fn": !allDependenciesInstalled.value ? confirmInstalled : void 0
      }, createSlots({
        default: withCtx(() => [
          createVNode(_sfc_main$1d, {
            gql: props.gql
          }, null, 8, ["gql"])
        ]),
        _: 2
      }, [
        allDependenciesInstalled.value && showSuccessAlert.value ? {
          name: "accessory",
          fn: withCtx(() => [
            createVNode(_sfc_main$1i, {
              modelValue: showSuccessAlert.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => showSuccessAlert.value = $event),
              class: "w-full",
              icon: unref(CircleCheck),
              title: unref(t2)("setupWizard.installDependencies.installationAlertSuccess"),
              status: "success",
              dismissible: ""
            }, null, 8, ["modelValue", "icon", "title"])
          ]),
          key: "0"
        } : void 0
      ]), 1032, ["next", "can-navigate-forward", "back-fn", "main-button-variant", "skip-fn"]);
    };
  }
});
var markdownItExports = {};
var markdownIt = {
  get exports() {
    return markdownItExports;
  },
  set exports(v) {
    markdownItExports = v;
  }
};
var utils$1 = {};
var entitiesExports = {};
var entities$1 = {
  get exports() {
    return entitiesExports;
  },
  set exports(v) {
    entitiesExports = v;
  }
};
const Aacute = "Á";
const aacute = "á";
const Abreve = "Ă";
const abreve = "ă";
const ac = "∾";
const acd = "∿";
const acE = "∾̳";
const Acirc = "Â";
const acirc = "â";
const acute = "´";
const Acy = "А";
const acy = "а";
const AElig = "Æ";
const aelig = "æ";
const af = "⁡";
const Afr = "𝔄";
const afr = "𝔞";
const Agrave = "À";
const agrave = "à";
const alefsym = "ℵ";
const aleph = "ℵ";
const Alpha = "Α";
const alpha = "α";
const Amacr = "Ā";
const amacr = "ā";
const amalg = "⨿";
const amp = "&";
const AMP = "&";
const andand = "⩕";
const And = "⩓";
const and = "∧";
const andd = "⩜";
const andslope = "⩘";
const andv = "⩚";
const ang = "∠";
const ange = "⦤";
const angle = "∠";
const angmsdaa = "⦨";
const angmsdab = "⦩";
const angmsdac = "⦪";
const angmsdad = "⦫";
const angmsdae = "⦬";
const angmsdaf = "⦭";
const angmsdag = "⦮";
const angmsdah = "⦯";
const angmsd = "∡";
const angrt = "∟";
const angrtvb = "⊾";
const angrtvbd = "⦝";
const angsph = "∢";
const angst = "Å";
const angzarr = "⍼";
const Aogon = "Ą";
const aogon = "ą";
const Aopf = "𝔸";
const aopf = "𝕒";
const apacir = "⩯";
const ap = "≈";
const apE = "⩰";
const ape = "≊";
const apid = "≋";
const apos = "'";
const ApplyFunction = "⁡";
const approx = "≈";
const approxeq = "≊";
const Aring = "Å";
const aring = "å";
const Ascr = "𝒜";
const ascr = "𝒶";
const Assign = "≔";
const ast = "*";
const asymp = "≈";
const asympeq = "≍";
const Atilde = "Ã";
const atilde = "ã";
const Auml = "Ä";
const auml = "ä";
const awconint = "∳";
const awint = "⨑";
const backcong = "≌";
const backepsilon = "϶";
const backprime = "‵";
const backsim = "∽";
const backsimeq = "⋍";
const Backslash = "∖";
const Barv = "⫧";
const barvee = "⊽";
const barwed = "⌅";
const Barwed = "⌆";
const barwedge = "⌅";
const bbrk = "⎵";
const bbrktbrk = "⎶";
const bcong = "≌";
const Bcy = "Б";
const bcy = "б";
const bdquo = "„";
const becaus = "∵";
const because = "∵";
const Because = "∵";
const bemptyv = "⦰";
const bepsi = "϶";
const bernou = "ℬ";
const Bernoullis = "ℬ";
const Beta = "Β";
const beta = "β";
const beth = "ℶ";
const between = "≬";
const Bfr = "𝔅";
const bfr = "𝔟";
const bigcap = "⋂";
const bigcirc = "◯";
const bigcup = "⋃";
const bigodot = "⨀";
const bigoplus = "⨁";
const bigotimes = "⨂";
const bigsqcup = "⨆";
const bigstar = "★";
const bigtriangledown = "▽";
const bigtriangleup = "△";
const biguplus = "⨄";
const bigvee = "⋁";
const bigwedge = "⋀";
const bkarow = "⤍";
const blacklozenge = "⧫";
const blacksquare = "▪";
const blacktriangle = "▴";
const blacktriangledown = "▾";
const blacktriangleleft = "◂";
const blacktriangleright = "▸";
const blank = "␣";
const blk12 = "▒";
const blk14 = "░";
const blk34 = "▓";
const block$1 = "█";
const bne = "=⃥";
const bnequiv = "≡⃥";
const bNot = "⫭";
const bnot = "⌐";
const Bopf = "𝔹";
const bopf = "𝕓";
const bot = "⊥";
const bottom = "⊥";
const bowtie = "⋈";
const boxbox = "⧉";
const boxdl = "┐";
const boxdL = "╕";
const boxDl = "╖";
const boxDL = "╗";
const boxdr = "┌";
const boxdR = "╒";
const boxDr = "╓";
const boxDR = "╔";
const boxh = "─";
const boxH = "═";
const boxhd = "┬";
const boxHd = "╤";
const boxhD = "╥";
const boxHD = "╦";
const boxhu = "┴";
const boxHu = "╧";
const boxhU = "╨";
const boxHU = "╩";
const boxminus = "⊟";
const boxplus = "⊞";
const boxtimes = "⊠";
const boxul = "┘";
const boxuL = "╛";
const boxUl = "╜";
const boxUL = "╝";
const boxur = "└";
const boxuR = "╘";
const boxUr = "╙";
const boxUR = "╚";
const boxv = "│";
const boxV = "║";
const boxvh = "┼";
const boxvH = "╪";
const boxVh = "╫";
const boxVH = "╬";
const boxvl = "┤";
const boxvL = "╡";
const boxVl = "╢";
const boxVL = "╣";
const boxvr = "├";
const boxvR = "╞";
const boxVr = "╟";
const boxVR = "╠";
const bprime = "‵";
const breve = "˘";
const Breve = "˘";
const brvbar = "¦";
const bscr = "𝒷";
const Bscr = "ℬ";
const bsemi = "⁏";
const bsim = "∽";
const bsime = "⋍";
const bsolb = "⧅";
const bsol = "\\";
const bsolhsub = "⟈";
const bull = "•";
const bullet = "•";
const bump = "≎";
const bumpE = "⪮";
const bumpe = "≏";
const Bumpeq = "≎";
const bumpeq = "≏";
const Cacute = "Ć";
const cacute = "ć";
const capand = "⩄";
const capbrcup = "⩉";
const capcap = "⩋";
const cap = "∩";
const Cap = "⋒";
const capcup = "⩇";
const capdot = "⩀";
const CapitalDifferentialD = "ⅅ";
const caps = "∩︀";
const caret = "⁁";
const caron = "ˇ";
const Cayleys = "ℭ";
const ccaps = "⩍";
const Ccaron = "Č";
const ccaron = "č";
const Ccedil = "Ç";
const ccedil = "ç";
const Ccirc = "Ĉ";
const ccirc = "ĉ";
const Cconint = "∰";
const ccups = "⩌";
const ccupssm = "⩐";
const Cdot = "Ċ";
const cdot = "ċ";
const cedil = "¸";
const Cedilla = "¸";
const cemptyv = "⦲";
const cent = "¢";
const centerdot = "·";
const CenterDot = "·";
const cfr = "𝔠";
const Cfr = "ℭ";
const CHcy = "Ч";
const chcy = "ч";
const check = "✓";
const checkmark = "✓";
const Chi = "Χ";
const chi = "χ";
const circ = "ˆ";
const circeq = "≗";
const circlearrowleft = "↺";
const circlearrowright = "↻";
const circledast = "⊛";
const circledcirc = "⊚";
const circleddash = "⊝";
const CircleDot = "⊙";
const circledR = "®";
const circledS = "Ⓢ";
const CircleMinus = "⊖";
const CirclePlus = "⊕";
const CircleTimes = "⊗";
const cir = "○";
const cirE = "⧃";
const cire = "≗";
const cirfnint = "⨐";
const cirmid = "⫯";
const cirscir = "⧂";
const ClockwiseContourIntegral = "∲";
const CloseCurlyDoubleQuote = "”";
const CloseCurlyQuote = "’";
const clubs = "♣";
const clubsuit = "♣";
const colon = ":";
const Colon = "∷";
const Colone = "⩴";
const colone = "≔";
const coloneq = "≔";
const comma = ",";
const commat = "@";
const comp = "∁";
const compfn = "∘";
const complement = "∁";
const complexes = "ℂ";
const cong = "≅";
const congdot = "⩭";
const Congruent = "≡";
const conint = "∮";
const Conint = "∯";
const ContourIntegral = "∮";
const copf = "𝕔";
const Copf = "ℂ";
const coprod = "∐";
const Coproduct = "∐";
const copy = "©";
const COPY = "©";
const copysr = "℗";
const CounterClockwiseContourIntegral = "∳";
const crarr = "↵";
const cross = "✗";
const Cross = "⨯";
const Cscr = "𝒞";
const cscr = "𝒸";
const csub = "⫏";
const csube = "⫑";
const csup = "⫐";
const csupe = "⫒";
const ctdot = "⋯";
const cudarrl = "⤸";
const cudarrr = "⤵";
const cuepr = "⋞";
const cuesc = "⋟";
const cularr = "↶";
const cularrp = "⤽";
const cupbrcap = "⩈";
const cupcap = "⩆";
const CupCap = "≍";
const cup = "∪";
const Cup = "⋓";
const cupcup = "⩊";
const cupdot = "⊍";
const cupor = "⩅";
const cups = "∪︀";
const curarr = "↷";
const curarrm = "⤼";
const curlyeqprec = "⋞";
const curlyeqsucc = "⋟";
const curlyvee = "⋎";
const curlywedge = "⋏";
const curren = "¤";
const curvearrowleft = "↶";
const curvearrowright = "↷";
const cuvee = "⋎";
const cuwed = "⋏";
const cwconint = "∲";
const cwint = "∱";
const cylcty = "⌭";
const dagger = "†";
const Dagger = "‡";
const daleth = "ℸ";
const darr = "↓";
const Darr = "↡";
const dArr = "⇓";
const dash = "‐";
const Dashv = "⫤";
const dashv = "⊣";
const dbkarow = "⤏";
const dblac = "˝";
const Dcaron = "Ď";
const dcaron = "ď";
const Dcy = "Д";
const dcy = "д";
const ddagger = "‡";
const ddarr = "⇊";
const DD = "ⅅ";
const dd = "ⅆ";
const DDotrahd = "⤑";
const ddotseq = "⩷";
const deg = "°";
const Del = "∇";
const Delta = "Δ";
const delta = "δ";
const demptyv = "⦱";
const dfisht = "⥿";
const Dfr = "𝔇";
const dfr = "𝔡";
const dHar = "⥥";
const dharl = "⇃";
const dharr = "⇂";
const DiacriticalAcute = "´";
const DiacriticalDot = "˙";
const DiacriticalDoubleAcute = "˝";
const DiacriticalGrave = "`";
const DiacriticalTilde = "˜";
const diam = "⋄";
const diamond = "⋄";
const Diamond = "⋄";
const diamondsuit = "♦";
const diams = "♦";
const die = "¨";
const DifferentialD = "ⅆ";
const digamma = "ϝ";
const disin = "⋲";
const div = "÷";
const divide = "÷";
const divideontimes = "⋇";
const divonx = "⋇";
const DJcy = "Ђ";
const djcy = "ђ";
const dlcorn = "⌞";
const dlcrop = "⌍";
const dollar = "$";
const Dopf = "𝔻";
const dopf = "𝕕";
const Dot = "¨";
const dot = "˙";
const DotDot = "⃜";
const doteq = "≐";
const doteqdot = "≑";
const DotEqual = "≐";
const dotminus = "∸";
const dotplus = "∔";
const dotsquare = "⊡";
const doublebarwedge = "⌆";
const DoubleContourIntegral = "∯";
const DoubleDot = "¨";
const DoubleDownArrow = "⇓";
const DoubleLeftArrow = "⇐";
const DoubleLeftRightArrow = "⇔";
const DoubleLeftTee = "⫤";
const DoubleLongLeftArrow = "⟸";
const DoubleLongLeftRightArrow = "⟺";
const DoubleLongRightArrow = "⟹";
const DoubleRightArrow = "⇒";
const DoubleRightTee = "⊨";
const DoubleUpArrow = "⇑";
const DoubleUpDownArrow = "⇕";
const DoubleVerticalBar = "∥";
const DownArrowBar = "⤓";
const downarrow = "↓";
const DownArrow = "↓";
const Downarrow = "⇓";
const DownArrowUpArrow = "⇵";
const DownBreve = "̑";
const downdownarrows = "⇊";
const downharpoonleft = "⇃";
const downharpoonright = "⇂";
const DownLeftRightVector = "⥐";
const DownLeftTeeVector = "⥞";
const DownLeftVectorBar = "⥖";
const DownLeftVector = "↽";
const DownRightTeeVector = "⥟";
const DownRightVectorBar = "⥗";
const DownRightVector = "⇁";
const DownTeeArrow = "↧";
const DownTee = "⊤";
const drbkarow = "⤐";
const drcorn = "⌟";
const drcrop = "⌌";
const Dscr = "𝒟";
const dscr = "𝒹";
const DScy = "Ѕ";
const dscy = "ѕ";
const dsol = "⧶";
const Dstrok = "Đ";
const dstrok = "đ";
const dtdot = "⋱";
const dtri = "▿";
const dtrif = "▾";
const duarr = "⇵";
const duhar = "⥯";
const dwangle = "⦦";
const DZcy = "Џ";
const dzcy = "џ";
const dzigrarr = "⟿";
const Eacute = "É";
const eacute = "é";
const easter = "⩮";
const Ecaron = "Ě";
const ecaron = "ě";
const Ecirc = "Ê";
const ecirc = "ê";
const ecir = "≖";
const ecolon = "≕";
const Ecy = "Э";
const ecy = "э";
const eDDot = "⩷";
const Edot = "Ė";
const edot = "ė";
const eDot = "≑";
const ee = "ⅇ";
const efDot = "≒";
const Efr = "𝔈";
const efr = "𝔢";
const eg = "⪚";
const Egrave = "È";
const egrave = "è";
const egs = "⪖";
const egsdot = "⪘";
const el = "⪙";
const Element$2 = "∈";
const elinters = "⏧";
const ell = "ℓ";
const els = "⪕";
const elsdot = "⪗";
const Emacr = "Ē";
const emacr = "ē";
const empty$1 = "∅";
const emptyset = "∅";
const EmptySmallSquare = "◻";
const emptyv = "∅";
const EmptyVerySmallSquare = "▫";
const emsp13 = " ";
const emsp14 = " ";
const emsp = " ";
const ENG = "Ŋ";
const eng = "ŋ";
const ensp = " ";
const Eogon = "Ę";
const eogon = "ę";
const Eopf = "𝔼";
const eopf = "𝕖";
const epar = "⋕";
const eparsl = "⧣";
const eplus = "⩱";
const epsi = "ε";
const Epsilon = "Ε";
const epsilon = "ε";
const epsiv = "ϵ";
const eqcirc = "≖";
const eqcolon = "≕";
const eqsim = "≂";
const eqslantgtr = "⪖";
const eqslantless = "⪕";
const Equal = "⩵";
const equals = "=";
const EqualTilde = "≂";
const equest = "≟";
const Equilibrium = "⇌";
const equiv = "≡";
const equivDD = "⩸";
const eqvparsl = "⧥";
const erarr = "⥱";
const erDot = "≓";
const escr = "ℯ";
const Escr = "ℰ";
const esdot = "≐";
const Esim = "⩳";
const esim = "≂";
const Eta = "Η";
const eta = "η";
const ETH = "Ð";
const eth = "ð";
const Euml = "Ë";
const euml = "ë";
const euro = "€";
const excl = "!";
const exist = "∃";
const Exists = "∃";
const expectation = "ℰ";
const exponentiale = "ⅇ";
const ExponentialE = "ⅇ";
const fallingdotseq = "≒";
const Fcy = "Ф";
const fcy = "ф";
const female = "♀";
const ffilig = "ﬃ";
const fflig = "ﬀ";
const ffllig = "ﬄ";
const Ffr = "𝔉";
const ffr = "𝔣";
const filig = "ﬁ";
const FilledSmallSquare = "◼";
const FilledVerySmallSquare = "▪";
const fjlig = "fj";
const flat = "♭";
const fllig = "ﬂ";
const fltns = "▱";
const fnof = "ƒ";
const Fopf = "𝔽";
const fopf = "𝕗";
const forall = "∀";
const ForAll = "∀";
const fork = "⋔";
const forkv = "⫙";
const Fouriertrf = "ℱ";
const fpartint = "⨍";
const frac12 = "½";
const frac13 = "⅓";
const frac14 = "¼";
const frac15 = "⅕";
const frac16 = "⅙";
const frac18 = "⅛";
const frac23 = "⅔";
const frac25 = "⅖";
const frac34 = "¾";
const frac35 = "⅗";
const frac38 = "⅜";
const frac45 = "⅘";
const frac56 = "⅚";
const frac58 = "⅝";
const frac78 = "⅞";
const frasl = "⁄";
const frown = "⌢";
const fscr = "𝒻";
const Fscr = "ℱ";
const gacute = "ǵ";
const Gamma = "Γ";
const gamma = "γ";
const Gammad = "Ϝ";
const gammad = "ϝ";
const gap = "⪆";
const Gbreve = "Ğ";
const gbreve = "ğ";
const Gcedil = "Ģ";
const Gcirc = "Ĝ";
const gcirc = "ĝ";
const Gcy = "Г";
const gcy = "г";
const Gdot = "Ġ";
const gdot = "ġ";
const ge = "≥";
const gE = "≧";
const gEl = "⪌";
const gel = "⋛";
const geq = "≥";
const geqq = "≧";
const geqslant = "⩾";
const gescc = "⪩";
const ges = "⩾";
const gesdot = "⪀";
const gesdoto = "⪂";
const gesdotol = "⪄";
const gesl = "⋛︀";
const gesles = "⪔";
const Gfr = "𝔊";
const gfr = "𝔤";
const gg = "≫";
const Gg = "⋙";
const ggg = "⋙";
const gimel = "ℷ";
const GJcy = "Ѓ";
const gjcy = "ѓ";
const gla = "⪥";
const gl = "≷";
const glE = "⪒";
const glj = "⪤";
const gnap = "⪊";
const gnapprox = "⪊";
const gne = "⪈";
const gnE = "≩";
const gneq = "⪈";
const gneqq = "≩";
const gnsim = "⋧";
const Gopf = "𝔾";
const gopf = "𝕘";
const grave = "`";
const GreaterEqual = "≥";
const GreaterEqualLess = "⋛";
const GreaterFullEqual = "≧";
const GreaterGreater = "⪢";
const GreaterLess = "≷";
const GreaterSlantEqual = "⩾";
const GreaterTilde = "≳";
const Gscr = "𝒢";
const gscr = "ℊ";
const gsim = "≳";
const gsime = "⪎";
const gsiml = "⪐";
const gtcc = "⪧";
const gtcir = "⩺";
const gt = ">";
const GT = ">";
const Gt = "≫";
const gtdot = "⋗";
const gtlPar = "⦕";
const gtquest = "⩼";
const gtrapprox = "⪆";
const gtrarr = "⥸";
const gtrdot = "⋗";
const gtreqless = "⋛";
const gtreqqless = "⪌";
const gtrless = "≷";
const gtrsim = "≳";
const gvertneqq = "≩︀";
const gvnE = "≩︀";
const Hacek = "ˇ";
const hairsp = " ";
const half = "½";
const hamilt = "ℋ";
const HARDcy = "Ъ";
const hardcy = "ъ";
const harrcir = "⥈";
const harr = "↔";
const hArr = "⇔";
const harrw = "↭";
const Hat = "^";
const hbar = "ℏ";
const Hcirc = "Ĥ";
const hcirc = "ĥ";
const hearts = "♥";
const heartsuit = "♥";
const hellip = "…";
const hercon = "⊹";
const hfr = "𝔥";
const Hfr = "ℌ";
const HilbertSpace = "ℋ";
const hksearow = "⤥";
const hkswarow = "⤦";
const hoarr = "⇿";
const homtht = "∻";
const hookleftarrow = "↩";
const hookrightarrow = "↪";
const hopf = "𝕙";
const Hopf = "ℍ";
const horbar = "―";
const HorizontalLine = "─";
const hscr = "𝒽";
const Hscr = "ℋ";
const hslash = "ℏ";
const Hstrok = "Ħ";
const hstrok = "ħ";
const HumpDownHump = "≎";
const HumpEqual = "≏";
const hybull = "⁃";
const hyphen = "‐";
const Iacute = "Í";
const iacute = "í";
const ic = "⁣";
const Icirc = "Î";
const icirc = "î";
const Icy = "И";
const icy = "и";
const Idot = "İ";
const IEcy = "Е";
const iecy = "е";
const iexcl = "¡";
const iff = "⇔";
const ifr = "𝔦";
const Ifr = "ℑ";
const Igrave = "Ì";
const igrave = "ì";
const ii = "ⅈ";
const iiiint = "⨌";
const iiint = "∭";
const iinfin = "⧜";
const iiota = "℩";
const IJlig = "Ĳ";
const ijlig = "ĳ";
const Imacr = "Ī";
const imacr = "ī";
const image$1 = "ℑ";
const ImaginaryI = "ⅈ";
const imagline = "ℐ";
const imagpart = "ℑ";
const imath = "ı";
const Im = "ℑ";
const imof = "⊷";
const imped = "Ƶ";
const Implies = "⇒";
const incare = "℅";
const infin = "∞";
const infintie = "⧝";
const inodot = "ı";
const intcal = "⊺";
const int = "∫";
const Int = "∬";
const integers = "ℤ";
const Integral = "∫";
const intercal = "⊺";
const Intersection = "⋂";
const intlarhk = "⨗";
const intprod = "⨼";
const InvisibleComma = "⁣";
const InvisibleTimes = "⁢";
const IOcy = "Ё";
const iocy = "ё";
const Iogon = "Į";
const iogon = "į";
const Iopf = "𝕀";
const iopf = "𝕚";
const Iota = "Ι";
const iota = "ι";
const iprod = "⨼";
const iquest = "¿";
const iscr = "𝒾";
const Iscr = "ℐ";
const isin = "∈";
const isindot = "⋵";
const isinE = "⋹";
const isins = "⋴";
const isinsv = "⋳";
const isinv = "∈";
const it = "⁢";
const Itilde = "Ĩ";
const itilde = "ĩ";
const Iukcy = "І";
const iukcy = "і";
const Iuml = "Ï";
const iuml = "ï";
const Jcirc = "Ĵ";
const jcirc = "ĵ";
const Jcy = "Й";
const jcy = "й";
const Jfr = "𝔍";
const jfr = "𝔧";
const jmath = "ȷ";
const Jopf = "𝕁";
const jopf = "𝕛";
const Jscr = "𝒥";
const jscr = "𝒿";
const Jsercy = "Ј";
const jsercy = "ј";
const Jukcy = "Є";
const jukcy = "є";
const Kappa = "Κ";
const kappa = "κ";
const kappav = "ϰ";
const Kcedil = "Ķ";
const kcedil = "ķ";
const Kcy = "К";
const kcy = "к";
const Kfr = "𝔎";
const kfr = "𝔨";
const kgreen = "ĸ";
const KHcy = "Х";
const khcy = "х";
const KJcy = "Ќ";
const kjcy = "ќ";
const Kopf = "𝕂";
const kopf = "𝕜";
const Kscr = "𝒦";
const kscr = "𝓀";
const lAarr = "⇚";
const Lacute = "Ĺ";
const lacute = "ĺ";
const laemptyv = "⦴";
const lagran = "ℒ";
const Lambda = "Λ";
const lambda = "λ";
const lang = "⟨";
const Lang = "⟪";
const langd = "⦑";
const langle = "⟨";
const lap = "⪅";
const Laplacetrf = "ℒ";
const laquo = "«";
const larrb = "⇤";
const larrbfs = "⤟";
const larr = "←";
const Larr = "↞";
const lArr = "⇐";
const larrfs = "⤝";
const larrhk = "↩";
const larrlp = "↫";
const larrpl = "⤹";
const larrsim = "⥳";
const larrtl = "↢";
const latail = "⤙";
const lAtail = "⤛";
const lat = "⪫";
const late = "⪭";
const lates = "⪭︀";
const lbarr = "⤌";
const lBarr = "⤎";
const lbbrk = "❲";
const lbrace = "{";
const lbrack = "[";
const lbrke = "⦋";
const lbrksld = "⦏";
const lbrkslu = "⦍";
const Lcaron = "Ľ";
const lcaron = "ľ";
const Lcedil = "Ļ";
const lcedil = "ļ";
const lceil = "⌈";
const lcub = "{";
const Lcy = "Л";
const lcy = "л";
const ldca = "⤶";
const ldquo = "“";
const ldquor = "„";
const ldrdhar = "⥧";
const ldrushar = "⥋";
const ldsh = "↲";
const le = "≤";
const lE = "≦";
const LeftAngleBracket = "⟨";
const LeftArrowBar = "⇤";
const leftarrow = "←";
const LeftArrow = "←";
const Leftarrow = "⇐";
const LeftArrowRightArrow = "⇆";
const leftarrowtail = "↢";
const LeftCeiling = "⌈";
const LeftDoubleBracket = "⟦";
const LeftDownTeeVector = "⥡";
const LeftDownVectorBar = "⥙";
const LeftDownVector = "⇃";
const LeftFloor = "⌊";
const leftharpoondown = "↽";
const leftharpoonup = "↼";
const leftleftarrows = "⇇";
const leftrightarrow = "↔";
const LeftRightArrow = "↔";
const Leftrightarrow = "⇔";
const leftrightarrows = "⇆";
const leftrightharpoons = "⇋";
const leftrightsquigarrow = "↭";
const LeftRightVector = "⥎";
const LeftTeeArrow = "↤";
const LeftTee = "⊣";
const LeftTeeVector = "⥚";
const leftthreetimes = "⋋";
const LeftTriangleBar = "⧏";
const LeftTriangle = "⊲";
const LeftTriangleEqual = "⊴";
const LeftUpDownVector = "⥑";
const LeftUpTeeVector = "⥠";
const LeftUpVectorBar = "⥘";
const LeftUpVector = "↿";
const LeftVectorBar = "⥒";
const LeftVector = "↼";
const lEg = "⪋";
const leg = "⋚";
const leq = "≤";
const leqq = "≦";
const leqslant = "⩽";
const lescc = "⪨";
const les = "⩽";
const lesdot = "⩿";
const lesdoto = "⪁";
const lesdotor = "⪃";
const lesg = "⋚︀";
const lesges = "⪓";
const lessapprox = "⪅";
const lessdot = "⋖";
const lesseqgtr = "⋚";
const lesseqqgtr = "⪋";
const LessEqualGreater = "⋚";
const LessFullEqual = "≦";
const LessGreater = "≶";
const lessgtr = "≶";
const LessLess = "⪡";
const lesssim = "≲";
const LessSlantEqual = "⩽";
const LessTilde = "≲";
const lfisht = "⥼";
const lfloor = "⌊";
const Lfr = "𝔏";
const lfr = "𝔩";
const lg = "≶";
const lgE = "⪑";
const lHar = "⥢";
const lhard = "↽";
const lharu = "↼";
const lharul = "⥪";
const lhblk = "▄";
const LJcy = "Љ";
const ljcy = "љ";
const llarr = "⇇";
const ll = "≪";
const Ll = "⋘";
const llcorner = "⌞";
const Lleftarrow = "⇚";
const llhard = "⥫";
const lltri = "◺";
const Lmidot = "Ŀ";
const lmidot = "ŀ";
const lmoustache = "⎰";
const lmoust = "⎰";
const lnap = "⪉";
const lnapprox = "⪉";
const lne = "⪇";
const lnE = "≨";
const lneq = "⪇";
const lneqq = "≨";
const lnsim = "⋦";
const loang = "⟬";
const loarr = "⇽";
const lobrk = "⟦";
const longleftarrow = "⟵";
const LongLeftArrow = "⟵";
const Longleftarrow = "⟸";
const longleftrightarrow = "⟷";
const LongLeftRightArrow = "⟷";
const Longleftrightarrow = "⟺";
const longmapsto = "⟼";
const longrightarrow = "⟶";
const LongRightArrow = "⟶";
const Longrightarrow = "⟹";
const looparrowleft = "↫";
const looparrowright = "↬";
const lopar = "⦅";
const Lopf = "𝕃";
const lopf = "𝕝";
const loplus = "⨭";
const lotimes = "⨴";
const lowast = "∗";
const lowbar = "_";
const LowerLeftArrow = "↙";
const LowerRightArrow = "↘";
const loz = "◊";
const lozenge = "◊";
const lozf = "⧫";
const lpar = "(";
const lparlt = "⦓";
const lrarr = "⇆";
const lrcorner = "⌟";
const lrhar = "⇋";
const lrhard = "⥭";
const lrm = "‎";
const lrtri = "⊿";
const lsaquo = "‹";
const lscr = "𝓁";
const Lscr = "ℒ";
const lsh = "↰";
const Lsh = "↰";
const lsim = "≲";
const lsime = "⪍";
const lsimg = "⪏";
const lsqb = "[";
const lsquo = "‘";
const lsquor = "‚";
const Lstrok = "Ł";
const lstrok = "ł";
const ltcc = "⪦";
const ltcir = "⩹";
const lt = "<";
const LT = "<";
const Lt = "≪";
const ltdot = "⋖";
const lthree = "⋋";
const ltimes = "⋉";
const ltlarr = "⥶";
const ltquest = "⩻";
const ltri = "◃";
const ltrie = "⊴";
const ltrif = "◂";
const ltrPar = "⦖";
const lurdshar = "⥊";
const luruhar = "⥦";
const lvertneqq = "≨︀";
const lvnE = "≨︀";
const macr = "¯";
const male = "♂";
const malt = "✠";
const maltese = "✠";
const map$2 = "↦";
const mapsto = "↦";
const mapstodown = "↧";
const mapstoleft = "↤";
const mapstoup = "↥";
const marker = "▮";
const mcomma = "⨩";
const Mcy = "М";
const mcy = "м";
const mdash = "—";
const mDDot = "∺";
const measuredangle = "∡";
const MediumSpace = " ";
const Mellintrf = "ℳ";
const Mfr = "𝔐";
const mfr = "𝔪";
const mho = "℧";
const micro = "µ";
const midast = "*";
const midcir = "⫰";
const mid = "∣";
const middot = "·";
const minusb = "⊟";
const minus = "−";
const minusd = "∸";
const minusdu = "⨪";
const MinusPlus = "∓";
const mlcp = "⫛";
const mldr = "…";
const mnplus = "∓";
const models = "⊧";
const Mopf = "𝕄";
const mopf = "𝕞";
const mp = "∓";
const mscr = "𝓂";
const Mscr = "ℳ";
const mstpos = "∾";
const Mu = "Μ";
const mu = "μ";
const multimap = "⊸";
const mumap = "⊸";
const nabla = "∇";
const Nacute = "Ń";
const nacute = "ń";
const nang = "∠⃒";
const nap = "≉";
const napE = "⩰̸";
const napid = "≋̸";
const napos = "ŉ";
const napprox = "≉";
const natural = "♮";
const naturals = "ℕ";
const natur = "♮";
const nbsp = " ";
const nbump = "≎̸";
const nbumpe = "≏̸";
const ncap = "⩃";
const Ncaron = "Ň";
const ncaron = "ň";
const Ncedil = "Ņ";
const ncedil = "ņ";
const ncong = "≇";
const ncongdot = "⩭̸";
const ncup = "⩂";
const Ncy = "Н";
const ncy = "н";
const ndash = "–";
const nearhk = "⤤";
const nearr = "↗";
const neArr = "⇗";
const nearrow = "↗";
const ne = "≠";
const nedot = "≐̸";
const NegativeMediumSpace = "​";
const NegativeThickSpace = "​";
const NegativeThinSpace = "​";
const NegativeVeryThinSpace = "​";
const nequiv = "≢";
const nesear = "⤨";
const nesim = "≂̸";
const NestedGreaterGreater = "≫";
const NestedLessLess = "≪";
const NewLine = "\n";
const nexist = "∄";
const nexists = "∄";
const Nfr = "𝔑";
const nfr = "𝔫";
const ngE = "≧̸";
const nge = "≱";
const ngeq = "≱";
const ngeqq = "≧̸";
const ngeqslant = "⩾̸";
const nges = "⩾̸";
const nGg = "⋙̸";
const ngsim = "≵";
const nGt = "≫⃒";
const ngt = "≯";
const ngtr = "≯";
const nGtv = "≫̸";
const nharr = "↮";
const nhArr = "⇎";
const nhpar = "⫲";
const ni = "∋";
const nis = "⋼";
const nisd = "⋺";
const niv = "∋";
const NJcy = "Њ";
const njcy = "њ";
const nlarr = "↚";
const nlArr = "⇍";
const nldr = "‥";
const nlE = "≦̸";
const nle = "≰";
const nleftarrow = "↚";
const nLeftarrow = "⇍";
const nleftrightarrow = "↮";
const nLeftrightarrow = "⇎";
const nleq = "≰";
const nleqq = "≦̸";
const nleqslant = "⩽̸";
const nles = "⩽̸";
const nless = "≮";
const nLl = "⋘̸";
const nlsim = "≴";
const nLt = "≪⃒";
const nlt = "≮";
const nltri = "⋪";
const nltrie = "⋬";
const nLtv = "≪̸";
const nmid = "∤";
const NoBreak = "⁠";
const NonBreakingSpace = " ";
const nopf = "𝕟";
const Nopf = "ℕ";
const Not = "⫬";
const not = "¬";
const NotCongruent = "≢";
const NotCupCap = "≭";
const NotDoubleVerticalBar = "∦";
const NotElement = "∉";
const NotEqual = "≠";
const NotEqualTilde = "≂̸";
const NotExists = "∄";
const NotGreater = "≯";
const NotGreaterEqual = "≱";
const NotGreaterFullEqual = "≧̸";
const NotGreaterGreater = "≫̸";
const NotGreaterLess = "≹";
const NotGreaterSlantEqual = "⩾̸";
const NotGreaterTilde = "≵";
const NotHumpDownHump = "≎̸";
const NotHumpEqual = "≏̸";
const notin = "∉";
const notindot = "⋵̸";
const notinE = "⋹̸";
const notinva = "∉";
const notinvb = "⋷";
const notinvc = "⋶";
const NotLeftTriangleBar = "⧏̸";
const NotLeftTriangle = "⋪";
const NotLeftTriangleEqual = "⋬";
const NotLess = "≮";
const NotLessEqual = "≰";
const NotLessGreater = "≸";
const NotLessLess = "≪̸";
const NotLessSlantEqual = "⩽̸";
const NotLessTilde = "≴";
const NotNestedGreaterGreater = "⪢̸";
const NotNestedLessLess = "⪡̸";
const notni = "∌";
const notniva = "∌";
const notnivb = "⋾";
const notnivc = "⋽";
const NotPrecedes = "⊀";
const NotPrecedesEqual = "⪯̸";
const NotPrecedesSlantEqual = "⋠";
const NotReverseElement = "∌";
const NotRightTriangleBar = "⧐̸";
const NotRightTriangle = "⋫";
const NotRightTriangleEqual = "⋭";
const NotSquareSubset = "⊏̸";
const NotSquareSubsetEqual = "⋢";
const NotSquareSuperset = "⊐̸";
const NotSquareSupersetEqual = "⋣";
const NotSubset = "⊂⃒";
const NotSubsetEqual = "⊈";
const NotSucceeds = "⊁";
const NotSucceedsEqual = "⪰̸";
const NotSucceedsSlantEqual = "⋡";
const NotSucceedsTilde = "≿̸";
const NotSuperset = "⊃⃒";
const NotSupersetEqual = "⊉";
const NotTilde = "≁";
const NotTildeEqual = "≄";
const NotTildeFullEqual = "≇";
const NotTildeTilde = "≉";
const NotVerticalBar = "∤";
const nparallel = "∦";
const npar = "∦";
const nparsl = "⫽⃥";
const npart = "∂̸";
const npolint = "⨔";
const npr = "⊀";
const nprcue = "⋠";
const nprec = "⊀";
const npreceq = "⪯̸";
const npre = "⪯̸";
const nrarrc = "⤳̸";
const nrarr = "↛";
const nrArr = "⇏";
const nrarrw = "↝̸";
const nrightarrow = "↛";
const nRightarrow = "⇏";
const nrtri = "⋫";
const nrtrie = "⋭";
const nsc = "⊁";
const nsccue = "⋡";
const nsce = "⪰̸";
const Nscr = "𝒩";
const nscr = "𝓃";
const nshortmid = "∤";
const nshortparallel = "∦";
const nsim = "≁";
const nsime = "≄";
const nsimeq = "≄";
const nsmid = "∤";
const nspar = "∦";
const nsqsube = "⋢";
const nsqsupe = "⋣";
const nsub = "⊄";
const nsubE = "⫅̸";
const nsube = "⊈";
const nsubset = "⊂⃒";
const nsubseteq = "⊈";
const nsubseteqq = "⫅̸";
const nsucc = "⊁";
const nsucceq = "⪰̸";
const nsup = "⊅";
const nsupE = "⫆̸";
const nsupe = "⊉";
const nsupset = "⊃⃒";
const nsupseteq = "⊉";
const nsupseteqq = "⫆̸";
const ntgl = "≹";
const Ntilde = "Ñ";
const ntilde = "ñ";
const ntlg = "≸";
const ntriangleleft = "⋪";
const ntrianglelefteq = "⋬";
const ntriangleright = "⋫";
const ntrianglerighteq = "⋭";
const Nu = "Ν";
const nu = "ν";
const num = "#";
const numero = "№";
const numsp = " ";
const nvap = "≍⃒";
const nvdash = "⊬";
const nvDash = "⊭";
const nVdash = "⊮";
const nVDash = "⊯";
const nvge = "≥⃒";
const nvgt = ">⃒";
const nvHarr = "⤄";
const nvinfin = "⧞";
const nvlArr = "⤂";
const nvle = "≤⃒";
const nvlt = "<⃒";
const nvltrie = "⊴⃒";
const nvrArr = "⤃";
const nvrtrie = "⊵⃒";
const nvsim = "∼⃒";
const nwarhk = "⤣";
const nwarr = "↖";
const nwArr = "⇖";
const nwarrow = "↖";
const nwnear = "⤧";
const Oacute = "Ó";
const oacute = "ó";
const oast = "⊛";
const Ocirc = "Ô";
const ocirc = "ô";
const ocir = "⊚";
const Ocy = "О";
const ocy = "о";
const odash = "⊝";
const Odblac = "Ő";
const odblac = "ő";
const odiv = "⨸";
const odot = "⊙";
const odsold = "⦼";
const OElig = "Œ";
const oelig = "œ";
const ofcir = "⦿";
const Ofr = "𝔒";
const ofr = "𝔬";
const ogon = "˛";
const Ograve = "Ò";
const ograve = "ò";
const ogt = "⧁";
const ohbar = "⦵";
const ohm = "Ω";
const oint = "∮";
const olarr = "↺";
const olcir = "⦾";
const olcross = "⦻";
const oline = "‾";
const olt = "⧀";
const Omacr = "Ō";
const omacr = "ō";
const Omega = "Ω";
const omega = "ω";
const Omicron = "Ο";
const omicron = "ο";
const omid = "⦶";
const ominus = "⊖";
const Oopf = "𝕆";
const oopf = "𝕠";
const opar = "⦷";
const OpenCurlyDoubleQuote = "“";
const OpenCurlyQuote = "‘";
const operp = "⦹";
const oplus = "⊕";
const orarr = "↻";
const Or = "⩔";
const or = "∨";
const ord = "⩝";
const order = "ℴ";
const orderof = "ℴ";
const ordf = "ª";
const ordm = "º";
const origof = "⊶";
const oror = "⩖";
const orslope = "⩗";
const orv = "⩛";
const oS = "Ⓢ";
const Oscr = "𝒪";
const oscr = "ℴ";
const Oslash = "Ø";
const oslash = "ø";
const osol = "⊘";
const Otilde = "Õ";
const otilde = "õ";
const otimesas = "⨶";
const Otimes = "⨷";
const otimes = "⊗";
const Ouml = "Ö";
const ouml = "ö";
const ovbar = "⌽";
const OverBar = "‾";
const OverBrace = "⏞";
const OverBracket = "⎴";
const OverParenthesis = "⏜";
const para = "¶";
const parallel = "∥";
const par = "∥";
const parsim = "⫳";
const parsl = "⫽";
const part = "∂";
const PartialD = "∂";
const Pcy = "П";
const pcy = "п";
const percnt = "%";
const period = ".";
const permil = "‰";
const perp = "⊥";
const pertenk = "‱";
const Pfr = "𝔓";
const pfr = "𝔭";
const Phi = "Φ";
const phi = "φ";
const phiv = "ϕ";
const phmmat = "ℳ";
const phone = "☎";
const Pi = "Π";
const pi = "π";
const pitchfork = "⋔";
const piv = "ϖ";
const planck = "ℏ";
const planckh = "ℎ";
const plankv = "ℏ";
const plusacir = "⨣";
const plusb = "⊞";
const pluscir = "⨢";
const plus = "+";
const plusdo = "∔";
const plusdu = "⨥";
const pluse = "⩲";
const PlusMinus = "±";
const plusmn = "±";
const plussim = "⨦";
const plustwo = "⨧";
const pm = "±";
const Poincareplane = "ℌ";
const pointint = "⨕";
const popf = "𝕡";
const Popf = "ℙ";
const pound = "£";
const prap = "⪷";
const Pr = "⪻";
const pr = "≺";
const prcue = "≼";
const precapprox = "⪷";
const prec = "≺";
const preccurlyeq = "≼";
const Precedes = "≺";
const PrecedesEqual = "⪯";
const PrecedesSlantEqual = "≼";
const PrecedesTilde = "≾";
const preceq = "⪯";
const precnapprox = "⪹";
const precneqq = "⪵";
const precnsim = "⋨";
const pre = "⪯";
const prE = "⪳";
const precsim = "≾";
const prime = "′";
const Prime = "″";
const primes = "ℙ";
const prnap = "⪹";
const prnE = "⪵";
const prnsim = "⋨";
const prod = "∏";
const Product = "∏";
const profalar = "⌮";
const profline = "⌒";
const profsurf = "⌓";
const prop = "∝";
const Proportional = "∝";
const Proportion = "∷";
const propto = "∝";
const prsim = "≾";
const prurel = "⊰";
const Pscr = "𝒫";
const pscr = "𝓅";
const Psi = "Ψ";
const psi = "ψ";
const puncsp = " ";
const Qfr = "𝔔";
const qfr = "𝔮";
const qint = "⨌";
const qopf = "𝕢";
const Qopf = "ℚ";
const qprime = "⁗";
const Qscr = "𝒬";
const qscr = "𝓆";
const quaternions = "ℍ";
const quatint = "⨖";
const quest = "?";
const questeq = "≟";
const quot = '"';
const QUOT = '"';
const rAarr = "⇛";
const race = "∽̱";
const Racute = "Ŕ";
const racute = "ŕ";
const radic = "√";
const raemptyv = "⦳";
const rang = "⟩";
const Rang = "⟫";
const rangd = "⦒";
const range = "⦥";
const rangle = "⟩";
const raquo = "»";
const rarrap = "⥵";
const rarrb = "⇥";
const rarrbfs = "⤠";
const rarrc = "⤳";
const rarr = "→";
const Rarr = "↠";
const rArr = "⇒";
const rarrfs = "⤞";
const rarrhk = "↪";
const rarrlp = "↬";
const rarrpl = "⥅";
const rarrsim = "⥴";
const Rarrtl = "⤖";
const rarrtl = "↣";
const rarrw = "↝";
const ratail = "⤚";
const rAtail = "⤜";
const ratio = "∶";
const rationals = "ℚ";
const rbarr = "⤍";
const rBarr = "⤏";
const RBarr = "⤐";
const rbbrk = "❳";
const rbrace = "}";
const rbrack = "]";
const rbrke = "⦌";
const rbrksld = "⦎";
const rbrkslu = "⦐";
const Rcaron = "Ř";
const rcaron = "ř";
const Rcedil = "Ŗ";
const rcedil = "ŗ";
const rceil = "⌉";
const rcub = "}";
const Rcy = "Р";
const rcy = "р";
const rdca = "⤷";
const rdldhar = "⥩";
const rdquo = "”";
const rdquor = "”";
const rdsh = "↳";
const real = "ℜ";
const realine = "ℛ";
const realpart = "ℜ";
const reals = "ℝ";
const Re = "ℜ";
const rect = "▭";
const reg = "®";
const REG = "®";
const ReverseElement = "∋";
const ReverseEquilibrium = "⇋";
const ReverseUpEquilibrium = "⥯";
const rfisht = "⥽";
const rfloor = "⌋";
const rfr = "𝔯";
const Rfr = "ℜ";
const rHar = "⥤";
const rhard = "⇁";
const rharu = "⇀";
const rharul = "⥬";
const Rho = "Ρ";
const rho = "ρ";
const rhov = "ϱ";
const RightAngleBracket = "⟩";
const RightArrowBar = "⇥";
const rightarrow = "→";
const RightArrow = "→";
const Rightarrow = "⇒";
const RightArrowLeftArrow = "⇄";
const rightarrowtail = "↣";
const RightCeiling = "⌉";
const RightDoubleBracket = "⟧";
const RightDownTeeVector = "⥝";
const RightDownVectorBar = "⥕";
const RightDownVector = "⇂";
const RightFloor = "⌋";
const rightharpoondown = "⇁";
const rightharpoonup = "⇀";
const rightleftarrows = "⇄";
const rightleftharpoons = "⇌";
const rightrightarrows = "⇉";
const rightsquigarrow = "↝";
const RightTeeArrow = "↦";
const RightTee = "⊢";
const RightTeeVector = "⥛";
const rightthreetimes = "⋌";
const RightTriangleBar = "⧐";
const RightTriangle = "⊳";
const RightTriangleEqual = "⊵";
const RightUpDownVector = "⥏";
const RightUpTeeVector = "⥜";
const RightUpVectorBar = "⥔";
const RightUpVector = "↾";
const RightVectorBar = "⥓";
const RightVector = "⇀";
const ring = "˚";
const risingdotseq = "≓";
const rlarr = "⇄";
const rlhar = "⇌";
const rlm = "‏";
const rmoustache = "⎱";
const rmoust = "⎱";
const rnmid = "⫮";
const roang = "⟭";
const roarr = "⇾";
const robrk = "⟧";
const ropar = "⦆";
const ropf = "𝕣";
const Ropf = "ℝ";
const roplus = "⨮";
const rotimes = "⨵";
const RoundImplies = "⥰";
const rpar = ")";
const rpargt = "⦔";
const rppolint = "⨒";
const rrarr = "⇉";
const Rrightarrow = "⇛";
const rsaquo = "›";
const rscr = "𝓇";
const Rscr = "ℛ";
const rsh = "↱";
const Rsh = "↱";
const rsqb = "]";
const rsquo = "’";
const rsquor = "’";
const rthree = "⋌";
const rtimes = "⋊";
const rtri = "▹";
const rtrie = "⊵";
const rtrif = "▸";
const rtriltri = "⧎";
const RuleDelayed = "⧴";
const ruluhar = "⥨";
const rx = "℞";
const Sacute = "Ś";
const sacute = "ś";
const sbquo = "‚";
const scap = "⪸";
const Scaron = "Š";
const scaron = "š";
const Sc = "⪼";
const sc = "≻";
const sccue = "≽";
const sce = "⪰";
const scE = "⪴";
const Scedil = "Ş";
const scedil = "ş";
const Scirc = "Ŝ";
const scirc = "ŝ";
const scnap = "⪺";
const scnE = "⪶";
const scnsim = "⋩";
const scpolint = "⨓";
const scsim = "≿";
const Scy = "С";
const scy = "с";
const sdotb = "⊡";
const sdot = "⋅";
const sdote = "⩦";
const searhk = "⤥";
const searr = "↘";
const seArr = "⇘";
const searrow = "↘";
const sect = "§";
const semi = ";";
const seswar = "⤩";
const setminus = "∖";
const setmn = "∖";
const sext = "✶";
const Sfr = "𝔖";
const sfr = "𝔰";
const sfrown = "⌢";
const sharp = "♯";
const SHCHcy = "Щ";
const shchcy = "щ";
const SHcy = "Ш";
const shcy = "ш";
const ShortDownArrow = "↓";
const ShortLeftArrow = "←";
const shortmid = "∣";
const shortparallel = "∥";
const ShortRightArrow = "→";
const ShortUpArrow = "↑";
const shy = "­";
const Sigma = "Σ";
const sigma = "σ";
const sigmaf = "ς";
const sigmav = "ς";
const sim = "∼";
const simdot = "⩪";
const sime = "≃";
const simeq = "≃";
const simg = "⪞";
const simgE = "⪠";
const siml = "⪝";
const simlE = "⪟";
const simne = "≆";
const simplus = "⨤";
const simrarr = "⥲";
const slarr = "←";
const SmallCircle = "∘";
const smallsetminus = "∖";
const smashp = "⨳";
const smeparsl = "⧤";
const smid = "∣";
const smile = "⌣";
const smt = "⪪";
const smte = "⪬";
const smtes = "⪬︀";
const SOFTcy = "Ь";
const softcy = "ь";
const solbar = "⌿";
const solb = "⧄";
const sol = "/";
const Sopf = "𝕊";
const sopf = "𝕤";
const spades = "♠";
const spadesuit = "♠";
const spar = "∥";
const sqcap = "⊓";
const sqcaps = "⊓︀";
const sqcup = "⊔";
const sqcups = "⊔︀";
const Sqrt = "√";
const sqsub = "⊏";
const sqsube = "⊑";
const sqsubset = "⊏";
const sqsubseteq = "⊑";
const sqsup = "⊐";
const sqsupe = "⊒";
const sqsupset = "⊐";
const sqsupseteq = "⊒";
const square = "□";
const Square = "□";
const SquareIntersection = "⊓";
const SquareSubset = "⊏";
const SquareSubsetEqual = "⊑";
const SquareSuperset = "⊐";
const SquareSupersetEqual = "⊒";
const SquareUnion = "⊔";
const squarf = "▪";
const squ = "□";
const squf = "▪";
const srarr = "→";
const Sscr = "𝒮";
const sscr = "𝓈";
const ssetmn = "∖";
const ssmile = "⌣";
const sstarf = "⋆";
const Star = "⋆";
const star = "☆";
const starf = "★";
const straightepsilon = "ϵ";
const straightphi = "ϕ";
const strns = "¯";
const sub = "⊂";
const Sub = "⋐";
const subdot = "⪽";
const subE = "⫅";
const sube = "⊆";
const subedot = "⫃";
const submult = "⫁";
const subnE = "⫋";
const subne = "⊊";
const subplus = "⪿";
const subrarr = "⥹";
const subset = "⊂";
const Subset = "⋐";
const subseteq = "⊆";
const subseteqq = "⫅";
const SubsetEqual = "⊆";
const subsetneq = "⊊";
const subsetneqq = "⫋";
const subsim = "⫇";
const subsub = "⫕";
const subsup = "⫓";
const succapprox = "⪸";
const succ = "≻";
const succcurlyeq = "≽";
const Succeeds = "≻";
const SucceedsEqual = "⪰";
const SucceedsSlantEqual = "≽";
const SucceedsTilde = "≿";
const succeq = "⪰";
const succnapprox = "⪺";
const succneqq = "⪶";
const succnsim = "⋩";
const succsim = "≿";
const SuchThat = "∋";
const sum = "∑";
const Sum = "∑";
const sung = "♪";
const sup1 = "¹";
const sup2 = "²";
const sup3 = "³";
const sup = "⊃";
const Sup = "⋑";
const supdot = "⪾";
const supdsub = "⫘";
const supE = "⫆";
const supe = "⊇";
const supedot = "⫄";
const Superset = "⊃";
const SupersetEqual = "⊇";
const suphsol = "⟉";
const suphsub = "⫗";
const suplarr = "⥻";
const supmult = "⫂";
const supnE = "⫌";
const supne = "⊋";
const supplus = "⫀";
const supset = "⊃";
const Supset = "⋑";
const supseteq = "⊇";
const supseteqq = "⫆";
const supsetneq = "⊋";
const supsetneqq = "⫌";
const supsim = "⫈";
const supsub = "⫔";
const supsup = "⫖";
const swarhk = "⤦";
const swarr = "↙";
const swArr = "⇙";
const swarrow = "↙";
const swnwar = "⤪";
const szlig = "ß";
const Tab = "	";
const target = "⌖";
const Tau = "Τ";
const tau = "τ";
const tbrk = "⎴";
const Tcaron = "Ť";
const tcaron = "ť";
const Tcedil = "Ţ";
const tcedil = "ţ";
const Tcy = "Т";
const tcy = "т";
const tdot = "⃛";
const telrec = "⌕";
const Tfr = "𝔗";
const tfr = "𝔱";
const there4 = "∴";
const therefore = "∴";
const Therefore = "∴";
const Theta = "Θ";
const theta = "θ";
const thetasym = "ϑ";
const thetav = "ϑ";
const thickapprox = "≈";
const thicksim = "∼";
const ThickSpace = "  ";
const ThinSpace = " ";
const thinsp = " ";
const thkap = "≈";
const thksim = "∼";
const THORN = "Þ";
const thorn = "þ";
const tilde = "˜";
const Tilde = "∼";
const TildeEqual = "≃";
const TildeFullEqual = "≅";
const TildeTilde = "≈";
const timesbar = "⨱";
const timesb = "⊠";
const times = "×";
const timesd = "⨰";
const tint = "∭";
const toea = "⤨";
const topbot = "⌶";
const topcir = "⫱";
const top = "⊤";
const Topf = "𝕋";
const topf = "𝕥";
const topfork = "⫚";
const tosa = "⤩";
const tprime = "‴";
const trade = "™";
const TRADE = "™";
const triangle = "▵";
const triangledown = "▿";
const triangleleft = "◃";
const trianglelefteq = "⊴";
const triangleq = "≜";
const triangleright = "▹";
const trianglerighteq = "⊵";
const tridot = "◬";
const trie = "≜";
const triminus = "⨺";
const TripleDot = "⃛";
const triplus = "⨹";
const trisb = "⧍";
const tritime = "⨻";
const trpezium = "⏢";
const Tscr = "𝒯";
const tscr = "𝓉";
const TScy = "Ц";
const tscy = "ц";
const TSHcy = "Ћ";
const tshcy = "ћ";
const Tstrok = "Ŧ";
const tstrok = "ŧ";
const twixt = "≬";
const twoheadleftarrow = "↞";
const twoheadrightarrow = "↠";
const Uacute = "Ú";
const uacute = "ú";
const uarr = "↑";
const Uarr = "↟";
const uArr = "⇑";
const Uarrocir = "⥉";
const Ubrcy = "Ў";
const ubrcy = "ў";
const Ubreve = "Ŭ";
const ubreve = "ŭ";
const Ucirc = "Û";
const ucirc = "û";
const Ucy = "У";
const ucy = "у";
const udarr = "⇅";
const Udblac = "Ű";
const udblac = "ű";
const udhar = "⥮";
const ufisht = "⥾";
const Ufr = "𝔘";
const ufr = "𝔲";
const Ugrave = "Ù";
const ugrave = "ù";
const uHar = "⥣";
const uharl = "↿";
const uharr = "↾";
const uhblk = "▀";
const ulcorn = "⌜";
const ulcorner = "⌜";
const ulcrop = "⌏";
const ultri = "◸";
const Umacr = "Ū";
const umacr = "ū";
const uml = "¨";
const UnderBar = "_";
const UnderBrace = "⏟";
const UnderBracket = "⎵";
const UnderParenthesis = "⏝";
const Union = "⋃";
const UnionPlus = "⊎";
const Uogon = "Ų";
const uogon = "ų";
const Uopf = "𝕌";
const uopf = "𝕦";
const UpArrowBar = "⤒";
const uparrow = "↑";
const UpArrow = "↑";
const Uparrow = "⇑";
const UpArrowDownArrow = "⇅";
const updownarrow = "↕";
const UpDownArrow = "↕";
const Updownarrow = "⇕";
const UpEquilibrium = "⥮";
const upharpoonleft = "↿";
const upharpoonright = "↾";
const uplus = "⊎";
const UpperLeftArrow = "↖";
const UpperRightArrow = "↗";
const upsi = "υ";
const Upsi = "ϒ";
const upsih = "ϒ";
const Upsilon = "Υ";
const upsilon = "υ";
const UpTeeArrow = "↥";
const UpTee = "⊥";
const upuparrows = "⇈";
const urcorn = "⌝";
const urcorner = "⌝";
const urcrop = "⌎";
const Uring = "Ů";
const uring = "ů";
const urtri = "◹";
const Uscr = "𝒰";
const uscr = "𝓊";
const utdot = "⋰";
const Utilde = "Ũ";
const utilde = "ũ";
const utri = "▵";
const utrif = "▴";
const uuarr = "⇈";
const Uuml = "Ü";
const uuml = "ü";
const uwangle = "⦧";
const vangrt = "⦜";
const varepsilon = "ϵ";
const varkappa = "ϰ";
const varnothing = "∅";
const varphi = "ϕ";
const varpi = "ϖ";
const varpropto = "∝";
const varr = "↕";
const vArr = "⇕";
const varrho = "ϱ";
const varsigma = "ς";
const varsubsetneq = "⊊︀";
const varsubsetneqq = "⫋︀";
const varsupsetneq = "⊋︀";
const varsupsetneqq = "⫌︀";
const vartheta = "ϑ";
const vartriangleleft = "⊲";
const vartriangleright = "⊳";
const vBar = "⫨";
const Vbar = "⫫";
const vBarv = "⫩";
const Vcy = "В";
const vcy = "в";
const vdash = "⊢";
const vDash = "⊨";
const Vdash = "⊩";
const VDash = "⊫";
const Vdashl = "⫦";
const veebar = "⊻";
const vee = "∨";
const Vee = "⋁";
const veeeq = "≚";
const vellip = "⋮";
const verbar = "|";
const Verbar = "‖";
const vert = "|";
const Vert = "‖";
const VerticalBar = "∣";
const VerticalLine = "|";
const VerticalSeparator = "❘";
const VerticalTilde = "≀";
const VeryThinSpace = " ";
const Vfr = "𝔙";
const vfr = "𝔳";
const vltri = "⊲";
const vnsub = "⊂⃒";
const vnsup = "⊃⃒";
const Vopf = "𝕍";
const vopf = "𝕧";
const vprop = "∝";
const vrtri = "⊳";
const Vscr = "𝒱";
const vscr = "𝓋";
const vsubnE = "⫋︀";
const vsubne = "⊊︀";
const vsupnE = "⫌︀";
const vsupne = "⊋︀";
const Vvdash = "⊪";
const vzigzag = "⦚";
const Wcirc = "Ŵ";
const wcirc = "ŵ";
const wedbar = "⩟";
const wedge = "∧";
const Wedge = "⋀";
const wedgeq = "≙";
const weierp = "℘";
const Wfr = "𝔚";
const wfr = "𝔴";
const Wopf = "𝕎";
const wopf = "𝕨";
const wp = "℘";
const wr = "≀";
const wreath = "≀";
const Wscr = "𝒲";
const wscr = "𝓌";
const xcap = "⋂";
const xcirc = "◯";
const xcup = "⋃";
const xdtri = "▽";
const Xfr = "𝔛";
const xfr = "𝔵";
const xharr = "⟷";
const xhArr = "⟺";
const Xi = "Ξ";
const xi = "ξ";
const xlarr = "⟵";
const xlArr = "⟸";
const xmap = "⟼";
const xnis = "⋻";
const xodot = "⨀";
const Xopf = "𝕏";
const xopf = "𝕩";
const xoplus = "⨁";
const xotime = "⨂";
const xrarr = "⟶";
const xrArr = "⟹";
const Xscr = "𝒳";
const xscr = "𝓍";
const xsqcup = "⨆";
const xuplus = "⨄";
const xutri = "△";
const xvee = "⋁";
const xwedge = "⋀";
const Yacute = "Ý";
const yacute = "ý";
const YAcy = "Я";
const yacy = "я";
const Ycirc = "Ŷ";
const ycirc = "ŷ";
const Ycy = "Ы";
const ycy = "ы";
const yen = "¥";
const Yfr = "𝔜";
const yfr = "𝔶";
const YIcy = "Ї";
const yicy = "ї";
const Yopf = "𝕐";
const yopf = "𝕪";
const Yscr = "𝒴";
const yscr = "𝓎";
const YUcy = "Ю";
const yucy = "ю";
const yuml = "ÿ";
const Yuml = "Ÿ";
const Zacute = "Ź";
const zacute = "ź";
const Zcaron = "Ž";
const zcaron = "ž";
const Zcy = "З";
const zcy = "з";
const Zdot = "Ż";
const zdot = "ż";
const zeetrf = "ℨ";
const ZeroWidthSpace = "​";
const Zeta = "Ζ";
const zeta = "ζ";
const zfr = "𝔷";
const Zfr = "ℨ";
const ZHcy = "Ж";
const zhcy = "ж";
const zigrarr = "⇝";
const zopf = "𝕫";
const Zopf = "ℤ";
const Zscr = "𝒵";
const zscr = "𝓏";
const zwj = "‍";
const zwnj = "‌";
const require$$0$1 = {
  Aacute,
  aacute,
  Abreve,
  abreve,
  ac,
  acd,
  acE,
  Acirc,
  acirc,
  acute,
  Acy,
  acy,
  AElig,
  aelig,
  af,
  Afr,
  afr,
  Agrave,
  agrave,
  alefsym,
  aleph,
  Alpha,
  alpha,
  Amacr,
  amacr,
  amalg,
  amp,
  AMP,
  andand,
  And,
  and,
  andd,
  andslope,
  andv,
  ang,
  ange,
  angle,
  angmsdaa,
  angmsdab,
  angmsdac,
  angmsdad,
  angmsdae,
  angmsdaf,
  angmsdag,
  angmsdah,
  angmsd,
  angrt,
  angrtvb,
  angrtvbd,
  angsph,
  angst,
  angzarr,
  Aogon,
  aogon,
  Aopf,
  aopf,
  apacir,
  ap,
  apE,
  ape,
  apid,
  apos,
  ApplyFunction,
  approx,
  approxeq,
  Aring,
  aring,
  Ascr,
  ascr,
  Assign,
  ast,
  asymp,
  asympeq,
  Atilde,
  atilde,
  Auml,
  auml,
  awconint,
  awint,
  backcong,
  backepsilon,
  backprime,
  backsim,
  backsimeq,
  Backslash,
  Barv,
  barvee,
  barwed,
  Barwed,
  barwedge,
  bbrk,
  bbrktbrk,
  bcong,
  Bcy,
  bcy,
  bdquo,
  becaus,
  because,
  Because,
  bemptyv,
  bepsi,
  bernou,
  Bernoullis,
  Beta,
  beta,
  beth,
  between,
  Bfr,
  bfr,
  bigcap,
  bigcirc,
  bigcup,
  bigodot,
  bigoplus,
  bigotimes,
  bigsqcup,
  bigstar,
  bigtriangledown,
  bigtriangleup,
  biguplus,
  bigvee,
  bigwedge,
  bkarow,
  blacklozenge,
  blacksquare,
  blacktriangle,
  blacktriangledown,
  blacktriangleleft,
  blacktriangleright,
  blank,
  blk12,
  blk14,
  blk34,
  block: block$1,
  bne,
  bnequiv,
  bNot,
  bnot,
  Bopf,
  bopf,
  bot,
  bottom,
  bowtie,
  boxbox,
  boxdl,
  boxdL,
  boxDl,
  boxDL,
  boxdr,
  boxdR,
  boxDr,
  boxDR,
  boxh,
  boxH,
  boxhd,
  boxHd,
  boxhD,
  boxHD,
  boxhu,
  boxHu,
  boxhU,
  boxHU,
  boxminus,
  boxplus,
  boxtimes,
  boxul,
  boxuL,
  boxUl,
  boxUL,
  boxur,
  boxuR,
  boxUr,
  boxUR,
  boxv,
  boxV,
  boxvh,
  boxvH,
  boxVh,
  boxVH,
  boxvl,
  boxvL,
  boxVl,
  boxVL,
  boxvr,
  boxvR,
  boxVr,
  boxVR,
  bprime,
  breve,
  Breve,
  brvbar,
  bscr,
  Bscr,
  bsemi,
  bsim,
  bsime,
  bsolb,
  bsol,
  bsolhsub,
  bull,
  bullet,
  bump,
  bumpE,
  bumpe,
  Bumpeq,
  bumpeq,
  Cacute,
  cacute,
  capand,
  capbrcup,
  capcap,
  cap,
  Cap,
  capcup,
  capdot,
  CapitalDifferentialD,
  caps,
  caret,
  caron,
  Cayleys,
  ccaps,
  Ccaron,
  ccaron,
  Ccedil,
  ccedil,
  Ccirc,
  ccirc,
  Cconint,
  ccups,
  ccupssm,
  Cdot,
  cdot,
  cedil,
  Cedilla,
  cemptyv,
  cent,
  centerdot,
  CenterDot,
  cfr,
  Cfr,
  CHcy,
  chcy,
  check,
  checkmark,
  Chi,
  chi,
  circ,
  circeq,
  circlearrowleft,
  circlearrowright,
  circledast,
  circledcirc,
  circleddash,
  CircleDot,
  circledR,
  circledS,
  CircleMinus,
  CirclePlus,
  CircleTimes,
  cir,
  cirE,
  cire,
  cirfnint,
  cirmid,
  cirscir,
  ClockwiseContourIntegral,
  CloseCurlyDoubleQuote,
  CloseCurlyQuote,
  clubs,
  clubsuit,
  colon,
  Colon,
  Colone,
  colone,
  coloneq,
  comma,
  commat,
  comp,
  compfn,
  complement,
  complexes,
  cong,
  congdot,
  Congruent,
  conint,
  Conint,
  ContourIntegral,
  copf,
  Copf,
  coprod,
  Coproduct,
  copy,
  COPY,
  copysr,
  CounterClockwiseContourIntegral,
  crarr,
  cross,
  Cross,
  Cscr,
  cscr,
  csub,
  csube,
  csup,
  csupe,
  ctdot,
  cudarrl,
  cudarrr,
  cuepr,
  cuesc,
  cularr,
  cularrp,
  cupbrcap,
  cupcap,
  CupCap,
  cup,
  Cup,
  cupcup,
  cupdot,
  cupor,
  cups,
  curarr,
  curarrm,
  curlyeqprec,
  curlyeqsucc,
  curlyvee,
  curlywedge,
  curren,
  curvearrowleft,
  curvearrowright,
  cuvee,
  cuwed,
  cwconint,
  cwint,
  cylcty,
  dagger,
  Dagger,
  daleth,
  darr,
  Darr,
  dArr,
  dash,
  Dashv,
  dashv,
  dbkarow,
  dblac,
  Dcaron,
  dcaron,
  Dcy,
  dcy,
  ddagger,
  ddarr,
  DD,
  dd,
  DDotrahd,
  ddotseq,
  deg,
  Del,
  Delta,
  delta,
  demptyv,
  dfisht,
  Dfr,
  dfr,
  dHar,
  dharl,
  dharr,
  DiacriticalAcute,
  DiacriticalDot,
  DiacriticalDoubleAcute,
  DiacriticalGrave,
  DiacriticalTilde,
  diam,
  diamond,
  Diamond,
  diamondsuit,
  diams,
  die,
  DifferentialD,
  digamma,
  disin,
  div,
  divide,
  divideontimes,
  divonx,
  DJcy,
  djcy,
  dlcorn,
  dlcrop,
  dollar,
  Dopf,
  dopf,
  Dot,
  dot,
  DotDot,
  doteq,
  doteqdot,
  DotEqual,
  dotminus,
  dotplus,
  dotsquare,
  doublebarwedge,
  DoubleContourIntegral,
  DoubleDot,
  DoubleDownArrow,
  DoubleLeftArrow,
  DoubleLeftRightArrow,
  DoubleLeftTee,
  DoubleLongLeftArrow,
  DoubleLongLeftRightArrow,
  DoubleLongRightArrow,
  DoubleRightArrow,
  DoubleRightTee,
  DoubleUpArrow,
  DoubleUpDownArrow,
  DoubleVerticalBar,
  DownArrowBar,
  downarrow,
  DownArrow,
  Downarrow,
  DownArrowUpArrow,
  DownBreve,
  downdownarrows,
  downharpoonleft,
  downharpoonright,
  DownLeftRightVector,
  DownLeftTeeVector,
  DownLeftVectorBar,
  DownLeftVector,
  DownRightTeeVector,
  DownRightVectorBar,
  DownRightVector,
  DownTeeArrow,
  DownTee,
  drbkarow,
  drcorn,
  drcrop,
  Dscr,
  dscr,
  DScy,
  dscy,
  dsol,
  Dstrok,
  dstrok,
  dtdot,
  dtri,
  dtrif,
  duarr,
  duhar,
  dwangle,
  DZcy,
  dzcy,
  dzigrarr,
  Eacute,
  eacute,
  easter,
  Ecaron,
  ecaron,
  Ecirc,
  ecirc,
  ecir,
  ecolon,
  Ecy,
  ecy,
  eDDot,
  Edot,
  edot,
  eDot,
  ee,
  efDot,
  Efr,
  efr,
  eg,
  Egrave,
  egrave,
  egs,
  egsdot,
  el,
  Element: Element$2,
  elinters,
  ell,
  els,
  elsdot,
  Emacr,
  emacr,
  empty: empty$1,
  emptyset,
  EmptySmallSquare,
  emptyv,
  EmptyVerySmallSquare,
  emsp13,
  emsp14,
  emsp,
  ENG,
  eng,
  ensp,
  Eogon,
  eogon,
  Eopf,
  eopf,
  epar,
  eparsl,
  eplus,
  epsi,
  Epsilon,
  epsilon,
  epsiv,
  eqcirc,
  eqcolon,
  eqsim,
  eqslantgtr,
  eqslantless,
  Equal,
  equals,
  EqualTilde,
  equest,
  Equilibrium,
  equiv,
  equivDD,
  eqvparsl,
  erarr,
  erDot,
  escr,
  Escr,
  esdot,
  Esim,
  esim,
  Eta,
  eta,
  ETH,
  eth,
  Euml,
  euml,
  euro,
  excl,
  exist,
  Exists,
  expectation,
  exponentiale,
  ExponentialE,
  fallingdotseq,
  Fcy,
  fcy,
  female,
  ffilig,
  fflig,
  ffllig,
  Ffr,
  ffr,
  filig,
  FilledSmallSquare,
  FilledVerySmallSquare,
  fjlig,
  flat,
  fllig,
  fltns,
  fnof,
  Fopf,
  fopf,
  forall,
  ForAll,
  fork,
  forkv,
  Fouriertrf,
  fpartint,
  frac12,
  frac13,
  frac14,
  frac15,
  frac16,
  frac18,
  frac23,
  frac25,
  frac34,
  frac35,
  frac38,
  frac45,
  frac56,
  frac58,
  frac78,
  frasl,
  frown,
  fscr,
  Fscr,
  gacute,
  Gamma,
  gamma,
  Gammad,
  gammad,
  gap,
  Gbreve,
  gbreve,
  Gcedil,
  Gcirc,
  gcirc,
  Gcy,
  gcy,
  Gdot,
  gdot,
  ge,
  gE,
  gEl,
  gel,
  geq,
  geqq,
  geqslant,
  gescc,
  ges,
  gesdot,
  gesdoto,
  gesdotol,
  gesl,
  gesles,
  Gfr,
  gfr,
  gg,
  Gg,
  ggg,
  gimel,
  GJcy,
  gjcy,
  gla,
  gl,
  glE,
  glj,
  gnap,
  gnapprox,
  gne,
  gnE,
  gneq,
  gneqq,
  gnsim,
  Gopf,
  gopf,
  grave,
  GreaterEqual,
  GreaterEqualLess,
  GreaterFullEqual,
  GreaterGreater,
  GreaterLess,
  GreaterSlantEqual,
  GreaterTilde,
  Gscr,
  gscr,
  gsim,
  gsime,
  gsiml,
  gtcc,
  gtcir,
  gt,
  GT,
  Gt,
  gtdot,
  gtlPar,
  gtquest,
  gtrapprox,
  gtrarr,
  gtrdot,
  gtreqless,
  gtreqqless,
  gtrless,
  gtrsim,
  gvertneqq,
  gvnE,
  Hacek,
  hairsp,
  half,
  hamilt,
  HARDcy,
  hardcy,
  harrcir,
  harr,
  hArr,
  harrw,
  Hat,
  hbar,
  Hcirc,
  hcirc,
  hearts,
  heartsuit,
  hellip,
  hercon,
  hfr,
  Hfr,
  HilbertSpace,
  hksearow,
  hkswarow,
  hoarr,
  homtht,
  hookleftarrow,
  hookrightarrow,
  hopf,
  Hopf,
  horbar,
  HorizontalLine,
  hscr,
  Hscr,
  hslash,
  Hstrok,
  hstrok,
  HumpDownHump,
  HumpEqual,
  hybull,
  hyphen,
  Iacute,
  iacute,
  ic,
  Icirc,
  icirc,
  Icy,
  icy,
  Idot,
  IEcy,
  iecy,
  iexcl,
  iff,
  ifr,
  Ifr,
  Igrave,
  igrave,
  ii,
  iiiint,
  iiint,
  iinfin,
  iiota,
  IJlig,
  ijlig,
  Imacr,
  imacr,
  image: image$1,
  ImaginaryI,
  imagline,
  imagpart,
  imath,
  Im,
  imof,
  imped,
  Implies,
  incare,
  "in": "∈",
  infin,
  infintie,
  inodot,
  intcal,
  int,
  Int,
  integers,
  Integral,
  intercal,
  Intersection,
  intlarhk,
  intprod,
  InvisibleComma,
  InvisibleTimes,
  IOcy,
  iocy,
  Iogon,
  iogon,
  Iopf,
  iopf,
  Iota,
  iota,
  iprod,
  iquest,
  iscr,
  Iscr,
  isin,
  isindot,
  isinE,
  isins,
  isinsv,
  isinv,
  it,
  Itilde,
  itilde,
  Iukcy,
  iukcy,
  Iuml,
  iuml,
  Jcirc,
  jcirc,
  Jcy,
  jcy,
  Jfr,
  jfr,
  jmath,
  Jopf,
  jopf,
  Jscr,
  jscr,
  Jsercy,
  jsercy,
  Jukcy,
  jukcy,
  Kappa,
  kappa,
  kappav,
  Kcedil,
  kcedil,
  Kcy,
  kcy,
  Kfr,
  kfr,
  kgreen,
  KHcy,
  khcy,
  KJcy,
  kjcy,
  Kopf,
  kopf,
  Kscr,
  kscr,
  lAarr,
  Lacute,
  lacute,
  laemptyv,
  lagran,
  Lambda,
  lambda,
  lang,
  Lang,
  langd,
  langle,
  lap,
  Laplacetrf,
  laquo,
  larrb,
  larrbfs,
  larr,
  Larr,
  lArr,
  larrfs,
  larrhk,
  larrlp,
  larrpl,
  larrsim,
  larrtl,
  latail,
  lAtail,
  lat,
  late,
  lates,
  lbarr,
  lBarr,
  lbbrk,
  lbrace,
  lbrack,
  lbrke,
  lbrksld,
  lbrkslu,
  Lcaron,
  lcaron,
  Lcedil,
  lcedil,
  lceil,
  lcub,
  Lcy,
  lcy,
  ldca,
  ldquo,
  ldquor,
  ldrdhar,
  ldrushar,
  ldsh,
  le,
  lE,
  LeftAngleBracket,
  LeftArrowBar,
  leftarrow,
  LeftArrow,
  Leftarrow,
  LeftArrowRightArrow,
  leftarrowtail,
  LeftCeiling,
  LeftDoubleBracket,
  LeftDownTeeVector,
  LeftDownVectorBar,
  LeftDownVector,
  LeftFloor,
  leftharpoondown,
  leftharpoonup,
  leftleftarrows,
  leftrightarrow,
  LeftRightArrow,
  Leftrightarrow,
  leftrightarrows,
  leftrightharpoons,
  leftrightsquigarrow,
  LeftRightVector,
  LeftTeeArrow,
  LeftTee,
  LeftTeeVector,
  leftthreetimes,
  LeftTriangleBar,
  LeftTriangle,
  LeftTriangleEqual,
  LeftUpDownVector,
  LeftUpTeeVector,
  LeftUpVectorBar,
  LeftUpVector,
  LeftVectorBar,
  LeftVector,
  lEg,
  leg,
  leq,
  leqq,
  leqslant,
  lescc,
  les,
  lesdot,
  lesdoto,
  lesdotor,
  lesg,
  lesges,
  lessapprox,
  lessdot,
  lesseqgtr,
  lesseqqgtr,
  LessEqualGreater,
  LessFullEqual,
  LessGreater,
  lessgtr,
  LessLess,
  lesssim,
  LessSlantEqual,
  LessTilde,
  lfisht,
  lfloor,
  Lfr,
  lfr,
  lg,
  lgE,
  lHar,
  lhard,
  lharu,
  lharul,
  lhblk,
  LJcy,
  ljcy,
  llarr,
  ll,
  Ll,
  llcorner,
  Lleftarrow,
  llhard,
  lltri,
  Lmidot,
  lmidot,
  lmoustache,
  lmoust,
  lnap,
  lnapprox,
  lne,
  lnE,
  lneq,
  lneqq,
  lnsim,
  loang,
  loarr,
  lobrk,
  longleftarrow,
  LongLeftArrow,
  Longleftarrow,
  longleftrightarrow,
  LongLeftRightArrow,
  Longleftrightarrow,
  longmapsto,
  longrightarrow,
  LongRightArrow,
  Longrightarrow,
  looparrowleft,
  looparrowright,
  lopar,
  Lopf,
  lopf,
  loplus,
  lotimes,
  lowast,
  lowbar,
  LowerLeftArrow,
  LowerRightArrow,
  loz,
  lozenge,
  lozf,
  lpar,
  lparlt,
  lrarr,
  lrcorner,
  lrhar,
  lrhard,
  lrm,
  lrtri,
  lsaquo,
  lscr,
  Lscr,
  lsh,
  Lsh,
  lsim,
  lsime,
  lsimg,
  lsqb,
  lsquo,
  lsquor,
  Lstrok,
  lstrok,
  ltcc,
  ltcir,
  lt,
  LT,
  Lt,
  ltdot,
  lthree,
  ltimes,
  ltlarr,
  ltquest,
  ltri,
  ltrie,
  ltrif,
  ltrPar,
  lurdshar,
  luruhar,
  lvertneqq,
  lvnE,
  macr,
  male,
  malt,
  maltese,
  "Map": "⤅",
  map: map$2,
  mapsto,
  mapstodown,
  mapstoleft,
  mapstoup,
  marker,
  mcomma,
  Mcy,
  mcy,
  mdash,
  mDDot,
  measuredangle,
  MediumSpace,
  Mellintrf,
  Mfr,
  mfr,
  mho,
  micro,
  midast,
  midcir,
  mid,
  middot,
  minusb,
  minus,
  minusd,
  minusdu,
  MinusPlus,
  mlcp,
  mldr,
  mnplus,
  models,
  Mopf,
  mopf,
  mp,
  mscr,
  Mscr,
  mstpos,
  Mu,
  mu,
  multimap,
  mumap,
  nabla,
  Nacute,
  nacute,
  nang,
  nap,
  napE,
  napid,
  napos,
  napprox,
  natural,
  naturals,
  natur,
  nbsp,
  nbump,
  nbumpe,
  ncap,
  Ncaron,
  ncaron,
  Ncedil,
  ncedil,
  ncong,
  ncongdot,
  ncup,
  Ncy,
  ncy,
  ndash,
  nearhk,
  nearr,
  neArr,
  nearrow,
  ne,
  nedot,
  NegativeMediumSpace,
  NegativeThickSpace,
  NegativeThinSpace,
  NegativeVeryThinSpace,
  nequiv,
  nesear,
  nesim,
  NestedGreaterGreater,
  NestedLessLess,
  NewLine,
  nexist,
  nexists,
  Nfr,
  nfr,
  ngE,
  nge,
  ngeq,
  ngeqq,
  ngeqslant,
  nges,
  nGg,
  ngsim,
  nGt,
  ngt,
  ngtr,
  nGtv,
  nharr,
  nhArr,
  nhpar,
  ni,
  nis,
  nisd,
  niv,
  NJcy,
  njcy,
  nlarr,
  nlArr,
  nldr,
  nlE,
  nle,
  nleftarrow,
  nLeftarrow,
  nleftrightarrow,
  nLeftrightarrow,
  nleq,
  nleqq,
  nleqslant,
  nles,
  nless,
  nLl,
  nlsim,
  nLt,
  nlt,
  nltri,
  nltrie,
  nLtv,
  nmid,
  NoBreak,
  NonBreakingSpace,
  nopf,
  Nopf,
  Not,
  not,
  NotCongruent,
  NotCupCap,
  NotDoubleVerticalBar,
  NotElement,
  NotEqual,
  NotEqualTilde,
  NotExists,
  NotGreater,
  NotGreaterEqual,
  NotGreaterFullEqual,
  NotGreaterGreater,
  NotGreaterLess,
  NotGreaterSlantEqual,
  NotGreaterTilde,
  NotHumpDownHump,
  NotHumpEqual,
  notin,
  notindot,
  notinE,
  notinva,
  notinvb,
  notinvc,
  NotLeftTriangleBar,
  NotLeftTriangle,
  NotLeftTriangleEqual,
  NotLess,
  NotLessEqual,
  NotLessGreater,
  NotLessLess,
  NotLessSlantEqual,
  NotLessTilde,
  NotNestedGreaterGreater,
  NotNestedLessLess,
  notni,
  notniva,
  notnivb,
  notnivc,
  NotPrecedes,
  NotPrecedesEqual,
  NotPrecedesSlantEqual,
  NotReverseElement,
  NotRightTriangleBar,
  NotRightTriangle,
  NotRightTriangleEqual,
  NotSquareSubset,
  NotSquareSubsetEqual,
  NotSquareSuperset,
  NotSquareSupersetEqual,
  NotSubset,
  NotSubsetEqual,
  NotSucceeds,
  NotSucceedsEqual,
  NotSucceedsSlantEqual,
  NotSucceedsTilde,
  NotSuperset,
  NotSupersetEqual,
  NotTilde,
  NotTildeEqual,
  NotTildeFullEqual,
  NotTildeTilde,
  NotVerticalBar,
  nparallel,
  npar,
  nparsl,
  npart,
  npolint,
  npr,
  nprcue,
  nprec,
  npreceq,
  npre,
  nrarrc,
  nrarr,
  nrArr,
  nrarrw,
  nrightarrow,
  nRightarrow,
  nrtri,
  nrtrie,
  nsc,
  nsccue,
  nsce,
  Nscr,
  nscr,
  nshortmid,
  nshortparallel,
  nsim,
  nsime,
  nsimeq,
  nsmid,
  nspar,
  nsqsube,
  nsqsupe,
  nsub,
  nsubE,
  nsube,
  nsubset,
  nsubseteq,
  nsubseteqq,
  nsucc,
  nsucceq,
  nsup,
  nsupE,
  nsupe,
  nsupset,
  nsupseteq,
  nsupseteqq,
  ntgl,
  Ntilde,
  ntilde,
  ntlg,
  ntriangleleft,
  ntrianglelefteq,
  ntriangleright,
  ntrianglerighteq,
  Nu,
  nu,
  num,
  numero,
  numsp,
  nvap,
  nvdash,
  nvDash,
  nVdash,
  nVDash,
  nvge,
  nvgt,
  nvHarr,
  nvinfin,
  nvlArr,
  nvle,
  nvlt,
  nvltrie,
  nvrArr,
  nvrtrie,
  nvsim,
  nwarhk,
  nwarr,
  nwArr,
  nwarrow,
  nwnear,
  Oacute,
  oacute,
  oast,
  Ocirc,
  ocirc,
  ocir,
  Ocy,
  ocy,
  odash,
  Odblac,
  odblac,
  odiv,
  odot,
  odsold,
  OElig,
  oelig,
  ofcir,
  Ofr,
  ofr,
  ogon,
  Ograve,
  ograve,
  ogt,
  ohbar,
  ohm,
  oint,
  olarr,
  olcir,
  olcross,
  oline,
  olt,
  Omacr,
  omacr,
  Omega,
  omega,
  Omicron,
  omicron,
  omid,
  ominus,
  Oopf,
  oopf,
  opar,
  OpenCurlyDoubleQuote,
  OpenCurlyQuote,
  operp,
  oplus,
  orarr,
  Or,
  or,
  ord,
  order,
  orderof,
  ordf,
  ordm,
  origof,
  oror,
  orslope,
  orv,
  oS,
  Oscr,
  oscr,
  Oslash,
  oslash,
  osol,
  Otilde,
  otilde,
  otimesas,
  Otimes,
  otimes,
  Ouml,
  ouml,
  ovbar,
  OverBar,
  OverBrace,
  OverBracket,
  OverParenthesis,
  para,
  parallel,
  par,
  parsim,
  parsl,
  part,
  PartialD,
  Pcy,
  pcy,
  percnt,
  period,
  permil,
  perp,
  pertenk,
  Pfr,
  pfr,
  Phi,
  phi,
  phiv,
  phmmat,
  phone,
  Pi,
  pi,
  pitchfork,
  piv,
  planck,
  planckh,
  plankv,
  plusacir,
  plusb,
  pluscir,
  plus,
  plusdo,
  plusdu,
  pluse,
  PlusMinus,
  plusmn,
  plussim,
  plustwo,
  pm,
  Poincareplane,
  pointint,
  popf,
  Popf,
  pound,
  prap,
  Pr,
  pr,
  prcue,
  precapprox,
  prec,
  preccurlyeq,
  Precedes,
  PrecedesEqual,
  PrecedesSlantEqual,
  PrecedesTilde,
  preceq,
  precnapprox,
  precneqq,
  precnsim,
  pre,
  prE,
  precsim,
  prime,
  Prime,
  primes,
  prnap,
  prnE,
  prnsim,
  prod,
  Product,
  profalar,
  profline,
  profsurf,
  prop,
  Proportional,
  Proportion,
  propto,
  prsim,
  prurel,
  Pscr,
  pscr,
  Psi,
  psi,
  puncsp,
  Qfr,
  qfr,
  qint,
  qopf,
  Qopf,
  qprime,
  Qscr,
  qscr,
  quaternions,
  quatint,
  quest,
  questeq,
  quot,
  QUOT,
  rAarr,
  race,
  Racute,
  racute,
  radic,
  raemptyv,
  rang,
  Rang,
  rangd,
  range,
  rangle,
  raquo,
  rarrap,
  rarrb,
  rarrbfs,
  rarrc,
  rarr,
  Rarr,
  rArr,
  rarrfs,
  rarrhk,
  rarrlp,
  rarrpl,
  rarrsim,
  Rarrtl,
  rarrtl,
  rarrw,
  ratail,
  rAtail,
  ratio,
  rationals,
  rbarr,
  rBarr,
  RBarr,
  rbbrk,
  rbrace,
  rbrack,
  rbrke,
  rbrksld,
  rbrkslu,
  Rcaron,
  rcaron,
  Rcedil,
  rcedil,
  rceil,
  rcub,
  Rcy,
  rcy,
  rdca,
  rdldhar,
  rdquo,
  rdquor,
  rdsh,
  real,
  realine,
  realpart,
  reals,
  Re,
  rect,
  reg,
  REG,
  ReverseElement,
  ReverseEquilibrium,
  ReverseUpEquilibrium,
  rfisht,
  rfloor,
  rfr,
  Rfr,
  rHar,
  rhard,
  rharu,
  rharul,
  Rho,
  rho,
  rhov,
  RightAngleBracket,
  RightArrowBar,
  rightarrow,
  RightArrow,
  Rightarrow,
  RightArrowLeftArrow,
  rightarrowtail,
  RightCeiling,
  RightDoubleBracket,
  RightDownTeeVector,
  RightDownVectorBar,
  RightDownVector,
  RightFloor,
  rightharpoondown,
  rightharpoonup,
  rightleftarrows,
  rightleftharpoons,
  rightrightarrows,
  rightsquigarrow,
  RightTeeArrow,
  RightTee,
  RightTeeVector,
  rightthreetimes,
  RightTriangleBar,
  RightTriangle,
  RightTriangleEqual,
  RightUpDownVector,
  RightUpTeeVector,
  RightUpVectorBar,
  RightUpVector,
  RightVectorBar,
  RightVector,
  ring,
  risingdotseq,
  rlarr,
  rlhar,
  rlm,
  rmoustache,
  rmoust,
  rnmid,
  roang,
  roarr,
  robrk,
  ropar,
  ropf,
  Ropf,
  roplus,
  rotimes,
  RoundImplies,
  rpar,
  rpargt,
  rppolint,
  rrarr,
  Rrightarrow,
  rsaquo,
  rscr,
  Rscr,
  rsh,
  Rsh,
  rsqb,
  rsquo,
  rsquor,
  rthree,
  rtimes,
  rtri,
  rtrie,
  rtrif,
  rtriltri,
  RuleDelayed,
  ruluhar,
  rx,
  Sacute,
  sacute,
  sbquo,
  scap,
  Scaron,
  scaron,
  Sc,
  sc,
  sccue,
  sce,
  scE,
  Scedil,
  scedil,
  Scirc,
  scirc,
  scnap,
  scnE,
  scnsim,
  scpolint,
  scsim,
  Scy,
  scy,
  sdotb,
  sdot,
  sdote,
  searhk,
  searr,
  seArr,
  searrow,
  sect,
  semi,
  seswar,
  setminus,
  setmn,
  sext,
  Sfr,
  sfr,
  sfrown,
  sharp,
  SHCHcy,
  shchcy,
  SHcy,
  shcy,
  ShortDownArrow,
  ShortLeftArrow,
  shortmid,
  shortparallel,
  ShortRightArrow,
  ShortUpArrow,
  shy,
  Sigma,
  sigma,
  sigmaf,
  sigmav,
  sim,
  simdot,
  sime,
  simeq,
  simg,
  simgE,
  siml,
  simlE,
  simne,
  simplus,
  simrarr,
  slarr,
  SmallCircle,
  smallsetminus,
  smashp,
  smeparsl,
  smid,
  smile,
  smt,
  smte,
  smtes,
  SOFTcy,
  softcy,
  solbar,
  solb,
  sol,
  Sopf,
  sopf,
  spades,
  spadesuit,
  spar,
  sqcap,
  sqcaps,
  sqcup,
  sqcups,
  Sqrt,
  sqsub,
  sqsube,
  sqsubset,
  sqsubseteq,
  sqsup,
  sqsupe,
  sqsupset,
  sqsupseteq,
  square,
  Square,
  SquareIntersection,
  SquareSubset,
  SquareSubsetEqual,
  SquareSuperset,
  SquareSupersetEqual,
  SquareUnion,
  squarf,
  squ,
  squf,
  srarr,
  Sscr,
  sscr,
  ssetmn,
  ssmile,
  sstarf,
  Star,
  star,
  starf,
  straightepsilon,
  straightphi,
  strns,
  sub,
  Sub,
  subdot,
  subE,
  sube,
  subedot,
  submult,
  subnE,
  subne,
  subplus,
  subrarr,
  subset,
  Subset,
  subseteq,
  subseteqq,
  SubsetEqual,
  subsetneq,
  subsetneqq,
  subsim,
  subsub,
  subsup,
  succapprox,
  succ,
  succcurlyeq,
  Succeeds,
  SucceedsEqual,
  SucceedsSlantEqual,
  SucceedsTilde,
  succeq,
  succnapprox,
  succneqq,
  succnsim,
  succsim,
  SuchThat,
  sum,
  Sum,
  sung,
  sup1,
  sup2,
  sup3,
  sup,
  Sup,
  supdot,
  supdsub,
  supE,
  supe,
  supedot,
  Superset,
  SupersetEqual,
  suphsol,
  suphsub,
  suplarr,
  supmult,
  supnE,
  supne,
  supplus,
  supset,
  Supset,
  supseteq,
  supseteqq,
  supsetneq,
  supsetneqq,
  supsim,
  supsub,
  supsup,
  swarhk,
  swarr,
  swArr,
  swarrow,
  swnwar,
  szlig,
  Tab,
  target,
  Tau,
  tau,
  tbrk,
  Tcaron,
  tcaron,
  Tcedil,
  tcedil,
  Tcy,
  tcy,
  tdot,
  telrec,
  Tfr,
  tfr,
  there4,
  therefore,
  Therefore,
  Theta,
  theta,
  thetasym,
  thetav,
  thickapprox,
  thicksim,
  ThickSpace,
  ThinSpace,
  thinsp,
  thkap,
  thksim,
  THORN,
  thorn,
  tilde,
  Tilde,
  TildeEqual,
  TildeFullEqual,
  TildeTilde,
  timesbar,
  timesb,
  times,
  timesd,
  tint,
  toea,
  topbot,
  topcir,
  top,
  Topf,
  topf,
  topfork,
  tosa,
  tprime,
  trade,
  TRADE,
  triangle,
  triangledown,
  triangleleft,
  trianglelefteq,
  triangleq,
  triangleright,
  trianglerighteq,
  tridot,
  trie,
  triminus,
  TripleDot,
  triplus,
  trisb,
  tritime,
  trpezium,
  Tscr,
  tscr,
  TScy,
  tscy,
  TSHcy,
  tshcy,
  Tstrok,
  tstrok,
  twixt,
  twoheadleftarrow,
  twoheadrightarrow,
  Uacute,
  uacute,
  uarr,
  Uarr,
  uArr,
  Uarrocir,
  Ubrcy,
  ubrcy,
  Ubreve,
  ubreve,
  Ucirc,
  ucirc,
  Ucy,
  ucy,
  udarr,
  Udblac,
  udblac,
  udhar,
  ufisht,
  Ufr,
  ufr,
  Ugrave,
  ugrave,
  uHar,
  uharl,
  uharr,
  uhblk,
  ulcorn,
  ulcorner,
  ulcrop,
  ultri,
  Umacr,
  umacr,
  uml,
  UnderBar,
  UnderBrace,
  UnderBracket,
  UnderParenthesis,
  Union,
  UnionPlus,
  Uogon,
  uogon,
  Uopf,
  uopf,
  UpArrowBar,
  uparrow,
  UpArrow,
  Uparrow,
  UpArrowDownArrow,
  updownarrow,
  UpDownArrow,
  Updownarrow,
  UpEquilibrium,
  upharpoonleft,
  upharpoonright,
  uplus,
  UpperLeftArrow,
  UpperRightArrow,
  upsi,
  Upsi,
  upsih,
  Upsilon,
  upsilon,
  UpTeeArrow,
  UpTee,
  upuparrows,
  urcorn,
  urcorner,
  urcrop,
  Uring,
  uring,
  urtri,
  Uscr,
  uscr,
  utdot,
  Utilde,
  utilde,
  utri,
  utrif,
  uuarr,
  Uuml,
  uuml,
  uwangle,
  vangrt,
  varepsilon,
  varkappa,
  varnothing,
  varphi,
  varpi,
  varpropto,
  varr,
  vArr,
  varrho,
  varsigma,
  varsubsetneq,
  varsubsetneqq,
  varsupsetneq,
  varsupsetneqq,
  vartheta,
  vartriangleleft,
  vartriangleright,
  vBar,
  Vbar,
  vBarv,
  Vcy,
  vcy,
  vdash,
  vDash,
  Vdash,
  VDash,
  Vdashl,
  veebar,
  vee,
  Vee,
  veeeq,
  vellip,
  verbar,
  Verbar,
  vert,
  Vert,
  VerticalBar,
  VerticalLine,
  VerticalSeparator,
  VerticalTilde,
  VeryThinSpace,
  Vfr,
  vfr,
  vltri,
  vnsub,
  vnsup,
  Vopf,
  vopf,
  vprop,
  vrtri,
  Vscr,
  vscr,
  vsubnE,
  vsubne,
  vsupnE,
  vsupne,
  Vvdash,
  vzigzag,
  Wcirc,
  wcirc,
  wedbar,
  wedge,
  Wedge,
  wedgeq,
  weierp,
  Wfr,
  wfr,
  Wopf,
  wopf,
  wp,
  wr,
  wreath,
  Wscr,
  wscr,
  xcap,
  xcirc,
  xcup,
  xdtri,
  Xfr,
  xfr,
  xharr,
  xhArr,
  Xi,
  xi,
  xlarr,
  xlArr,
  xmap,
  xnis,
  xodot,
  Xopf,
  xopf,
  xoplus,
  xotime,
  xrarr,
  xrArr,
  Xscr,
  xscr,
  xsqcup,
  xuplus,
  xutri,
  xvee,
  xwedge,
  Yacute,
  yacute,
  YAcy,
  yacy,
  Ycirc,
  ycirc,
  Ycy,
  ycy,
  yen,
  Yfr,
  yfr,
  YIcy,
  yicy,
  Yopf,
  yopf,
  Yscr,
  yscr,
  YUcy,
  yucy,
  yuml,
  Yuml,
  Zacute,
  zacute,
  Zcaron,
  zcaron,
  Zcy,
  zcy,
  Zdot,
  zdot,
  zeetrf,
  ZeroWidthSpace,
  Zeta,
  zeta,
  zfr,
  Zfr,
  ZHcy,
  zhcy,
  zigrarr,
  zopf,
  Zopf,
  Zscr,
  zscr,
  zwj,
  zwnj
};
(function(module) {
  module.exports = require$$0$1;
})(entities$1);
var regex$4 = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/;
var mdurl$1 = {};
var encodeCache = {};
function getEncodeCache(exclude) {
  var i2, ch, cache2 = encodeCache[exclude];
  if (cache2) {
    return cache2;
  }
  cache2 = encodeCache[exclude] = [];
  for (i2 = 0; i2 < 128; i2++) {
    ch = String.fromCharCode(i2);
    if (/^[0-9a-z]$/i.test(ch)) {
      cache2.push(ch);
    } else {
      cache2.push("%" + ("0" + i2.toString(16).toUpperCase()).slice(-2));
    }
  }
  for (i2 = 0; i2 < exclude.length; i2++) {
    cache2[exclude.charCodeAt(i2)] = exclude[i2];
  }
  return cache2;
}
function encode$3(string, exclude, keepEscaped) {
  var i2, l2, code3, nextCode, cache2, result = "";
  if (typeof exclude !== "string") {
    keepEscaped = exclude;
    exclude = encode$3.defaultChars;
  }
  if (typeof keepEscaped === "undefined") {
    keepEscaped = true;
  }
  cache2 = getEncodeCache(exclude);
  for (i2 = 0, l2 = string.length; i2 < l2; i2++) {
    code3 = string.charCodeAt(i2);
    if (keepEscaped && code3 === 37 && i2 + 2 < l2) {
      if (/^[0-9a-f]{2}$/i.test(string.slice(i2 + 1, i2 + 3))) {
        result += string.slice(i2, i2 + 3);
        i2 += 2;
        continue;
      }
    }
    if (code3 < 128) {
      result += cache2[code3];
      continue;
    }
    if (code3 >= 55296 && code3 <= 57343) {
      if (code3 >= 55296 && code3 <= 56319 && i2 + 1 < l2) {
        nextCode = string.charCodeAt(i2 + 1);
        if (nextCode >= 56320 && nextCode <= 57343) {
          result += encodeURIComponent(string[i2] + string[i2 + 1]);
          i2++;
          continue;
        }
      }
      result += "%EF%BF%BD";
      continue;
    }
    result += encodeURIComponent(string[i2]);
  }
  return result;
}
encode$3.defaultChars = ";/?:@&=+$,-_.!~*'()#";
encode$3.componentChars = "-_.!~*'()";
var encode_1 = encode$3;
var decodeCache = {};
function getDecodeCache(exclude) {
  var i2, ch, cache2 = decodeCache[exclude];
  if (cache2) {
    return cache2;
  }
  cache2 = decodeCache[exclude] = [];
  for (i2 = 0; i2 < 128; i2++) {
    ch = String.fromCharCode(i2);
    cache2.push(ch);
  }
  for (i2 = 0; i2 < exclude.length; i2++) {
    ch = exclude.charCodeAt(i2);
    cache2[ch] = "%" + ("0" + ch.toString(16).toUpperCase()).slice(-2);
  }
  return cache2;
}
function decode$3(string, exclude) {
  var cache2;
  if (typeof exclude !== "string") {
    exclude = decode$3.defaultChars;
  }
  cache2 = getDecodeCache(exclude);
  return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {
    var i2, l2, b1, b2, b3, b4, chr, result = "";
    for (i2 = 0, l2 = seq.length; i2 < l2; i2 += 3) {
      b1 = parseInt(seq.slice(i2 + 1, i2 + 3), 16);
      if (b1 < 128) {
        result += cache2[b1];
        continue;
      }
      if ((b1 & 224) === 192 && i2 + 3 < l2) {
        b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16);
        if ((b2 & 192) === 128) {
          chr = b1 << 6 & 1984 | b2 & 63;
          if (chr < 128) {
            result += "��";
          } else {
            result += String.fromCharCode(chr);
          }
          i2 += 3;
          continue;
        }
      }
      if ((b1 & 240) === 224 && i2 + 6 < l2) {
        b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16);
        b3 = parseInt(seq.slice(i2 + 7, i2 + 9), 16);
        if ((b2 & 192) === 128 && (b3 & 192) === 128) {
          chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63;
          if (chr < 2048 || chr >= 55296 && chr <= 57343) {
            result += "���";
          } else {
            result += String.fromCharCode(chr);
          }
          i2 += 6;
          continue;
        }
      }
      if ((b1 & 248) === 240 && i2 + 9 < l2) {
        b2 = parseInt(seq.slice(i2 + 4, i2 + 6), 16);
        b3 = parseInt(seq.slice(i2 + 7, i2 + 9), 16);
        b4 = parseInt(seq.slice(i2 + 10, i2 + 12), 16);
        if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) {
          chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63;
          if (chr < 65536 || chr > 1114111) {
            result += "����";
          } else {
            chr -= 65536;
            result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023));
          }
          i2 += 9;
          continue;
        }
      }
      result += "�";
    }
    return result;
  });
}
decode$3.defaultChars = ";/?:@&=+$,#";
decode$3.componentChars = "";
var decode_1 = decode$3;
var format = function format2(url2) {
  var result = "";
  result += url2.protocol || "";
  result += url2.slashes ? "//" : "";
  result += url2.auth ? url2.auth + "@" : "";
  if (url2.hostname && url2.hostname.indexOf(":") !== -1) {
    result += "[" + url2.hostname + "]";
  } else {
    result += url2.hostname || "";
  }
  result += url2.port ? ":" + url2.port : "";
  result += url2.pathname || "";
  result += url2.search || "";
  result += url2.hash || "";
  return result;
};
function Url() {
  this.protocol = null;
  this.slashes = null;
  this.auth = null;
  this.port = null;
  this.hostname = null;
  this.hash = null;
  this.search = null;
  this.pathname = null;
}
var protocolPattern = /^([a-z0-9.+-]+:)/i, portPattern = /:[0-9]*$/, simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, delims = ["<", ">", '"', "`", " ", "\r", "\n", "	"], unwise = ["{", "}", "|", "\\", "^", "`"].concat(delims), autoEscape = ["'"].concat(unwise), nonHostChars = ["%", "/", "?", ";", "#"].concat(autoEscape), hostEndingChars = ["/", "?", "#"], hostnameMaxLen = 255, hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, hostlessProtocol = {
  "javascript": true,
  "javascript:": true
}, slashedProtocol = {
  "http": true,
  "https": true,
  "ftp": true,
  "gopher": true,
  "file": true,
  "http:": true,
  "https:": true,
  "ftp:": true,
  "gopher:": true,
  "file:": true
};
function urlParse(url2, slashesDenoteHost) {
  if (url2 && url2 instanceof Url) {
    return url2;
  }
  var u2 = new Url();
  u2.parse(url2, slashesDenoteHost);
  return u2;
}
Url.prototype.parse = function(url2, slashesDenoteHost) {
  var i2, l2, lowerProto, hec, slashes, rest = url2;
  rest = rest.trim();
  if (!slashesDenoteHost && url2.split("#").length === 1) {
    var simplePath = simplePathPattern.exec(rest);
    if (simplePath) {
      this.pathname = simplePath[1];
      if (simplePath[2]) {
        this.search = simplePath[2];
      }
      return this;
    }
  }
  var proto2 = protocolPattern.exec(rest);
  if (proto2) {
    proto2 = proto2[0];
    lowerProto = proto2.toLowerCase();
    this.protocol = proto2;
    rest = rest.substr(proto2.length);
  }
  if (slashesDenoteHost || proto2 || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
    slashes = rest.substr(0, 2) === "//";
    if (slashes && !(proto2 && hostlessProtocol[proto2])) {
      rest = rest.substr(2);
      this.slashes = true;
    }
  }
  if (!hostlessProtocol[proto2] && (slashes || proto2 && !slashedProtocol[proto2])) {
    var hostEnd = -1;
    for (i2 = 0; i2 < hostEndingChars.length; i2++) {
      hec = rest.indexOf(hostEndingChars[i2]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
        hostEnd = hec;
      }
    }
    var auth, atSign;
    if (hostEnd === -1) {
      atSign = rest.lastIndexOf("@");
    } else {
      atSign = rest.lastIndexOf("@", hostEnd);
    }
    if (atSign !== -1) {
      auth = rest.slice(0, atSign);
      rest = rest.slice(atSign + 1);
      this.auth = auth;
    }
    hostEnd = -1;
    for (i2 = 0; i2 < nonHostChars.length; i2++) {
      hec = rest.indexOf(nonHostChars[i2]);
      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {
        hostEnd = hec;
      }
    }
    if (hostEnd === -1) {
      hostEnd = rest.length;
    }
    if (rest[hostEnd - 1] === ":") {
      hostEnd--;
    }
    var host = rest.slice(0, hostEnd);
    rest = rest.slice(hostEnd);
    this.parseHost(host);
    this.hostname = this.hostname || "";
    var ipv6Hostname = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]";
    if (!ipv6Hostname) {
      var hostparts = this.hostname.split(/\./);
      for (i2 = 0, l2 = hostparts.length; i2 < l2; i2++) {
        var part2 = hostparts[i2];
        if (!part2) {
          continue;
        }
        if (!part2.match(hostnamePartPattern)) {
          var newpart = "";
          for (var j = 0, k = part2.length; j < k; j++) {
            if (part2.charCodeAt(j) > 127) {
              newpart += "x";
            } else {
              newpart += part2[j];
            }
          }
          if (!newpart.match(hostnamePartPattern)) {
            var validParts = hostparts.slice(0, i2);
            var notHost = hostparts.slice(i2 + 1);
            var bit = part2.match(hostnamePartStart);
            if (bit) {
              validParts.push(bit[1]);
              notHost.unshift(bit[2]);
            }
            if (notHost.length) {
              rest = notHost.join(".") + rest;
            }
            this.hostname = validParts.join(".");
            break;
          }
        }
      }
    }
    if (this.hostname.length > hostnameMaxLen) {
      this.hostname = "";
    }
    if (ipv6Hostname) {
      this.hostname = this.hostname.substr(1, this.hostname.length - 2);
    }
  }
  var hash2 = rest.indexOf("#");
  if (hash2 !== -1) {
    this.hash = rest.substr(hash2);
    rest = rest.slice(0, hash2);
  }
  var qm = rest.indexOf("?");
  if (qm !== -1) {
    this.search = rest.substr(qm);
    rest = rest.slice(0, qm);
  }
  if (rest) {
    this.pathname = rest;
  }
  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {
    this.pathname = "";
  }
  return this;
};
Url.prototype.parseHost = function(host) {
  var port = portPattern.exec(host);
  if (port) {
    port = port[0];
    if (port !== ":") {
      this.port = port.substr(1);
    }
    host = host.substr(0, host.length - port.length);
  }
  if (host) {
    this.hostname = host;
  }
};
var parse$2 = urlParse;
mdurl$1.encode = encode_1;
mdurl$1.decode = decode_1;
mdurl$1.format = format;
mdurl$1.parse = parse$2;
var uc_micro = {};
var regex$3;
var hasRequiredRegex$3;
function requireRegex$3() {
  if (hasRequiredRegex$3)
    return regex$3;
  hasRequiredRegex$3 = 1;
  regex$3 = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
  return regex$3;
}
var regex$2;
var hasRequiredRegex$2;
function requireRegex$2() {
  if (hasRequiredRegex$2)
    return regex$2;
  hasRequiredRegex$2 = 1;
  regex$2 = /[\0-\x1F\x7F-\x9F]/;
  return regex$2;
}
var regex$1;
var hasRequiredRegex$1;
function requireRegex$1() {
  if (hasRequiredRegex$1)
    return regex$1;
  hasRequiredRegex$1 = 1;
  regex$1 = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/;
  return regex$1;
}
var regex;
var hasRequiredRegex;
function requireRegex() {
  if (hasRequiredRegex)
    return regex;
  hasRequiredRegex = 1;
  regex = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;
  return regex;
}
var hasRequiredUc_micro;
function requireUc_micro() {
  if (hasRequiredUc_micro)
    return uc_micro;
  hasRequiredUc_micro = 1;
  uc_micro.Any = requireRegex$3();
  uc_micro.Cc = requireRegex$2();
  uc_micro.Cf = requireRegex$1();
  uc_micro.P = regex$4;
  uc_micro.Z = requireRegex();
  return uc_micro;
}
(function(exports) {
  function _class2(obj) {
    return Object.prototype.toString.call(obj);
  }
  function isString2(obj) {
    return _class2(obj) === "[object String]";
  }
  var _hasOwnProperty = Object.prototype.hasOwnProperty;
  function has2(object, key) {
    return _hasOwnProperty.call(object, key);
  }
  function assign2(obj) {
    var sources = Array.prototype.slice.call(arguments, 1);
    sources.forEach(function(source) {
      if (!source) {
        return;
      }
      if (typeof source !== "object") {
        throw new TypeError(source + "must be object");
      }
      Object.keys(source).forEach(function(key) {
        obj[key] = source[key];
      });
    });
    return obj;
  }
  function arrayReplaceAt2(src, pos, newElements) {
    return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));
  }
  function isValidEntityCode2(c2) {
    if (c2 >= 55296 && c2 <= 57343) {
      return false;
    }
    if (c2 >= 64976 && c2 <= 65007) {
      return false;
    }
    if ((c2 & 65535) === 65535 || (c2 & 65535) === 65534) {
      return false;
    }
    if (c2 >= 0 && c2 <= 8) {
      return false;
    }
    if (c2 === 11) {
      return false;
    }
    if (c2 >= 14 && c2 <= 31) {
      return false;
    }
    if (c2 >= 127 && c2 <= 159) {
      return false;
    }
    if (c2 > 1114111) {
      return false;
    }
    return true;
  }
  function fromCodePoint2(c2) {
    if (c2 > 65535) {
      c2 -= 65536;
      var surrogate1 = 55296 + (c2 >> 10), surrogate2 = 56320 + (c2 & 1023);
      return String.fromCharCode(surrogate1, surrogate2);
    }
    return String.fromCharCode(c2);
  }
  var UNESCAPE_MD_RE = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g;
  var ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;
  var UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + "|" + ENTITY_RE.source, "gi");
  var DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;
  var entities2 = entitiesExports;
  function replaceEntityPattern(match3, name2) {
    var code3 = 0;
    if (has2(entities2, name2)) {
      return entities2[name2];
    }
    if (name2.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name2)) {
      code3 = name2[1].toLowerCase() === "x" ? parseInt(name2.slice(2), 16) : parseInt(name2.slice(1), 10);
      if (isValidEntityCode2(code3)) {
        return fromCodePoint2(code3);
      }
    }
    return match3;
  }
  function unescapeMd(str) {
    if (str.indexOf("\\") < 0) {
      return str;
    }
    return str.replace(UNESCAPE_MD_RE, "$1");
  }
  function unescapeAll2(str) {
    if (str.indexOf("\\") < 0 && str.indexOf("&") < 0) {
      return str;
    }
    return str.replace(UNESCAPE_ALL_RE, function(match3, escaped, entity3) {
      if (escaped) {
        return escaped;
      }
      return replaceEntityPattern(match3, entity3);
    });
  }
  var HTML_ESCAPE_TEST_RE = /[&<>"]/;
  var HTML_ESCAPE_REPLACE_RE = /[&<>"]/g;
  var HTML_REPLACEMENTS = {
    "&": "&amp;",
    "<": "&lt;",
    ">": "&gt;",
    '"': "&quot;"
  };
  function replaceUnsafeChar(ch) {
    return HTML_REPLACEMENTS[ch];
  }
  function escapeHtml2(str) {
    if (HTML_ESCAPE_TEST_RE.test(str)) {
      return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);
    }
    return str;
  }
  var REGEXP_ESCAPE_RE = /[.?*+^$[\]\\(){}|-]/g;
  function escapeRE2(str) {
    return str.replace(REGEXP_ESCAPE_RE, "\\$&");
  }
  function isSpace2(code3) {
    switch (code3) {
      case 9:
      case 32:
        return true;
    }
    return false;
  }
  function isWhiteSpace2(code3) {
    if (code3 >= 8192 && code3 <= 8202) {
      return true;
    }
    switch (code3) {
      case 9:
      case 10:
      case 11:
      case 12:
      case 13:
      case 32:
      case 160:
      case 5760:
      case 8239:
      case 8287:
      case 12288:
        return true;
    }
    return false;
  }
  var UNICODE_PUNCT_RE = regex$4;
  function isPunctChar2(ch) {
    return UNICODE_PUNCT_RE.test(ch);
  }
  function isMdAsciiPunct2(ch) {
    switch (ch) {
      case 33:
      case 34:
      case 35:
      case 36:
      case 37:
      case 38:
      case 39:
      case 40:
      case 41:
      case 42:
      case 43:
      case 44:
      case 45:
      case 46:
      case 47:
      case 58:
      case 59:
      case 60:
      case 61:
      case 62:
      case 63:
      case 64:
      case 91:
      case 92:
      case 93:
      case 94:
      case 95:
      case 96:
      case 123:
      case 124:
      case 125:
      case 126:
        return true;
      default:
        return false;
    }
  }
  function normalizeReference2(str) {
    str = str.trim().replace(/\s+/g, " ");
    if ("ẞ".toLowerCase() === "Ṿ") {
      str = str.replace(/ẞ/g, "ß");
    }
    return str.toLowerCase().toUpperCase();
  }
  exports.lib = {};
  exports.lib.mdurl = mdurl$1;
  exports.lib.ucmicro = requireUc_micro();
  exports.assign = assign2;
  exports.isString = isString2;
  exports.has = has2;
  exports.unescapeMd = unescapeMd;
  exports.unescapeAll = unescapeAll2;
  exports.isValidEntityCode = isValidEntityCode2;
  exports.fromCodePoint = fromCodePoint2;
  exports.escapeHtml = escapeHtml2;
  exports.arrayReplaceAt = arrayReplaceAt2;
  exports.isSpace = isSpace2;
  exports.isWhiteSpace = isWhiteSpace2;
  exports.isMdAsciiPunct = isMdAsciiPunct2;
  exports.isPunctChar = isPunctChar2;
  exports.escapeRE = escapeRE2;
  exports.normalizeReference = normalizeReference2;
})(utils$1);
var helpers$1 = {};
var parse_link_label = function parseLinkLabel(state, start, disableNested) {
  var level, found, marker2, prevPos, labelEnd = -1, max2 = state.posMax, oldPos = state.pos;
  state.pos = start + 1;
  level = 1;
  while (state.pos < max2) {
    marker2 = state.src.charCodeAt(state.pos);
    if (marker2 === 93) {
      level--;
      if (level === 0) {
        found = true;
        break;
      }
    }
    prevPos = state.pos;
    state.md.inline.skipToken(state);
    if (marker2 === 91) {
      if (prevPos === state.pos - 1) {
        level++;
      } else if (disableNested) {
        state.pos = oldPos;
        return -1;
      }
    }
  }
  if (found) {
    labelEnd = state.pos;
  }
  state.pos = oldPos;
  return labelEnd;
};
var unescapeAll$2 = utils$1.unescapeAll;
var parse_link_destination = function parseLinkDestination(str, pos, max2) {
  var code3, level, lines = 0, start = pos, result = {
    ok: false,
    pos: 0,
    lines: 0,
    str: ""
  };
  if (str.charCodeAt(pos) === 60) {
    pos++;
    while (pos < max2) {
      code3 = str.charCodeAt(pos);
      if (code3 === 10) {
        return result;
      }
      if (code3 === 60) {
        return result;
      }
      if (code3 === 62) {
        result.pos = pos + 1;
        result.str = unescapeAll$2(str.slice(start + 1, pos));
        result.ok = true;
        return result;
      }
      if (code3 === 92 && pos + 1 < max2) {
        pos += 2;
        continue;
      }
      pos++;
    }
    return result;
  }
  level = 0;
  while (pos < max2) {
    code3 = str.charCodeAt(pos);
    if (code3 === 32) {
      break;
    }
    if (code3 < 32 || code3 === 127) {
      break;
    }
    if (code3 === 92 && pos + 1 < max2) {
      if (str.charCodeAt(pos + 1) === 32) {
        break;
      }
      pos += 2;
      continue;
    }
    if (code3 === 40) {
      level++;
      if (level > 32) {
        return result;
      }
    }
    if (code3 === 41) {
      if (level === 0) {
        break;
      }
      level--;
    }
    pos++;
  }
  if (start === pos) {
    return result;
  }
  if (level !== 0) {
    return result;
  }
  result.str = unescapeAll$2(str.slice(start, pos));
  result.lines = lines;
  result.pos = pos;
  result.ok = true;
  return result;
};
var unescapeAll$1 = utils$1.unescapeAll;
var parse_link_title = function parseLinkTitle(str, pos, max2) {
  var code3, marker2, lines = 0, start = pos, result = {
    ok: false,
    pos: 0,
    lines: 0,
    str: ""
  };
  if (pos >= max2) {
    return result;
  }
  marker2 = str.charCodeAt(pos);
  if (marker2 !== 34 && marker2 !== 39 && marker2 !== 40) {
    return result;
  }
  pos++;
  if (marker2 === 40) {
    marker2 = 41;
  }
  while (pos < max2) {
    code3 = str.charCodeAt(pos);
    if (code3 === marker2) {
      result.pos = pos + 1;
      result.lines = lines;
      result.str = unescapeAll$1(str.slice(start + 1, pos));
      result.ok = true;
      return result;
    } else if (code3 === 40 && marker2 === 41) {
      return result;
    } else if (code3 === 10) {
      lines++;
    } else if (code3 === 92 && pos + 1 < max2) {
      pos++;
      if (str.charCodeAt(pos) === 10) {
        lines++;
      }
    }
    pos++;
  }
  return result;
};
helpers$1.parseLinkLabel = parse_link_label;
helpers$1.parseLinkDestination = parse_link_destination;
helpers$1.parseLinkTitle = parse_link_title;
var assign$2 = utils$1.assign;
var unescapeAll = utils$1.unescapeAll;
var escapeHtml$1 = utils$1.escapeHtml;
var default_rules = {};
default_rules.code_inline = function(tokens, idx, options2, env, slf) {
  var token2 = tokens[idx];
  return "<code" + slf.renderAttrs(token2) + ">" + escapeHtml$1(tokens[idx].content) + "</code>";
};
default_rules.code_block = function(tokens, idx, options2, env, slf) {
  var token2 = tokens[idx];
  return "<pre" + slf.renderAttrs(token2) + "><code>" + escapeHtml$1(tokens[idx].content) + "</code></pre>\n";
};
default_rules.fence = function(tokens, idx, options2, env, slf) {
  var token2 = tokens[idx], info = token2.info ? unescapeAll(token2.info).trim() : "", langName = "", langAttrs = "", highlighted, i2, arr, tmpAttrs, tmpToken;
  if (info) {
    arr = info.split(/(\s+)/g);
    langName = arr[0];
    langAttrs = arr.slice(2).join("");
  }
  if (options2.highlight) {
    highlighted = options2.highlight(token2.content, langName, langAttrs) || escapeHtml$1(token2.content);
  } else {
    highlighted = escapeHtml$1(token2.content);
  }
  if (highlighted.indexOf("<pre") === 0) {
    return highlighted + "\n";
  }
  if (info) {
    i2 = token2.attrIndex("class");
    tmpAttrs = token2.attrs ? token2.attrs.slice() : [];
    if (i2 < 0) {
      tmpAttrs.push(["class", options2.langPrefix + langName]);
    } else {
      tmpAttrs[i2] = tmpAttrs[i2].slice();
      tmpAttrs[i2][1] += " " + options2.langPrefix + langName;
    }
    tmpToken = {
      attrs: tmpAttrs
    };
    return "<pre><code" + slf.renderAttrs(tmpToken) + ">" + highlighted + "</code></pre>\n";
  }
  return "<pre><code" + slf.renderAttrs(token2) + ">" + highlighted + "</code></pre>\n";
};
default_rules.image = function(tokens, idx, options2, env, slf) {
  var token2 = tokens[idx];
  token2.attrs[token2.attrIndex("alt")][1] = slf.renderInlineAsText(token2.children, options2, env);
  return slf.renderToken(tokens, idx, options2);
};
default_rules.hardbreak = function(tokens, idx, options2) {
  return options2.xhtmlOut ? "<br />\n" : "<br>\n";
};
default_rules.softbreak = function(tokens, idx, options2) {
  return options2.breaks ? options2.xhtmlOut ? "<br />\n" : "<br>\n" : "\n";
};
default_rules.text = function(tokens, idx) {
  return escapeHtml$1(tokens[idx].content);
};
default_rules.html_block = function(tokens, idx) {
  return tokens[idx].content;
};
default_rules.html_inline = function(tokens, idx) {
  return tokens[idx].content;
};
function Renderer$1() {
  this.rules = assign$2({}, default_rules);
}
Renderer$1.prototype.renderAttrs = function renderAttrs(token2) {
  var i2, l2, result;
  if (!token2.attrs) {
    return "";
  }
  result = "";
  for (i2 = 0, l2 = token2.attrs.length; i2 < l2; i2++) {
    result += " " + escapeHtml$1(token2.attrs[i2][0]) + '="' + escapeHtml$1(token2.attrs[i2][1]) + '"';
  }
  return result;
};
Renderer$1.prototype.renderToken = function renderToken(tokens, idx, options2) {
  var nextToken, result = "", needLf = false, token2 = tokens[idx];
  if (token2.hidden) {
    return "";
  }
  if (token2.block && token2.nesting !== -1 && idx && tokens[idx - 1].hidden) {
    result += "\n";
  }
  result += (token2.nesting === -1 ? "</" : "<") + token2.tag;
  result += this.renderAttrs(token2);
  if (token2.nesting === 0 && options2.xhtmlOut) {
    result += " /";
  }
  if (token2.block) {
    needLf = true;
    if (token2.nesting === 1) {
      if (idx + 1 < tokens.length) {
        nextToken = tokens[idx + 1];
        if (nextToken.type === "inline" || nextToken.hidden) {
          needLf = false;
        } else if (nextToken.nesting === -1 && nextToken.tag === token2.tag) {
          needLf = false;
        }
      }
    }
  }
  result += needLf ? ">\n" : ">";
  return result;
};
Renderer$1.prototype.renderInline = function(tokens, options2, env) {
  var type2, result = "", rules = this.rules;
  for (var i2 = 0, len = tokens.length; i2 < len; i2++) {
    type2 = tokens[i2].type;
    if (typeof rules[type2] !== "undefined") {
      result += rules[type2](tokens, i2, options2, env, this);
    } else {
      result += this.renderToken(tokens, i2, options2);
    }
  }
  return result;
};
Renderer$1.prototype.renderInlineAsText = function(tokens, options2, env) {
  var result = "";
  for (var i2 = 0, len = tokens.length; i2 < len; i2++) {
    if (tokens[i2].type === "text") {
      result += tokens[i2].content;
    } else if (tokens[i2].type === "image") {
      result += this.renderInlineAsText(tokens[i2].children, options2, env);
    } else if (tokens[i2].type === "softbreak") {
      result += "\n";
    }
  }
  return result;
};
Renderer$1.prototype.render = function(tokens, options2, env) {
  var i2, len, type2, result = "", rules = this.rules;
  for (i2 = 0, len = tokens.length; i2 < len; i2++) {
    type2 = tokens[i2].type;
    if (type2 === "inline") {
      result += this.renderInline(tokens[i2].children, options2, env);
    } else if (typeof rules[type2] !== "undefined") {
      result += rules[tokens[i2].type](tokens, i2, options2, env, this);
    } else {
      result += this.renderToken(tokens, i2, options2, env);
    }
  }
  return result;
};
var renderer = Renderer$1;
function Ruler$3() {
  this.__rules__ = [];
  this.__cache__ = null;
}
Ruler$3.prototype.__find__ = function(name2) {
  for (var i2 = 0; i2 < this.__rules__.length; i2++) {
    if (this.__rules__[i2].name === name2) {
      return i2;
    }
  }
  return -1;
};
Ruler$3.prototype.__compile__ = function() {
  var self2 = this;
  var chains = [""];
  self2.__rules__.forEach(function(rule) {
    if (!rule.enabled) {
      return;
    }
    rule.alt.forEach(function(altName) {
      if (chains.indexOf(altName) < 0) {
        chains.push(altName);
      }
    });
  });
  self2.__cache__ = {};
  chains.forEach(function(chain) {
    self2.__cache__[chain] = [];
    self2.__rules__.forEach(function(rule) {
      if (!rule.enabled) {
        return;
      }
      if (chain && rule.alt.indexOf(chain) < 0) {
        return;
      }
      self2.__cache__[chain].push(rule.fn);
    });
  });
};
Ruler$3.prototype.at = function(name2, fn, options2) {
  var index2 = this.__find__(name2);
  var opt = options2 || {};
  if (index2 === -1) {
    throw new Error("Parser rule not found: " + name2);
  }
  this.__rules__[index2].fn = fn;
  this.__rules__[index2].alt = opt.alt || [];
  this.__cache__ = null;
};
Ruler$3.prototype.before = function(beforeName, ruleName, fn, options2) {
  var index2 = this.__find__(beforeName);
  var opt = options2 || {};
  if (index2 === -1) {
    throw new Error("Parser rule not found: " + beforeName);
  }
  this.__rules__.splice(index2, 0, {
    name: ruleName,
    enabled: true,
    fn,
    alt: opt.alt || []
  });
  this.__cache__ = null;
};
Ruler$3.prototype.after = function(afterName, ruleName, fn, options2) {
  var index2 = this.__find__(afterName);
  var opt = options2 || {};
  if (index2 === -1) {
    throw new Error("Parser rule not found: " + afterName);
  }
  this.__rules__.splice(index2 + 1, 0, {
    name: ruleName,
    enabled: true,
    fn,
    alt: opt.alt || []
  });
  this.__cache__ = null;
};
Ruler$3.prototype.push = function(ruleName, fn, options2) {
  var opt = options2 || {};
  this.__rules__.push({
    name: ruleName,
    enabled: true,
    fn,
    alt: opt.alt || []
  });
  this.__cache__ = null;
};
Ruler$3.prototype.enable = function(list3, ignoreInvalid) {
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  var result = [];
  list3.forEach(function(name2) {
    var idx = this.__find__(name2);
    if (idx < 0) {
      if (ignoreInvalid) {
        return;
      }
      throw new Error("Rules manager: invalid rule name " + name2);
    }
    this.__rules__[idx].enabled = true;
    result.push(name2);
  }, this);
  this.__cache__ = null;
  return result;
};
Ruler$3.prototype.enableOnly = function(list3, ignoreInvalid) {
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  this.__rules__.forEach(function(rule) {
    rule.enabled = false;
  });
  this.enable(list3, ignoreInvalid);
};
Ruler$3.prototype.disable = function(list3, ignoreInvalid) {
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  var result = [];
  list3.forEach(function(name2) {
    var idx = this.__find__(name2);
    if (idx < 0) {
      if (ignoreInvalid) {
        return;
      }
      throw new Error("Rules manager: invalid rule name " + name2);
    }
    this.__rules__[idx].enabled = false;
    result.push(name2);
  }, this);
  this.__cache__ = null;
  return result;
};
Ruler$3.prototype.getRules = function(chainName) {
  if (this.__cache__ === null) {
    this.__compile__();
  }
  return this.__cache__[chainName] || [];
};
var ruler = Ruler$3;
var NEWLINES_RE = /\r\n?|\n/g;
var NULL_RE = /\0/g;
var normalize = function normalize2(state) {
  var str;
  str = state.src.replace(NEWLINES_RE, "\n");
  str = str.replace(NULL_RE, "�");
  state.src = str;
};
var block = function block2(state) {
  var token2;
  if (state.inlineMode) {
    token2 = new state.Token("inline", "", 0);
    token2.content = state.src;
    token2.map = [0, 1];
    token2.children = [];
    state.tokens.push(token2);
  } else {
    state.md.block.parse(state.src, state.md, state.env, state.tokens);
  }
};
var inline = function inline2(state) {
  var tokens = state.tokens, tok, i2, l2;
  for (i2 = 0, l2 = tokens.length; i2 < l2; i2++) {
    tok = tokens[i2];
    if (tok.type === "inline") {
      state.md.inline.parse(tok.content, state.md, state.env, tok.children);
    }
  }
};
var arrayReplaceAt = utils$1.arrayReplaceAt;
function isLinkOpen$1(str) {
  return /^<a[>\s]/i.test(str);
}
function isLinkClose$1(str) {
  return /^<\/a\s*>/i.test(str);
}
var linkify$1 = function linkify(state) {
  var i2, j, l2, tokens, token2, currentToken, nodes, ln, text3, pos, lastPos, level, htmlLinkLevel, url2, fullUrl, urlText, blockTokens = state.tokens, links;
  if (!state.md.options.linkify) {
    return;
  }
  for (j = 0, l2 = blockTokens.length; j < l2; j++) {
    if (blockTokens[j].type !== "inline" || !state.md.linkify.pretest(blockTokens[j].content)) {
      continue;
    }
    tokens = blockTokens[j].children;
    htmlLinkLevel = 0;
    for (i2 = tokens.length - 1; i2 >= 0; i2--) {
      currentToken = tokens[i2];
      if (currentToken.type === "link_close") {
        i2--;
        while (tokens[i2].level !== currentToken.level && tokens[i2].type !== "link_open") {
          i2--;
        }
        continue;
      }
      if (currentToken.type === "html_inline") {
        if (isLinkOpen$1(currentToken.content) && htmlLinkLevel > 0) {
          htmlLinkLevel--;
        }
        if (isLinkClose$1(currentToken.content)) {
          htmlLinkLevel++;
        }
      }
      if (htmlLinkLevel > 0) {
        continue;
      }
      if (currentToken.type === "text" && state.md.linkify.test(currentToken.content)) {
        text3 = currentToken.content;
        links = state.md.linkify.match(text3);
        nodes = [];
        level = currentToken.level;
        lastPos = 0;
        if (links.length > 0 && links[0].index === 0 && i2 > 0 && tokens[i2 - 1].type === "text_special") {
          links = links.slice(1);
        }
        for (ln = 0; ln < links.length; ln++) {
          url2 = links[ln].url;
          fullUrl = state.md.normalizeLink(url2);
          if (!state.md.validateLink(fullUrl)) {
            continue;
          }
          urlText = links[ln].text;
          if (!links[ln].schema) {
            urlText = state.md.normalizeLinkText("http://" + urlText).replace(/^http:\/\//, "");
          } else if (links[ln].schema === "mailto:" && !/^mailto:/i.test(urlText)) {
            urlText = state.md.normalizeLinkText("mailto:" + urlText).replace(/^mailto:/, "");
          } else {
            urlText = state.md.normalizeLinkText(urlText);
          }
          pos = links[ln].index;
          if (pos > lastPos) {
            token2 = new state.Token("text", "", 0);
            token2.content = text3.slice(lastPos, pos);
            token2.level = level;
            nodes.push(token2);
          }
          token2 = new state.Token("link_open", "a", 1);
          token2.attrs = [["href", fullUrl]];
          token2.level = level++;
          token2.markup = "linkify";
          token2.info = "auto";
          nodes.push(token2);
          token2 = new state.Token("text", "", 0);
          token2.content = urlText;
          token2.level = level;
          nodes.push(token2);
          token2 = new state.Token("link_close", "a", -1);
          token2.level = --level;
          token2.markup = "linkify";
          token2.info = "auto";
          nodes.push(token2);
          lastPos = links[ln].lastIndex;
        }
        if (lastPos < text3.length) {
          token2 = new state.Token("text", "", 0);
          token2.content = text3.slice(lastPos);
          token2.level = level;
          nodes.push(token2);
        }
        blockTokens[j].children = tokens = arrayReplaceAt(tokens, i2, nodes);
      }
    }
  }
};
var RARE_RE = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/;
var SCOPED_ABBR_TEST_RE = /\((c|tm|r)\)/i;
var SCOPED_ABBR_RE = /\((c|tm|r)\)/ig;
var SCOPED_ABBR = {
  c: "©",
  r: "®",
  tm: "™"
};
function replaceFn(match3, name2) {
  return SCOPED_ABBR[name2.toLowerCase()];
}
function replace_scoped(inlineTokens) {
  var i2, token2, inside_autolink = 0;
  for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) {
    token2 = inlineTokens[i2];
    if (token2.type === "text" && !inside_autolink) {
      token2.content = token2.content.replace(SCOPED_ABBR_RE, replaceFn);
    }
    if (token2.type === "link_open" && token2.info === "auto") {
      inside_autolink--;
    }
    if (token2.type === "link_close" && token2.info === "auto") {
      inside_autolink++;
    }
  }
}
function replace_rare(inlineTokens) {
  var i2, token2, inside_autolink = 0;
  for (i2 = inlineTokens.length - 1; i2 >= 0; i2--) {
    token2 = inlineTokens[i2];
    if (token2.type === "text" && !inside_autolink) {
      if (RARE_RE.test(token2.content)) {
        token2.content = token2.content.replace(/\+-/g, "±").replace(/\.{2,}/g, "…").replace(/([?!])…/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/mg, "$1—").replace(/(^|\s)--(?=\s|$)/mg, "$1–").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, "$1–");
      }
    }
    if (token2.type === "link_open" && token2.info === "auto") {
      inside_autolink--;
    }
    if (token2.type === "link_close" && token2.info === "auto") {
      inside_autolink++;
    }
  }
}
var replacements = function replace(state) {
  var blkIdx;
  if (!state.md.options.typographer) {
    return;
  }
  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
    if (state.tokens[blkIdx].type !== "inline") {
      continue;
    }
    if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {
      replace_scoped(state.tokens[blkIdx].children);
    }
    if (RARE_RE.test(state.tokens[blkIdx].content)) {
      replace_rare(state.tokens[blkIdx].children);
    }
  }
};
var isWhiteSpace$2 = utils$1.isWhiteSpace;
var isPunctChar$1 = utils$1.isPunctChar;
var isMdAsciiPunct$1 = utils$1.isMdAsciiPunct;
var QUOTE_TEST_RE = /['"]/;
var QUOTE_RE = /['"]/g;
var APOSTROPHE = "’";
function replaceAt(str, index2, ch) {
  return str.slice(0, index2) + ch + str.slice(index2 + 1);
}
function process_inlines(tokens, state) {
  var i2, token2, text3, t2, pos, max2, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;
  stack = [];
  for (i2 = 0; i2 < tokens.length; i2++) {
    token2 = tokens[i2];
    thisLevel = tokens[i2].level;
    for (j = stack.length - 1; j >= 0; j--) {
      if (stack[j].level <= thisLevel) {
        break;
      }
    }
    stack.length = j + 1;
    if (token2.type !== "text") {
      continue;
    }
    text3 = token2.content;
    pos = 0;
    max2 = text3.length;
    OUTER:
      while (pos < max2) {
        QUOTE_RE.lastIndex = pos;
        t2 = QUOTE_RE.exec(text3);
        if (!t2) {
          break;
        }
        canOpen = canClose = true;
        pos = t2.index + 1;
        isSingle = t2[0] === "'";
        lastChar = 32;
        if (t2.index - 1 >= 0) {
          lastChar = text3.charCodeAt(t2.index - 1);
        } else {
          for (j = i2 - 1; j >= 0; j--) {
            if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak")
              break;
            if (!tokens[j].content)
              continue;
            lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);
            break;
          }
        }
        nextChar = 32;
        if (pos < max2) {
          nextChar = text3.charCodeAt(pos);
        } else {
          for (j = i2 + 1; j < tokens.length; j++) {
            if (tokens[j].type === "softbreak" || tokens[j].type === "hardbreak")
              break;
            if (!tokens[j].content)
              continue;
            nextChar = tokens[j].content.charCodeAt(0);
            break;
          }
        }
        isLastPunctChar = isMdAsciiPunct$1(lastChar) || isPunctChar$1(String.fromCharCode(lastChar));
        isNextPunctChar = isMdAsciiPunct$1(nextChar) || isPunctChar$1(String.fromCharCode(nextChar));
        isLastWhiteSpace = isWhiteSpace$2(lastChar);
        isNextWhiteSpace = isWhiteSpace$2(nextChar);
        if (isNextWhiteSpace) {
          canOpen = false;
        } else if (isNextPunctChar) {
          if (!(isLastWhiteSpace || isLastPunctChar)) {
            canOpen = false;
          }
        }
        if (isLastWhiteSpace) {
          canClose = false;
        } else if (isLastPunctChar) {
          if (!(isNextWhiteSpace || isNextPunctChar)) {
            canClose = false;
          }
        }
        if (nextChar === 34 && t2[0] === '"') {
          if (lastChar >= 48 && lastChar <= 57) {
            canClose = canOpen = false;
          }
        }
        if (canOpen && canClose) {
          canOpen = isLastPunctChar;
          canClose = isNextPunctChar;
        }
        if (!canOpen && !canClose) {
          if (isSingle) {
            token2.content = replaceAt(token2.content, t2.index, APOSTROPHE);
          }
          continue;
        }
        if (canClose) {
          for (j = stack.length - 1; j >= 0; j--) {
            item = stack[j];
            if (stack[j].level < thisLevel) {
              break;
            }
            if (item.single === isSingle && stack[j].level === thisLevel) {
              item = stack[j];
              if (isSingle) {
                openQuote = state.md.options.quotes[2];
                closeQuote = state.md.options.quotes[3];
              } else {
                openQuote = state.md.options.quotes[0];
                closeQuote = state.md.options.quotes[1];
              }
              token2.content = replaceAt(token2.content, t2.index, closeQuote);
              tokens[item.token].content = replaceAt(
                tokens[item.token].content,
                item.pos,
                openQuote
              );
              pos += closeQuote.length - 1;
              if (item.token === i2) {
                pos += openQuote.length - 1;
              }
              text3 = token2.content;
              max2 = text3.length;
              stack.length = j;
              continue OUTER;
            }
          }
        }
        if (canOpen) {
          stack.push({
            token: i2,
            pos: t2.index,
            single: isSingle,
            level: thisLevel
          });
        } else if (canClose && isSingle) {
          token2.content = replaceAt(token2.content, t2.index, APOSTROPHE);
        }
      }
  }
}
var smartquotes = function smartquotes2(state) {
  var blkIdx;
  if (!state.md.options.typographer) {
    return;
  }
  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {
    if (state.tokens[blkIdx].type !== "inline" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {
      continue;
    }
    process_inlines(state.tokens[blkIdx].children, state);
  }
};
var text_join = function text_join2(state) {
  var j, l2, tokens, curr, max2, last, blockTokens = state.tokens;
  for (j = 0, l2 = blockTokens.length; j < l2; j++) {
    if (blockTokens[j].type !== "inline")
      continue;
    tokens = blockTokens[j].children;
    max2 = tokens.length;
    for (curr = 0; curr < max2; curr++) {
      if (tokens[curr].type === "text_special") {
        tokens[curr].type = "text";
      }
    }
    for (curr = last = 0; curr < max2; curr++) {
      if (tokens[curr].type === "text" && curr + 1 < max2 && tokens[curr + 1].type === "text") {
        tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
      } else {
        if (curr !== last) {
          tokens[last] = tokens[curr];
        }
        last++;
      }
    }
    if (curr !== last) {
      tokens.length = last;
    }
  }
};
function Token$3(type2, tag, nesting) {
  this.type = type2;
  this.tag = tag;
  this.attrs = null;
  this.map = null;
  this.nesting = nesting;
  this.level = 0;
  this.children = null;
  this.content = "";
  this.markup = "";
  this.info = "";
  this.meta = null;
  this.block = false;
  this.hidden = false;
}
Token$3.prototype.attrIndex = function attrIndex(name2) {
  var attrs, i2, len;
  if (!this.attrs) {
    return -1;
  }
  attrs = this.attrs;
  for (i2 = 0, len = attrs.length; i2 < len; i2++) {
    if (attrs[i2][0] === name2) {
      return i2;
    }
  }
  return -1;
};
Token$3.prototype.attrPush = function attrPush(attrData) {
  if (this.attrs) {
    this.attrs.push(attrData);
  } else {
    this.attrs = [attrData];
  }
};
Token$3.prototype.attrSet = function attrSet(name2, value) {
  var idx = this.attrIndex(name2), attrData = [name2, value];
  if (idx < 0) {
    this.attrPush(attrData);
  } else {
    this.attrs[idx] = attrData;
  }
};
Token$3.prototype.attrGet = function attrGet(name2) {
  var idx = this.attrIndex(name2), value = null;
  if (idx >= 0) {
    value = this.attrs[idx][1];
  }
  return value;
};
Token$3.prototype.attrJoin = function attrJoin(name2, value) {
  var idx = this.attrIndex(name2);
  if (idx < 0) {
    this.attrPush([name2, value]);
  } else {
    this.attrs[idx][1] = this.attrs[idx][1] + " " + value;
  }
};
var token = Token$3;
var Token$2 = token;
function StateCore(src, md, env) {
  this.src = src;
  this.env = env;
  this.tokens = [];
  this.inlineMode = false;
  this.md = md;
}
StateCore.prototype.Token = Token$2;
var state_core = StateCore;
var Ruler$2 = ruler;
var _rules$2 = [
  ["normalize", normalize],
  ["block", block],
  ["inline", inline],
  ["linkify", linkify$1],
  ["replacements", replacements],
  ["smartquotes", smartquotes],
  // `text_join` finds `text_special` tokens (for escape sequences)
  // and joins them with the rest of the text
  ["text_join", text_join]
];
function Core() {
  this.ruler = new Ruler$2();
  for (var i2 = 0; i2 < _rules$2.length; i2++) {
    this.ruler.push(_rules$2[i2][0], _rules$2[i2][1]);
  }
}
Core.prototype.process = function(state) {
  var i2, l2, rules;
  rules = this.ruler.getRules("");
  for (i2 = 0, l2 = rules.length; i2 < l2; i2++) {
    rules[i2](state);
  }
};
Core.prototype.State = state_core;
var parser_core = Core;
var isSpace$a = utils$1.isSpace;
function getLine(state, line) {
  var pos = state.bMarks[line] + state.tShift[line], max2 = state.eMarks[line];
  return state.src.slice(pos, max2);
}
function escapedSplit(str) {
  var result = [], pos = 0, max2 = str.length, ch, isEscaped = false, lastPos = 0, current = "";
  ch = str.charCodeAt(pos);
  while (pos < max2) {
    if (ch === 124) {
      if (!isEscaped) {
        result.push(current + str.substring(lastPos, pos));
        current = "";
        lastPos = pos + 1;
      } else {
        current += str.substring(lastPos, pos - 1);
        lastPos = pos;
      }
    }
    isEscaped = ch === 92;
    pos++;
    ch = str.charCodeAt(pos);
  }
  result.push(current + str.substring(lastPos));
  return result;
}
var table = function table2(state, startLine, endLine, silent) {
  var ch, lineText, pos, i2, l2, nextLine, columns, columnCount, token2, aligns, t2, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh;
  if (startLine + 2 > endLine) {
    return false;
  }
  nextLine = startLine + 1;
  if (state.sCount[nextLine] < state.blkIndent) {
    return false;
  }
  if (state.sCount[nextLine] - state.blkIndent >= 4) {
    return false;
  }
  pos = state.bMarks[nextLine] + state.tShift[nextLine];
  if (pos >= state.eMarks[nextLine]) {
    return false;
  }
  firstCh = state.src.charCodeAt(pos++);
  if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) {
    return false;
  }
  if (pos >= state.eMarks[nextLine]) {
    return false;
  }
  secondCh = state.src.charCodeAt(pos++);
  if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace$a(secondCh)) {
    return false;
  }
  if (firstCh === 45 && isSpace$a(secondCh)) {
    return false;
  }
  while (pos < state.eMarks[nextLine]) {
    ch = state.src.charCodeAt(pos);
    if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace$a(ch)) {
      return false;
    }
    pos++;
  }
  lineText = getLine(state, startLine + 1);
  columns = lineText.split("|");
  aligns = [];
  for (i2 = 0; i2 < columns.length; i2++) {
    t2 = columns[i2].trim();
    if (!t2) {
      if (i2 === 0 || i2 === columns.length - 1) {
        continue;
      } else {
        return false;
      }
    }
    if (!/^:?-+:?$/.test(t2)) {
      return false;
    }
    if (t2.charCodeAt(t2.length - 1) === 58) {
      aligns.push(t2.charCodeAt(0) === 58 ? "center" : "right");
    } else if (t2.charCodeAt(0) === 58) {
      aligns.push("left");
    } else {
      aligns.push("");
    }
  }
  lineText = getLine(state, startLine).trim();
  if (lineText.indexOf("|") === -1) {
    return false;
  }
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  columns = escapedSplit(lineText);
  if (columns.length && columns[0] === "")
    columns.shift();
  if (columns.length && columns[columns.length - 1] === "")
    columns.pop();
  columnCount = columns.length;
  if (columnCount === 0 || columnCount !== aligns.length) {
    return false;
  }
  if (silent) {
    return true;
  }
  oldParentType = state.parentType;
  state.parentType = "table";
  terminatorRules = state.md.block.ruler.getRules("blockquote");
  token2 = state.push("table_open", "table", 1);
  token2.map = tableLines = [startLine, 0];
  token2 = state.push("thead_open", "thead", 1);
  token2.map = [startLine, startLine + 1];
  token2 = state.push("tr_open", "tr", 1);
  token2.map = [startLine, startLine + 1];
  for (i2 = 0; i2 < columns.length; i2++) {
    token2 = state.push("th_open", "th", 1);
    if (aligns[i2]) {
      token2.attrs = [["style", "text-align:" + aligns[i2]]];
    }
    token2 = state.push("inline", "", 0);
    token2.content = columns[i2].trim();
    token2.children = [];
    token2 = state.push("th_close", "th", -1);
  }
  token2 = state.push("tr_close", "tr", -1);
  token2 = state.push("thead_close", "thead", -1);
  for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {
    if (state.sCount[nextLine] < state.blkIndent) {
      break;
    }
    terminate = false;
    for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) {
      if (terminatorRules[i2](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
    lineText = getLine(state, nextLine).trim();
    if (!lineText) {
      break;
    }
    if (state.sCount[nextLine] - state.blkIndent >= 4) {
      break;
    }
    columns = escapedSplit(lineText);
    if (columns.length && columns[0] === "")
      columns.shift();
    if (columns.length && columns[columns.length - 1] === "")
      columns.pop();
    if (nextLine === startLine + 2) {
      token2 = state.push("tbody_open", "tbody", 1);
      token2.map = tbodyLines = [startLine + 2, 0];
    }
    token2 = state.push("tr_open", "tr", 1);
    token2.map = [nextLine, nextLine + 1];
    for (i2 = 0; i2 < columnCount; i2++) {
      token2 = state.push("td_open", "td", 1);
      if (aligns[i2]) {
        token2.attrs = [["style", "text-align:" + aligns[i2]]];
      }
      token2 = state.push("inline", "", 0);
      token2.content = columns[i2] ? columns[i2].trim() : "";
      token2.children = [];
      token2 = state.push("td_close", "td", -1);
    }
    token2 = state.push("tr_close", "tr", -1);
  }
  if (tbodyLines) {
    token2 = state.push("tbody_close", "tbody", -1);
    tbodyLines[1] = nextLine;
  }
  token2 = state.push("table_close", "table", -1);
  tableLines[1] = nextLine;
  state.parentType = oldParentType;
  state.line = nextLine;
  return true;
};
var code = function code2(state, startLine, endLine) {
  var nextLine, last, token2;
  if (state.sCount[startLine] - state.blkIndent < 4) {
    return false;
  }
  last = nextLine = startLine + 1;
  while (nextLine < endLine) {
    if (state.isEmpty(nextLine)) {
      nextLine++;
      continue;
    }
    if (state.sCount[nextLine] - state.blkIndent >= 4) {
      nextLine++;
      last = nextLine;
      continue;
    }
    break;
  }
  state.line = last;
  token2 = state.push("code_block", "code", 0);
  token2.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + "\n";
  token2.map = [startLine, state.line];
  return true;
};
var fence = function fence2(state, startLine, endLine, silent) {
  var marker2, len, params2, nextLine, mem, token2, markup, haveEndMarker = false, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (pos + 3 > max2) {
    return false;
  }
  marker2 = state.src.charCodeAt(pos);
  if (marker2 !== 126 && marker2 !== 96) {
    return false;
  }
  mem = pos;
  pos = state.skipChars(pos, marker2);
  len = pos - mem;
  if (len < 3) {
    return false;
  }
  markup = state.src.slice(mem, pos);
  params2 = state.src.slice(pos, max2);
  if (marker2 === 96) {
    if (params2.indexOf(String.fromCharCode(marker2)) >= 0) {
      return false;
    }
  }
  if (silent) {
    return true;
  }
  nextLine = startLine;
  for (; ; ) {
    nextLine++;
    if (nextLine >= endLine) {
      break;
    }
    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];
    max2 = state.eMarks[nextLine];
    if (pos < max2 && state.sCount[nextLine] < state.blkIndent) {
      break;
    }
    if (state.src.charCodeAt(pos) !== marker2) {
      continue;
    }
    if (state.sCount[nextLine] - state.blkIndent >= 4) {
      continue;
    }
    pos = state.skipChars(pos, marker2);
    if (pos - mem < len) {
      continue;
    }
    pos = state.skipSpaces(pos);
    if (pos < max2) {
      continue;
    }
    haveEndMarker = true;
    break;
  }
  len = state.sCount[startLine];
  state.line = nextLine + (haveEndMarker ? 1 : 0);
  token2 = state.push("fence", "code", 0);
  token2.info = params2;
  token2.content = state.getLines(startLine + 1, nextLine, len, true);
  token2.markup = markup;
  token2.map = [startLine, state.line];
  return true;
};
var isSpace$9 = utils$1.isSpace;
var blockquote = function blockquote2(state, startLine, endLine, silent) {
  var adjustTab, ch, i2, initial, l2, lastLineEmpty, lines, nextLine, offset2, oldBMarks, oldBSCount, oldIndent, oldParentType, oldSCount, oldTShift, spaceAfterMarker, terminate, terminatorRules, token2, isOutdented, oldLineMax = state.lineMax, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (state.src.charCodeAt(pos++) !== 62) {
    return false;
  }
  if (silent) {
    return true;
  }
  initial = offset2 = state.sCount[startLine] + 1;
  if (state.src.charCodeAt(pos) === 32) {
    pos++;
    initial++;
    offset2++;
    adjustTab = false;
    spaceAfterMarker = true;
  } else if (state.src.charCodeAt(pos) === 9) {
    spaceAfterMarker = true;
    if ((state.bsCount[startLine] + offset2) % 4 === 3) {
      pos++;
      initial++;
      offset2++;
      adjustTab = false;
    } else {
      adjustTab = true;
    }
  } else {
    spaceAfterMarker = false;
  }
  oldBMarks = [state.bMarks[startLine]];
  state.bMarks[startLine] = pos;
  while (pos < max2) {
    ch = state.src.charCodeAt(pos);
    if (isSpace$9(ch)) {
      if (ch === 9) {
        offset2 += 4 - (offset2 + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;
      } else {
        offset2++;
      }
    } else {
      break;
    }
    pos++;
  }
  oldBSCount = [state.bsCount[startLine]];
  state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);
  lastLineEmpty = pos >= max2;
  oldSCount = [state.sCount[startLine]];
  state.sCount[startLine] = offset2 - initial;
  oldTShift = [state.tShift[startLine]];
  state.tShift[startLine] = pos - state.bMarks[startLine];
  terminatorRules = state.md.block.ruler.getRules("blockquote");
  oldParentType = state.parentType;
  state.parentType = "blockquote";
  for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {
    isOutdented = state.sCount[nextLine] < state.blkIndent;
    pos = state.bMarks[nextLine] + state.tShift[nextLine];
    max2 = state.eMarks[nextLine];
    if (pos >= max2) {
      break;
    }
    if (state.src.charCodeAt(pos++) === 62 && !isOutdented) {
      initial = offset2 = state.sCount[nextLine] + 1;
      if (state.src.charCodeAt(pos) === 32) {
        pos++;
        initial++;
        offset2++;
        adjustTab = false;
        spaceAfterMarker = true;
      } else if (state.src.charCodeAt(pos) === 9) {
        spaceAfterMarker = true;
        if ((state.bsCount[nextLine] + offset2) % 4 === 3) {
          pos++;
          initial++;
          offset2++;
          adjustTab = false;
        } else {
          adjustTab = true;
        }
      } else {
        spaceAfterMarker = false;
      }
      oldBMarks.push(state.bMarks[nextLine]);
      state.bMarks[nextLine] = pos;
      while (pos < max2) {
        ch = state.src.charCodeAt(pos);
        if (isSpace$9(ch)) {
          if (ch === 9) {
            offset2 += 4 - (offset2 + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;
          } else {
            offset2++;
          }
        } else {
          break;
        }
        pos++;
      }
      lastLineEmpty = pos >= max2;
      oldBSCount.push(state.bsCount[nextLine]);
      state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);
      oldSCount.push(state.sCount[nextLine]);
      state.sCount[nextLine] = offset2 - initial;
      oldTShift.push(state.tShift[nextLine]);
      state.tShift[nextLine] = pos - state.bMarks[nextLine];
      continue;
    }
    if (lastLineEmpty) {
      break;
    }
    terminate = false;
    for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) {
      if (terminatorRules[i2](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      state.lineMax = nextLine;
      if (state.blkIndent !== 0) {
        oldBMarks.push(state.bMarks[nextLine]);
        oldBSCount.push(state.bsCount[nextLine]);
        oldTShift.push(state.tShift[nextLine]);
        oldSCount.push(state.sCount[nextLine]);
        state.sCount[nextLine] -= state.blkIndent;
      }
      break;
    }
    oldBMarks.push(state.bMarks[nextLine]);
    oldBSCount.push(state.bsCount[nextLine]);
    oldTShift.push(state.tShift[nextLine]);
    oldSCount.push(state.sCount[nextLine]);
    state.sCount[nextLine] = -1;
  }
  oldIndent = state.blkIndent;
  state.blkIndent = 0;
  token2 = state.push("blockquote_open", "blockquote", 1);
  token2.markup = ">";
  token2.map = lines = [startLine, 0];
  state.md.block.tokenize(state, startLine, nextLine);
  token2 = state.push("blockquote_close", "blockquote", -1);
  token2.markup = ">";
  state.lineMax = oldLineMax;
  state.parentType = oldParentType;
  lines[1] = state.line;
  for (i2 = 0; i2 < oldTShift.length; i2++) {
    state.bMarks[i2 + startLine] = oldBMarks[i2];
    state.tShift[i2 + startLine] = oldTShift[i2];
    state.sCount[i2 + startLine] = oldSCount[i2];
    state.bsCount[i2 + startLine] = oldBSCount[i2];
  }
  state.blkIndent = oldIndent;
  return true;
};
var isSpace$8 = utils$1.isSpace;
var hr = function hr2(state, startLine, endLine, silent) {
  var marker2, cnt, ch, token2, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  marker2 = state.src.charCodeAt(pos++);
  if (marker2 !== 42 && marker2 !== 45 && marker2 !== 95) {
    return false;
  }
  cnt = 1;
  while (pos < max2) {
    ch = state.src.charCodeAt(pos++);
    if (ch !== marker2 && !isSpace$8(ch)) {
      return false;
    }
    if (ch === marker2) {
      cnt++;
    }
  }
  if (cnt < 3) {
    return false;
  }
  if (silent) {
    return true;
  }
  state.line = startLine + 1;
  token2 = state.push("hr", "hr", 0);
  token2.map = [startLine, state.line];
  token2.markup = Array(cnt + 1).join(String.fromCharCode(marker2));
  return true;
};
var isSpace$7 = utils$1.isSpace;
function skipBulletListMarker(state, startLine) {
  var marker2, pos, max2, ch;
  pos = state.bMarks[startLine] + state.tShift[startLine];
  max2 = state.eMarks[startLine];
  marker2 = state.src.charCodeAt(pos++);
  if (marker2 !== 42 && marker2 !== 45 && marker2 !== 43) {
    return -1;
  }
  if (pos < max2) {
    ch = state.src.charCodeAt(pos);
    if (!isSpace$7(ch)) {
      return -1;
    }
  }
  return pos;
}
function skipOrderedListMarker(state, startLine) {
  var ch, start = state.bMarks[startLine] + state.tShift[startLine], pos = start, max2 = state.eMarks[startLine];
  if (pos + 1 >= max2) {
    return -1;
  }
  ch = state.src.charCodeAt(pos++);
  if (ch < 48 || ch > 57) {
    return -1;
  }
  for (; ; ) {
    if (pos >= max2) {
      return -1;
    }
    ch = state.src.charCodeAt(pos++);
    if (ch >= 48 && ch <= 57) {
      if (pos - start >= 10) {
        return -1;
      }
      continue;
    }
    if (ch === 41 || ch === 46) {
      break;
    }
    return -1;
  }
  if (pos < max2) {
    ch = state.src.charCodeAt(pos);
    if (!isSpace$7(ch)) {
      return -1;
    }
  }
  return pos;
}
function markTightParagraphs(state, idx) {
  var i2, l2, level = state.level + 2;
  for (i2 = idx + 2, l2 = state.tokens.length - 2; i2 < l2; i2++) {
    if (state.tokens[i2].level === level && state.tokens[i2].type === "paragraph_open") {
      state.tokens[i2 + 2].hidden = true;
      state.tokens[i2].hidden = true;
      i2 += 2;
    }
  }
}
var list = function list2(state, startLine, endLine, silent) {
  var ch, contentStart, i2, indent2, indentAfterMarker, initial, isOrdered, itemLines, l2, listLines, listTokIdx, markerCharCode, markerValue, max2, nextLine, offset2, oldListIndent, oldParentType, oldSCount, oldTShift, oldTight, pos, posAfterMarker, prevEmptyEnd, start, terminate, terminatorRules, token2, isTerminatingParagraph = false, tight = true;
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) {
    return false;
  }
  if (silent && state.parentType === "paragraph") {
    if (state.sCount[startLine] >= state.blkIndent) {
      isTerminatingParagraph = true;
    }
  }
  if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {
    isOrdered = true;
    start = state.bMarks[startLine] + state.tShift[startLine];
    markerValue = Number(state.src.slice(start, posAfterMarker - 1));
    if (isTerminatingParagraph && markerValue !== 1)
      return false;
  } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {
    isOrdered = false;
  } else {
    return false;
  }
  if (isTerminatingParagraph) {
    if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine])
      return false;
  }
  markerCharCode = state.src.charCodeAt(posAfterMarker - 1);
  if (silent) {
    return true;
  }
  listTokIdx = state.tokens.length;
  if (isOrdered) {
    token2 = state.push("ordered_list_open", "ol", 1);
    if (markerValue !== 1) {
      token2.attrs = [["start", markerValue]];
    }
  } else {
    token2 = state.push("bullet_list_open", "ul", 1);
  }
  token2.map = listLines = [startLine, 0];
  token2.markup = String.fromCharCode(markerCharCode);
  nextLine = startLine;
  prevEmptyEnd = false;
  terminatorRules = state.md.block.ruler.getRules("list");
  oldParentType = state.parentType;
  state.parentType = "list";
  while (nextLine < endLine) {
    pos = posAfterMarker;
    max2 = state.eMarks[nextLine];
    initial = offset2 = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);
    while (pos < max2) {
      ch = state.src.charCodeAt(pos);
      if (ch === 9) {
        offset2 += 4 - (offset2 + state.bsCount[nextLine]) % 4;
      } else if (ch === 32) {
        offset2++;
      } else {
        break;
      }
      pos++;
    }
    contentStart = pos;
    if (contentStart >= max2) {
      indentAfterMarker = 1;
    } else {
      indentAfterMarker = offset2 - initial;
    }
    if (indentAfterMarker > 4) {
      indentAfterMarker = 1;
    }
    indent2 = initial + indentAfterMarker;
    token2 = state.push("list_item_open", "li", 1);
    token2.markup = String.fromCharCode(markerCharCode);
    token2.map = itemLines = [startLine, 0];
    if (isOrdered) {
      token2.info = state.src.slice(start, posAfterMarker - 1);
    }
    oldTight = state.tight;
    oldTShift = state.tShift[startLine];
    oldSCount = state.sCount[startLine];
    oldListIndent = state.listIndent;
    state.listIndent = state.blkIndent;
    state.blkIndent = indent2;
    state.tight = true;
    state.tShift[startLine] = contentStart - state.bMarks[startLine];
    state.sCount[startLine] = offset2;
    if (contentStart >= max2 && state.isEmpty(startLine + 1)) {
      state.line = Math.min(state.line + 2, endLine);
    } else {
      state.md.block.tokenize(state, startLine, endLine, true);
    }
    if (!state.tight || prevEmptyEnd) {
      tight = false;
    }
    prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);
    state.blkIndent = state.listIndent;
    state.listIndent = oldListIndent;
    state.tShift[startLine] = oldTShift;
    state.sCount[startLine] = oldSCount;
    state.tight = oldTight;
    token2 = state.push("list_item_close", "li", -1);
    token2.markup = String.fromCharCode(markerCharCode);
    nextLine = startLine = state.line;
    itemLines[1] = nextLine;
    contentStart = state.bMarks[startLine];
    if (nextLine >= endLine) {
      break;
    }
    if (state.sCount[nextLine] < state.blkIndent) {
      break;
    }
    if (state.sCount[startLine] - state.blkIndent >= 4) {
      break;
    }
    terminate = false;
    for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) {
      if (terminatorRules[i2](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
    if (isOrdered) {
      posAfterMarker = skipOrderedListMarker(state, nextLine);
      if (posAfterMarker < 0) {
        break;
      }
      start = state.bMarks[nextLine] + state.tShift[nextLine];
    } else {
      posAfterMarker = skipBulletListMarker(state, nextLine);
      if (posAfterMarker < 0) {
        break;
      }
    }
    if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {
      break;
    }
  }
  if (isOrdered) {
    token2 = state.push("ordered_list_close", "ol", -1);
  } else {
    token2 = state.push("bullet_list_close", "ul", -1);
  }
  token2.markup = String.fromCharCode(markerCharCode);
  listLines[1] = nextLine;
  state.line = nextLine;
  state.parentType = oldParentType;
  if (tight) {
    markTightParagraphs(state, listTokIdx);
  }
  return true;
};
var normalizeReference$2 = utils$1.normalizeReference;
var isSpace$6 = utils$1.isSpace;
var reference = function reference2(state, startLine, _endLine, silent) {
  var ch, destEndPos, destEndLineNo, endLine, href, i2, l2, label, labelEnd, oldParentType, res, start, str, terminate, terminatorRules, title, lines = 0, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine], nextLine = startLine + 1;
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (state.src.charCodeAt(pos) !== 91) {
    return false;
  }
  while (++pos < max2) {
    if (state.src.charCodeAt(pos) === 93 && state.src.charCodeAt(pos - 1) !== 92) {
      if (pos + 1 === max2) {
        return false;
      }
      if (state.src.charCodeAt(pos + 1) !== 58) {
        return false;
      }
      break;
    }
  }
  endLine = state.lineMax;
  terminatorRules = state.md.block.ruler.getRules("reference");
  oldParentType = state.parentType;
  state.parentType = "reference";
  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
    if (state.sCount[nextLine] - state.blkIndent > 3) {
      continue;
    }
    if (state.sCount[nextLine] < 0) {
      continue;
    }
    terminate = false;
    for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) {
      if (terminatorRules[i2](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
  }
  str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
  max2 = str.length;
  for (pos = 1; pos < max2; pos++) {
    ch = str.charCodeAt(pos);
    if (ch === 91) {
      return false;
    } else if (ch === 93) {
      labelEnd = pos;
      break;
    } else if (ch === 10) {
      lines++;
    } else if (ch === 92) {
      pos++;
      if (pos < max2 && str.charCodeAt(pos) === 10) {
        lines++;
      }
    }
  }
  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) {
    return false;
  }
  for (pos = labelEnd + 2; pos < max2; pos++) {
    ch = str.charCodeAt(pos);
    if (ch === 10) {
      lines++;
    } else if (isSpace$6(ch))
      ;
    else {
      break;
    }
  }
  res = state.md.helpers.parseLinkDestination(str, pos, max2);
  if (!res.ok) {
    return false;
  }
  href = state.md.normalizeLink(res.str);
  if (!state.md.validateLink(href)) {
    return false;
  }
  pos = res.pos;
  lines += res.lines;
  destEndPos = pos;
  destEndLineNo = lines;
  start = pos;
  for (; pos < max2; pos++) {
    ch = str.charCodeAt(pos);
    if (ch === 10) {
      lines++;
    } else if (isSpace$6(ch))
      ;
    else {
      break;
    }
  }
  res = state.md.helpers.parseLinkTitle(str, pos, max2);
  if (pos < max2 && start !== pos && res.ok) {
    title = res.str;
    pos = res.pos;
    lines += res.lines;
  } else {
    title = "";
    pos = destEndPos;
    lines = destEndLineNo;
  }
  while (pos < max2) {
    ch = str.charCodeAt(pos);
    if (!isSpace$6(ch)) {
      break;
    }
    pos++;
  }
  if (pos < max2 && str.charCodeAt(pos) !== 10) {
    if (title) {
      title = "";
      pos = destEndPos;
      lines = destEndLineNo;
      while (pos < max2) {
        ch = str.charCodeAt(pos);
        if (!isSpace$6(ch)) {
          break;
        }
        pos++;
      }
    }
  }
  if (pos < max2 && str.charCodeAt(pos) !== 10) {
    return false;
  }
  label = normalizeReference$2(str.slice(1, labelEnd));
  if (!label) {
    return false;
  }
  if (silent) {
    return true;
  }
  if (typeof state.env.references === "undefined") {
    state.env.references = {};
  }
  if (typeof state.env.references[label] === "undefined") {
    state.env.references[label] = { title, href };
  }
  state.parentType = oldParentType;
  state.line = startLine + lines + 1;
  return true;
};
var html_blocks = [
  "address",
  "article",
  "aside",
  "base",
  "basefont",
  "blockquote",
  "body",
  "caption",
  "center",
  "col",
  "colgroup",
  "dd",
  "details",
  "dialog",
  "dir",
  "div",
  "dl",
  "dt",
  "fieldset",
  "figcaption",
  "figure",
  "footer",
  "form",
  "frame",
  "frameset",
  "h1",
  "h2",
  "h3",
  "h4",
  "h5",
  "h6",
  "head",
  "header",
  "hr",
  "html",
  "iframe",
  "legend",
  "li",
  "link",
  "main",
  "menu",
  "menuitem",
  "nav",
  "noframes",
  "ol",
  "optgroup",
  "option",
  "p",
  "param",
  "section",
  "source",
  "summary",
  "table",
  "tbody",
  "td",
  "tfoot",
  "th",
  "thead",
  "title",
  "tr",
  "track",
  "ul"
];
var html_re = {};
var attr_name = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
var unquoted = "[^\"'=<>`\\x00-\\x20]+";
var single_quoted = "'[^']*'";
var double_quoted = '"[^"]*"';
var attr_value = "(?:" + unquoted + "|" + single_quoted + "|" + double_quoted + ")";
var attribute = "(?:\\s+" + attr_name + "(?:\\s*=\\s*" + attr_value + ")?)";
var open_tag = "<[A-Za-z][A-Za-z0-9\\-]*" + attribute + "*\\s*\\/?>";
var close_tag = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>";
var comment = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->";
var processing = "<[?][\\s\\S]*?[?]>";
var declaration = "<![A-Z]+\\s+[^>]*>";
var cdata = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>";
var HTML_TAG_RE$1 = new RegExp("^(?:" + open_tag + "|" + close_tag + "|" + comment + "|" + processing + "|" + declaration + "|" + cdata + ")");
var HTML_OPEN_CLOSE_TAG_RE$1 = new RegExp("^(?:" + open_tag + "|" + close_tag + ")");
html_re.HTML_TAG_RE = HTML_TAG_RE$1;
html_re.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE$1;
var block_names = html_blocks;
var HTML_OPEN_CLOSE_TAG_RE = html_re.HTML_OPEN_CLOSE_TAG_RE;
var HTML_SEQUENCES = [
  [/^<(script|pre|style|textarea)(?=(\s|>|$))/i, /<\/(script|pre|style|textarea)>/i, true],
  [/^<!--/, /-->/, true],
  [/^<\?/, /\?>/, true],
  [/^<![A-Z]/, />/, true],
  [/^<!\[CDATA\[/, /\]\]>/, true],
  [new RegExp("^</?(" + block_names.join("|") + ")(?=(\\s|/?>|$))", "i"), /^$/, true],
  [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + "\\s*$"), /^$/, false]
];
var html_block = function html_block2(state, startLine, endLine, silent) {
  var i2, nextLine, token2, lineText, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  if (!state.md.options.html) {
    return false;
  }
  if (state.src.charCodeAt(pos) !== 60) {
    return false;
  }
  lineText = state.src.slice(pos, max2);
  for (i2 = 0; i2 < HTML_SEQUENCES.length; i2++) {
    if (HTML_SEQUENCES[i2][0].test(lineText)) {
      break;
    }
  }
  if (i2 === HTML_SEQUENCES.length) {
    return false;
  }
  if (silent) {
    return HTML_SEQUENCES[i2][2];
  }
  nextLine = startLine + 1;
  if (!HTML_SEQUENCES[i2][1].test(lineText)) {
    for (; nextLine < endLine; nextLine++) {
      if (state.sCount[nextLine] < state.blkIndent) {
        break;
      }
      pos = state.bMarks[nextLine] + state.tShift[nextLine];
      max2 = state.eMarks[nextLine];
      lineText = state.src.slice(pos, max2);
      if (HTML_SEQUENCES[i2][1].test(lineText)) {
        if (lineText.length !== 0) {
          nextLine++;
        }
        break;
      }
    }
  }
  state.line = nextLine;
  token2 = state.push("html_block", "", 0);
  token2.map = [startLine, nextLine];
  token2.content = state.getLines(startLine, nextLine, state.blkIndent, true);
  return true;
};
var isSpace$5 = utils$1.isSpace;
var heading = function heading2(state, startLine, endLine, silent) {
  var ch, level, tmp, token2, pos = state.bMarks[startLine] + state.tShift[startLine], max2 = state.eMarks[startLine];
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  ch = state.src.charCodeAt(pos);
  if (ch !== 35 || pos >= max2) {
    return false;
  }
  level = 1;
  ch = state.src.charCodeAt(++pos);
  while (ch === 35 && pos < max2 && level <= 6) {
    level++;
    ch = state.src.charCodeAt(++pos);
  }
  if (level > 6 || pos < max2 && !isSpace$5(ch)) {
    return false;
  }
  if (silent) {
    return true;
  }
  max2 = state.skipSpacesBack(max2, pos);
  tmp = state.skipCharsBack(max2, 35, pos);
  if (tmp > pos && isSpace$5(state.src.charCodeAt(tmp - 1))) {
    max2 = tmp;
  }
  state.line = startLine + 1;
  token2 = state.push("heading_open", "h" + String(level), 1);
  token2.markup = "########".slice(0, level);
  token2.map = [startLine, state.line];
  token2 = state.push("inline", "", 0);
  token2.content = state.src.slice(pos, max2).trim();
  token2.map = [startLine, state.line];
  token2.children = [];
  token2 = state.push("heading_close", "h" + String(level), -1);
  token2.markup = "########".slice(0, level);
  return true;
};
var lheading = function lheading2(state, startLine, endLine) {
  var content, terminate, i2, l2, token2, pos, max2, level, marker2, nextLine = startLine + 1, oldParentType, terminatorRules = state.md.block.ruler.getRules("paragraph");
  if (state.sCount[startLine] - state.blkIndent >= 4) {
    return false;
  }
  oldParentType = state.parentType;
  state.parentType = "paragraph";
  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
    if (state.sCount[nextLine] - state.blkIndent > 3) {
      continue;
    }
    if (state.sCount[nextLine] >= state.blkIndent) {
      pos = state.bMarks[nextLine] + state.tShift[nextLine];
      max2 = state.eMarks[nextLine];
      if (pos < max2) {
        marker2 = state.src.charCodeAt(pos);
        if (marker2 === 45 || marker2 === 61) {
          pos = state.skipChars(pos, marker2);
          pos = state.skipSpaces(pos);
          if (pos >= max2) {
            level = marker2 === 61 ? 1 : 2;
            break;
          }
        }
      }
    }
    if (state.sCount[nextLine] < 0) {
      continue;
    }
    terminate = false;
    for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) {
      if (terminatorRules[i2](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
  }
  if (!level) {
    return false;
  }
  content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
  state.line = nextLine + 1;
  token2 = state.push("heading_open", "h" + String(level), 1);
  token2.markup = String.fromCharCode(marker2);
  token2.map = [startLine, state.line];
  token2 = state.push("inline", "", 0);
  token2.content = content;
  token2.map = [startLine, state.line - 1];
  token2.children = [];
  token2 = state.push("heading_close", "h" + String(level), -1);
  token2.markup = String.fromCharCode(marker2);
  state.parentType = oldParentType;
  return true;
};
var paragraph = function paragraph2(state, startLine) {
  var content, terminate, i2, l2, token2, oldParentType, nextLine = startLine + 1, terminatorRules = state.md.block.ruler.getRules("paragraph"), endLine = state.lineMax;
  oldParentType = state.parentType;
  state.parentType = "paragraph";
  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
    if (state.sCount[nextLine] - state.blkIndent > 3) {
      continue;
    }
    if (state.sCount[nextLine] < 0) {
      continue;
    }
    terminate = false;
    for (i2 = 0, l2 = terminatorRules.length; i2 < l2; i2++) {
      if (terminatorRules[i2](state, nextLine, endLine, true)) {
        terminate = true;
        break;
      }
    }
    if (terminate) {
      break;
    }
  }
  content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();
  state.line = nextLine;
  token2 = state.push("paragraph_open", "p", 1);
  token2.map = [startLine, state.line];
  token2 = state.push("inline", "", 0);
  token2.content = content;
  token2.map = [startLine, state.line];
  token2.children = [];
  token2 = state.push("paragraph_close", "p", -1);
  state.parentType = oldParentType;
  return true;
};
var Token$1 = token;
var isSpace$4 = utils$1.isSpace;
function StateBlock(src, md, env, tokens) {
  var ch, s2, start, pos, len, indent2, offset2, indent_found;
  this.src = src;
  this.md = md;
  this.env = env;
  this.tokens = tokens;
  this.bMarks = [];
  this.eMarks = [];
  this.tShift = [];
  this.sCount = [];
  this.bsCount = [];
  this.blkIndent = 0;
  this.line = 0;
  this.lineMax = 0;
  this.tight = false;
  this.ddIndent = -1;
  this.listIndent = -1;
  this.parentType = "root";
  this.level = 0;
  this.result = "";
  s2 = this.src;
  indent_found = false;
  for (start = pos = indent2 = offset2 = 0, len = s2.length; pos < len; pos++) {
    ch = s2.charCodeAt(pos);
    if (!indent_found) {
      if (isSpace$4(ch)) {
        indent2++;
        if (ch === 9) {
          offset2 += 4 - offset2 % 4;
        } else {
          offset2++;
        }
        continue;
      } else {
        indent_found = true;
      }
    }
    if (ch === 10 || pos === len - 1) {
      if (ch !== 10) {
        pos++;
      }
      this.bMarks.push(start);
      this.eMarks.push(pos);
      this.tShift.push(indent2);
      this.sCount.push(offset2);
      this.bsCount.push(0);
      indent_found = false;
      indent2 = 0;
      offset2 = 0;
      start = pos + 1;
    }
  }
  this.bMarks.push(s2.length);
  this.eMarks.push(s2.length);
  this.tShift.push(0);
  this.sCount.push(0);
  this.bsCount.push(0);
  this.lineMax = this.bMarks.length - 1;
}
StateBlock.prototype.push = function(type2, tag, nesting) {
  var token2 = new Token$1(type2, tag, nesting);
  token2.block = true;
  if (nesting < 0)
    this.level--;
  token2.level = this.level;
  if (nesting > 0)
    this.level++;
  this.tokens.push(token2);
  return token2;
};
StateBlock.prototype.isEmpty = function isEmpty(line) {
  return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];
};
StateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {
  for (var max2 = this.lineMax; from < max2; from++) {
    if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {
      break;
    }
  }
  return from;
};
StateBlock.prototype.skipSpaces = function skipSpaces(pos) {
  var ch;
  for (var max2 = this.src.length; pos < max2; pos++) {
    ch = this.src.charCodeAt(pos);
    if (!isSpace$4(ch)) {
      break;
    }
  }
  return pos;
};
StateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min2) {
  if (pos <= min2) {
    return pos;
  }
  while (pos > min2) {
    if (!isSpace$4(this.src.charCodeAt(--pos))) {
      return pos + 1;
    }
  }
  return pos;
};
StateBlock.prototype.skipChars = function skipChars(pos, code3) {
  for (var max2 = this.src.length; pos < max2; pos++) {
    if (this.src.charCodeAt(pos) !== code3) {
      break;
    }
  }
  return pos;
};
StateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code3, min2) {
  if (pos <= min2) {
    return pos;
  }
  while (pos > min2) {
    if (code3 !== this.src.charCodeAt(--pos)) {
      return pos + 1;
    }
  }
  return pos;
};
StateBlock.prototype.getLines = function getLines(begin, end, indent2, keepLastLF) {
  var i2, lineIndent, ch, first, last, queue2, lineStart, line = begin;
  if (begin >= end) {
    return "";
  }
  queue2 = new Array(end - begin);
  for (i2 = 0; line < end; line++, i2++) {
    lineIndent = 0;
    lineStart = first = this.bMarks[line];
    if (line + 1 < end || keepLastLF) {
      last = this.eMarks[line] + 1;
    } else {
      last = this.eMarks[line];
    }
    while (first < last && lineIndent < indent2) {
      ch = this.src.charCodeAt(first);
      if (isSpace$4(ch)) {
        if (ch === 9) {
          lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;
        } else {
          lineIndent++;
        }
      } else if (first - lineStart < this.tShift[line]) {
        lineIndent++;
      } else {
        break;
      }
      first++;
    }
    if (lineIndent > indent2) {
      queue2[i2] = new Array(lineIndent - indent2 + 1).join(" ") + this.src.slice(first, last);
    } else {
      queue2[i2] = this.src.slice(first, last);
    }
  }
  return queue2.join("");
};
StateBlock.prototype.Token = Token$1;
var state_block = StateBlock;
var Ruler$1 = ruler;
var _rules$1 = [
  // First 2 params - rule name & source. Secondary array - list of rules,
  // which can be terminated by this one.
  ["table", table, ["paragraph", "reference"]],
  ["code", code],
  ["fence", fence, ["paragraph", "reference", "blockquote", "list"]],
  ["blockquote", blockquote, ["paragraph", "reference", "blockquote", "list"]],
  ["hr", hr, ["paragraph", "reference", "blockquote", "list"]],
  ["list", list, ["paragraph", "reference", "blockquote"]],
  ["reference", reference],
  ["html_block", html_block, ["paragraph", "reference", "blockquote"]],
  ["heading", heading, ["paragraph", "reference", "blockquote"]],
  ["lheading", lheading],
  ["paragraph", paragraph]
];
function ParserBlock$1() {
  this.ruler = new Ruler$1();
  for (var i2 = 0; i2 < _rules$1.length; i2++) {
    this.ruler.push(_rules$1[i2][0], _rules$1[i2][1], { alt: (_rules$1[i2][2] || []).slice() });
  }
}
ParserBlock$1.prototype.tokenize = function(state, startLine, endLine) {
  var ok, i2, rules = this.ruler.getRules(""), len = rules.length, line = startLine, hasEmptyLines = false, maxNesting = state.md.options.maxNesting;
  while (line < endLine) {
    state.line = line = state.skipEmptyLines(line);
    if (line >= endLine) {
      break;
    }
    if (state.sCount[line] < state.blkIndent) {
      break;
    }
    if (state.level >= maxNesting) {
      state.line = endLine;
      break;
    }
    for (i2 = 0; i2 < len; i2++) {
      ok = rules[i2](state, line, endLine, false);
      if (ok) {
        break;
      }
    }
    state.tight = !hasEmptyLines;
    if (state.isEmpty(state.line - 1)) {
      hasEmptyLines = true;
    }
    line = state.line;
    if (line < endLine && state.isEmpty(line)) {
      hasEmptyLines = true;
      line++;
      state.line = line;
    }
  }
};
ParserBlock$1.prototype.parse = function(src, md, env, outTokens) {
  var state;
  if (!src) {
    return;
  }
  state = new this.State(src, md, env, outTokens);
  this.tokenize(state, state.line, state.lineMax);
};
ParserBlock$1.prototype.State = state_block;
var parser_block = ParserBlock$1;
function isTerminatorChar(ch) {
  switch (ch) {
    case 10:
    case 33:
    case 35:
    case 36:
    case 37:
    case 38:
    case 42:
    case 43:
    case 45:
    case 58:
    case 60:
    case 61:
    case 62:
    case 64:
    case 91:
    case 92:
    case 93:
    case 94:
    case 95:
    case 96:
    case 123:
    case 125:
    case 126:
      return true;
    default:
      return false;
  }
}
var text = function text2(state, silent) {
  var pos = state.pos;
  while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {
    pos++;
  }
  if (pos === state.pos) {
    return false;
  }
  if (!silent) {
    state.pending += state.src.slice(state.pos, pos);
  }
  state.pos = pos;
  return true;
};
var SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;
var linkify2 = function linkify3(state, silent) {
  var pos, max2, match3, proto2, link4, url2, fullUrl, token2;
  if (!state.md.options.linkify)
    return false;
  if (state.linkLevel > 0)
    return false;
  pos = state.pos;
  max2 = state.posMax;
  if (pos + 3 > max2)
    return false;
  if (state.src.charCodeAt(pos) !== 58)
    return false;
  if (state.src.charCodeAt(pos + 1) !== 47)
    return false;
  if (state.src.charCodeAt(pos + 2) !== 47)
    return false;
  match3 = state.pending.match(SCHEME_RE);
  if (!match3)
    return false;
  proto2 = match3[1];
  link4 = state.md.linkify.matchAtStart(state.src.slice(pos - proto2.length));
  if (!link4)
    return false;
  url2 = link4.url;
  url2 = url2.replace(/\*+$/, "");
  fullUrl = state.md.normalizeLink(url2);
  if (!state.md.validateLink(fullUrl))
    return false;
  if (!silent) {
    state.pending = state.pending.slice(0, -proto2.length);
    token2 = state.push("link_open", "a", 1);
    token2.attrs = [["href", fullUrl]];
    token2.markup = "linkify";
    token2.info = "auto";
    token2 = state.push("text", "", 0);
    token2.content = state.md.normalizeLinkText(url2);
    token2 = state.push("link_close", "a", -1);
    token2.markup = "linkify";
    token2.info = "auto";
  }
  state.pos += url2.length - proto2.length;
  return true;
};
var isSpace$3 = utils$1.isSpace;
var newline = function newline2(state, silent) {
  var pmax, max2, ws, pos = state.pos;
  if (state.src.charCodeAt(pos) !== 10) {
    return false;
  }
  pmax = state.pending.length - 1;
  max2 = state.posMax;
  if (!silent) {
    if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {
      if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {
        ws = pmax - 1;
        while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32)
          ws--;
        state.pending = state.pending.slice(0, ws);
        state.push("hardbreak", "br", 0);
      } else {
        state.pending = state.pending.slice(0, -1);
        state.push("softbreak", "br", 0);
      }
    } else {
      state.push("softbreak", "br", 0);
    }
  }
  pos++;
  while (pos < max2 && isSpace$3(state.src.charCodeAt(pos))) {
    pos++;
  }
  state.pos = pos;
  return true;
};
var isSpace$2 = utils$1.isSpace;
var ESCAPED = [];
for (var i$1 = 0; i$1 < 256; i$1++) {
  ESCAPED.push(0);
}
"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(ch) {
  ESCAPED[ch.charCodeAt(0)] = 1;
});
var _escape = function escape(state, silent) {
  var ch1, ch2, origStr, escapedStr, token2, pos = state.pos, max2 = state.posMax;
  if (state.src.charCodeAt(pos) !== 92)
    return false;
  pos++;
  if (pos >= max2)
    return false;
  ch1 = state.src.charCodeAt(pos);
  if (ch1 === 10) {
    if (!silent) {
      state.push("hardbreak", "br", 0);
    }
    pos++;
    while (pos < max2) {
      ch1 = state.src.charCodeAt(pos);
      if (!isSpace$2(ch1))
        break;
      pos++;
    }
    state.pos = pos;
    return true;
  }
  escapedStr = state.src[pos];
  if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max2) {
    ch2 = state.src.charCodeAt(pos + 1);
    if (ch2 >= 56320 && ch2 <= 57343) {
      escapedStr += state.src[pos + 1];
      pos++;
    }
  }
  origStr = "\\" + escapedStr;
  if (!silent) {
    token2 = state.push("text_special", "", 0);
    if (ch1 < 256 && ESCAPED[ch1] !== 0) {
      token2.content = escapedStr;
    } else {
      token2.content = origStr;
    }
    token2.markup = origStr;
    token2.info = "escape";
  }
  state.pos = pos + 1;
  return true;
};
var backticks = function backtick(state, silent) {
  var start, max2, marker2, token2, matchStart, matchEnd, openerLength, closerLength, pos = state.pos, ch = state.src.charCodeAt(pos);
  if (ch !== 96) {
    return false;
  }
  start = pos;
  pos++;
  max2 = state.posMax;
  while (pos < max2 && state.src.charCodeAt(pos) === 96) {
    pos++;
  }
  marker2 = state.src.slice(start, pos);
  openerLength = marker2.length;
  if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {
    if (!silent)
      state.pending += marker2;
    state.pos += openerLength;
    return true;
  }
  matchStart = matchEnd = pos;
  while ((matchStart = state.src.indexOf("`", matchEnd)) !== -1) {
    matchEnd = matchStart + 1;
    while (matchEnd < max2 && state.src.charCodeAt(matchEnd) === 96) {
      matchEnd++;
    }
    closerLength = matchEnd - matchStart;
    if (closerLength === openerLength) {
      if (!silent) {
        token2 = state.push("code_inline", "code", 0);
        token2.markup = marker2;
        token2.content = state.src.slice(pos, matchStart).replace(/\n/g, " ").replace(/^ (.+) $/, "$1");
      }
      state.pos = matchEnd;
      return true;
    }
    state.backticks[closerLength] = matchStart;
  }
  state.backticksScanned = true;
  if (!silent)
    state.pending += marker2;
  state.pos += openerLength;
  return true;
};
var strikethrough = {};
strikethrough.tokenize = function strikethrough2(state, silent) {
  var i2, scanned, token2, len, ch, start = state.pos, marker2 = state.src.charCodeAt(start);
  if (silent) {
    return false;
  }
  if (marker2 !== 126) {
    return false;
  }
  scanned = state.scanDelims(state.pos, true);
  len = scanned.length;
  ch = String.fromCharCode(marker2);
  if (len < 2) {
    return false;
  }
  if (len % 2) {
    token2 = state.push("text", "", 0);
    token2.content = ch;
    len--;
  }
  for (i2 = 0; i2 < len; i2 += 2) {
    token2 = state.push("text", "", 0);
    token2.content = ch + ch;
    state.delimiters.push({
      marker: marker2,
      length: 0,
      // disable "rule of 3" length checks meant for emphasis
      token: state.tokens.length - 1,
      end: -1,
      open: scanned.can_open,
      close: scanned.can_close
    });
  }
  state.pos += scanned.length;
  return true;
};
function postProcess$1(state, delimiters) {
  var i2, j, startDelim, endDelim, token2, loneMarkers = [], max2 = delimiters.length;
  for (i2 = 0; i2 < max2; i2++) {
    startDelim = delimiters[i2];
    if (startDelim.marker !== 126) {
      continue;
    }
    if (startDelim.end === -1) {
      continue;
    }
    endDelim = delimiters[startDelim.end];
    token2 = state.tokens[startDelim.token];
    token2.type = "s_open";
    token2.tag = "s";
    token2.nesting = 1;
    token2.markup = "~~";
    token2.content = "";
    token2 = state.tokens[endDelim.token];
    token2.type = "s_close";
    token2.tag = "s";
    token2.nesting = -1;
    token2.markup = "~~";
    token2.content = "";
    if (state.tokens[endDelim.token - 1].type === "text" && state.tokens[endDelim.token - 1].content === "~") {
      loneMarkers.push(endDelim.token - 1);
    }
  }
  while (loneMarkers.length) {
    i2 = loneMarkers.pop();
    j = i2 + 1;
    while (j < state.tokens.length && state.tokens[j].type === "s_close") {
      j++;
    }
    j--;
    if (i2 !== j) {
      token2 = state.tokens[j];
      state.tokens[j] = state.tokens[i2];
      state.tokens[i2] = token2;
    }
  }
}
strikethrough.postProcess = function strikethrough3(state) {
  var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length;
  postProcess$1(state, state.delimiters);
  for (curr = 0; curr < max2; curr++) {
    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
      postProcess$1(state, tokens_meta[curr].delimiters);
    }
  }
};
var emphasis = {};
emphasis.tokenize = function emphasis2(state, silent) {
  var i2, scanned, token2, start = state.pos, marker2 = state.src.charCodeAt(start);
  if (silent) {
    return false;
  }
  if (marker2 !== 95 && marker2 !== 42) {
    return false;
  }
  scanned = state.scanDelims(state.pos, marker2 === 42);
  for (i2 = 0; i2 < scanned.length; i2++) {
    token2 = state.push("text", "", 0);
    token2.content = String.fromCharCode(marker2);
    state.delimiters.push({
      // Char code of the starting marker (number).
      //
      marker: marker2,
      // Total length of these series of delimiters.
      //
      length: scanned.length,
      // A position of the token this delimiter corresponds to.
      //
      token: state.tokens.length - 1,
      // If this delimiter is matched as a valid opener, `end` will be
      // equal to its position, otherwise it's `-1`.
      //
      end: -1,
      // Boolean flags that determine if this delimiter could open or close
      // an emphasis.
      //
      open: scanned.can_open,
      close: scanned.can_close
    });
  }
  state.pos += scanned.length;
  return true;
};
function postProcess(state, delimiters) {
  var i2, startDelim, endDelim, token2, ch, isStrong, max2 = delimiters.length;
  for (i2 = max2 - 1; i2 >= 0; i2--) {
    startDelim = delimiters[i2];
    if (startDelim.marker !== 95 && startDelim.marker !== 42) {
      continue;
    }
    if (startDelim.end === -1) {
      continue;
    }
    endDelim = delimiters[startDelim.end];
    isStrong = i2 > 0 && delimiters[i2 - 1].end === startDelim.end + 1 && // check that first two markers match and adjacent
    delimiters[i2 - 1].marker === startDelim.marker && delimiters[i2 - 1].token === startDelim.token - 1 && // check that last two markers are adjacent (we can safely assume they match)
    delimiters[startDelim.end + 1].token === endDelim.token + 1;
    ch = String.fromCharCode(startDelim.marker);
    token2 = state.tokens[startDelim.token];
    token2.type = isStrong ? "strong_open" : "em_open";
    token2.tag = isStrong ? "strong" : "em";
    token2.nesting = 1;
    token2.markup = isStrong ? ch + ch : ch;
    token2.content = "";
    token2 = state.tokens[endDelim.token];
    token2.type = isStrong ? "strong_close" : "em_close";
    token2.tag = isStrong ? "strong" : "em";
    token2.nesting = -1;
    token2.markup = isStrong ? ch + ch : ch;
    token2.content = "";
    if (isStrong) {
      state.tokens[delimiters[i2 - 1].token].content = "";
      state.tokens[delimiters[startDelim.end + 1].token].content = "";
      i2--;
    }
  }
}
emphasis.postProcess = function emphasis3(state) {
  var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length;
  postProcess(state, state.delimiters);
  for (curr = 0; curr < max2; curr++) {
    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
      postProcess(state, tokens_meta[curr].delimiters);
    }
  }
};
var normalizeReference$1 = utils$1.normalizeReference;
var isSpace$1 = utils$1.isSpace;
var link = function link2(state, silent) {
  var attrs, code3, label, labelEnd, labelStart, pos, res, ref2, token2, href = "", title = "", oldPos = state.pos, max2 = state.posMax, start = state.pos, parseReference = true;
  if (state.src.charCodeAt(state.pos) !== 91) {
    return false;
  }
  labelStart = state.pos + 1;
  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);
  if (labelEnd < 0) {
    return false;
  }
  pos = labelEnd + 1;
  if (pos < max2 && state.src.charCodeAt(pos) === 40) {
    parseReference = false;
    pos++;
    for (; pos < max2; pos++) {
      code3 = state.src.charCodeAt(pos);
      if (!isSpace$1(code3) && code3 !== 10) {
        break;
      }
    }
    if (pos >= max2) {
      return false;
    }
    start = pos;
    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
    if (res.ok) {
      href = state.md.normalizeLink(res.str);
      if (state.md.validateLink(href)) {
        pos = res.pos;
      } else {
        href = "";
      }
      start = pos;
      for (; pos < max2; pos++) {
        code3 = state.src.charCodeAt(pos);
        if (!isSpace$1(code3) && code3 !== 10) {
          break;
        }
      }
      res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
      if (pos < max2 && start !== pos && res.ok) {
        title = res.str;
        pos = res.pos;
        for (; pos < max2; pos++) {
          code3 = state.src.charCodeAt(pos);
          if (!isSpace$1(code3) && code3 !== 10) {
            break;
          }
        }
      }
    }
    if (pos >= max2 || state.src.charCodeAt(pos) !== 41) {
      parseReference = true;
    }
    pos++;
  }
  if (parseReference) {
    if (typeof state.env.references === "undefined") {
      return false;
    }
    if (pos < max2 && state.src.charCodeAt(pos) === 91) {
      start = pos + 1;
      pos = state.md.helpers.parseLinkLabel(state, pos);
      if (pos >= 0) {
        label = state.src.slice(start, pos++);
      } else {
        pos = labelEnd + 1;
      }
    } else {
      pos = labelEnd + 1;
    }
    if (!label) {
      label = state.src.slice(labelStart, labelEnd);
    }
    ref2 = state.env.references[normalizeReference$1(label)];
    if (!ref2) {
      state.pos = oldPos;
      return false;
    }
    href = ref2.href;
    title = ref2.title;
  }
  if (!silent) {
    state.pos = labelStart;
    state.posMax = labelEnd;
    token2 = state.push("link_open", "a", 1);
    token2.attrs = attrs = [["href", href]];
    if (title) {
      attrs.push(["title", title]);
    }
    state.linkLevel++;
    state.md.inline.tokenize(state);
    state.linkLevel--;
    token2 = state.push("link_close", "a", -1);
  }
  state.pos = pos;
  state.posMax = max2;
  return true;
};
var normalizeReference = utils$1.normalizeReference;
var isSpace = utils$1.isSpace;
var image = function image2(state, silent) {
  var attrs, code3, content, label, labelEnd, labelStart, pos, ref2, res, title, token2, tokens, start, href = "", oldPos = state.pos, max2 = state.posMax;
  if (state.src.charCodeAt(state.pos) !== 33) {
    return false;
  }
  if (state.src.charCodeAt(state.pos + 1) !== 91) {
    return false;
  }
  labelStart = state.pos + 2;
  labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);
  if (labelEnd < 0) {
    return false;
  }
  pos = labelEnd + 1;
  if (pos < max2 && state.src.charCodeAt(pos) === 40) {
    pos++;
    for (; pos < max2; pos++) {
      code3 = state.src.charCodeAt(pos);
      if (!isSpace(code3) && code3 !== 10) {
        break;
      }
    }
    if (pos >= max2) {
      return false;
    }
    start = pos;
    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);
    if (res.ok) {
      href = state.md.normalizeLink(res.str);
      if (state.md.validateLink(href)) {
        pos = res.pos;
      } else {
        href = "";
      }
    }
    start = pos;
    for (; pos < max2; pos++) {
      code3 = state.src.charCodeAt(pos);
      if (!isSpace(code3) && code3 !== 10) {
        break;
      }
    }
    res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);
    if (pos < max2 && start !== pos && res.ok) {
      title = res.str;
      pos = res.pos;
      for (; pos < max2; pos++) {
        code3 = state.src.charCodeAt(pos);
        if (!isSpace(code3) && code3 !== 10) {
          break;
        }
      }
    } else {
      title = "";
    }
    if (pos >= max2 || state.src.charCodeAt(pos) !== 41) {
      state.pos = oldPos;
      return false;
    }
    pos++;
  } else {
    if (typeof state.env.references === "undefined") {
      return false;
    }
    if (pos < max2 && state.src.charCodeAt(pos) === 91) {
      start = pos + 1;
      pos = state.md.helpers.parseLinkLabel(state, pos);
      if (pos >= 0) {
        label = state.src.slice(start, pos++);
      } else {
        pos = labelEnd + 1;
      }
    } else {
      pos = labelEnd + 1;
    }
    if (!label) {
      label = state.src.slice(labelStart, labelEnd);
    }
    ref2 = state.env.references[normalizeReference(label)];
    if (!ref2) {
      state.pos = oldPos;
      return false;
    }
    href = ref2.href;
    title = ref2.title;
  }
  if (!silent) {
    content = state.src.slice(labelStart, labelEnd);
    state.md.inline.parse(
      content,
      state.md,
      state.env,
      tokens = []
    );
    token2 = state.push("image", "img", 0);
    token2.attrs = attrs = [["src", href], ["alt", ""]];
    token2.children = tokens;
    token2.content = content;
    if (title) {
      attrs.push(["title", title]);
    }
  }
  state.pos = pos;
  state.posMax = max2;
  return true;
};
var EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;
var AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/;
var autolink = function autolink2(state, silent) {
  var url2, fullUrl, token2, ch, start, max2, pos = state.pos;
  if (state.src.charCodeAt(pos) !== 60) {
    return false;
  }
  start = state.pos;
  max2 = state.posMax;
  for (; ; ) {
    if (++pos >= max2)
      return false;
    ch = state.src.charCodeAt(pos);
    if (ch === 60)
      return false;
    if (ch === 62)
      break;
  }
  url2 = state.src.slice(start + 1, pos);
  if (AUTOLINK_RE.test(url2)) {
    fullUrl = state.md.normalizeLink(url2);
    if (!state.md.validateLink(fullUrl)) {
      return false;
    }
    if (!silent) {
      token2 = state.push("link_open", "a", 1);
      token2.attrs = [["href", fullUrl]];
      token2.markup = "autolink";
      token2.info = "auto";
      token2 = state.push("text", "", 0);
      token2.content = state.md.normalizeLinkText(url2);
      token2 = state.push("link_close", "a", -1);
      token2.markup = "autolink";
      token2.info = "auto";
    }
    state.pos += url2.length + 2;
    return true;
  }
  if (EMAIL_RE.test(url2)) {
    fullUrl = state.md.normalizeLink("mailto:" + url2);
    if (!state.md.validateLink(fullUrl)) {
      return false;
    }
    if (!silent) {
      token2 = state.push("link_open", "a", 1);
      token2.attrs = [["href", fullUrl]];
      token2.markup = "autolink";
      token2.info = "auto";
      token2 = state.push("text", "", 0);
      token2.content = state.md.normalizeLinkText(url2);
      token2 = state.push("link_close", "a", -1);
      token2.markup = "autolink";
      token2.info = "auto";
    }
    state.pos += url2.length + 2;
    return true;
  }
  return false;
};
var HTML_TAG_RE = html_re.HTML_TAG_RE;
function isLinkOpen(str) {
  return /^<a[>\s]/i.test(str);
}
function isLinkClose(str) {
  return /^<\/a\s*>/i.test(str);
}
function isLetter(ch) {
  var lc = ch | 32;
  return lc >= 97 && lc <= 122;
}
var html_inline = function html_inline2(state, silent) {
  var ch, match3, max2, token2, pos = state.pos;
  if (!state.md.options.html) {
    return false;
  }
  max2 = state.posMax;
  if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max2) {
    return false;
  }
  ch = state.src.charCodeAt(pos + 1);
  if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) {
    return false;
  }
  match3 = state.src.slice(pos).match(HTML_TAG_RE);
  if (!match3) {
    return false;
  }
  if (!silent) {
    token2 = state.push("html_inline", "", 0);
    token2.content = state.src.slice(pos, pos + match3[0].length);
    if (isLinkOpen(token2.content))
      state.linkLevel++;
    if (isLinkClose(token2.content))
      state.linkLevel--;
  }
  state.pos += match3[0].length;
  return true;
};
var entities = entitiesExports;
var has = utils$1.has;
var isValidEntityCode = utils$1.isValidEntityCode;
var fromCodePoint = utils$1.fromCodePoint;
var DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;
var NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;
var entity = function entity2(state, silent) {
  var ch, code3, match3, token2, pos = state.pos, max2 = state.posMax;
  if (state.src.charCodeAt(pos) !== 38)
    return false;
  if (pos + 1 >= max2)
    return false;
  ch = state.src.charCodeAt(pos + 1);
  if (ch === 35) {
    match3 = state.src.slice(pos).match(DIGITAL_RE);
    if (match3) {
      if (!silent) {
        code3 = match3[1][0].toLowerCase() === "x" ? parseInt(match3[1].slice(1), 16) : parseInt(match3[1], 10);
        token2 = state.push("text_special", "", 0);
        token2.content = isValidEntityCode(code3) ? fromCodePoint(code3) : fromCodePoint(65533);
        token2.markup = match3[0];
        token2.info = "entity";
      }
      state.pos += match3[0].length;
      return true;
    }
  } else {
    match3 = state.src.slice(pos).match(NAMED_RE);
    if (match3) {
      if (has(entities, match3[1])) {
        if (!silent) {
          token2 = state.push("text_special", "", 0);
          token2.content = entities[match3[1]];
          token2.markup = match3[0];
          token2.info = "entity";
        }
        state.pos += match3[0].length;
        return true;
      }
    }
  }
  return false;
};
function processDelimiters(state, delimiters) {
  var closerIdx, openerIdx, closer, opener, minOpenerIdx, newMinOpenerIdx, isOddMatch, lastJump, openersBottom = {}, max2 = delimiters.length;
  if (!max2)
    return;
  var headerIdx = 0;
  var lastTokenIdx = -2;
  var jumps = [];
  for (closerIdx = 0; closerIdx < max2; closerIdx++) {
    closer = delimiters[closerIdx];
    jumps.push(0);
    if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {
      headerIdx = closerIdx;
    }
    lastTokenIdx = closer.token;
    closer.length = closer.length || 0;
    if (!closer.close)
      continue;
    if (!openersBottom.hasOwnProperty(closer.marker)) {
      openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];
    }
    minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];
    openerIdx = headerIdx - jumps[headerIdx] - 1;
    newMinOpenerIdx = openerIdx;
    for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {
      opener = delimiters[openerIdx];
      if (opener.marker !== closer.marker)
        continue;
      if (opener.open && opener.end < 0) {
        isOddMatch = false;
        if (opener.close || closer.open) {
          if ((opener.length + closer.length) % 3 === 0) {
            if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {
              isOddMatch = true;
            }
          }
        }
        if (!isOddMatch) {
          lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0;
          jumps[closerIdx] = closerIdx - openerIdx + lastJump;
          jumps[openerIdx] = lastJump;
          closer.open = false;
          opener.end = closerIdx;
          opener.close = false;
          newMinOpenerIdx = -1;
          lastTokenIdx = -2;
          break;
        }
      }
    }
    if (newMinOpenerIdx !== -1) {
      openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;
    }
  }
}
var balance_pairs = function link_pairs(state) {
  var curr, tokens_meta = state.tokens_meta, max2 = state.tokens_meta.length;
  processDelimiters(state, state.delimiters);
  for (curr = 0; curr < max2; curr++) {
    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {
      processDelimiters(state, tokens_meta[curr].delimiters);
    }
  }
};
var fragments_join = function fragments_join2(state) {
  var curr, last, level = 0, tokens = state.tokens, max2 = state.tokens.length;
  for (curr = last = 0; curr < max2; curr++) {
    if (tokens[curr].nesting < 0)
      level--;
    tokens[curr].level = level;
    if (tokens[curr].nesting > 0)
      level++;
    if (tokens[curr].type === "text" && curr + 1 < max2 && tokens[curr + 1].type === "text") {
      tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;
    } else {
      if (curr !== last) {
        tokens[last] = tokens[curr];
      }
      last++;
    }
  }
  if (curr !== last) {
    tokens.length = last;
  }
};
var Token = token;
var isWhiteSpace$1 = utils$1.isWhiteSpace;
var isPunctChar = utils$1.isPunctChar;
var isMdAsciiPunct = utils$1.isMdAsciiPunct;
function StateInline(src, md, env, outTokens) {
  this.src = src;
  this.env = env;
  this.md = md;
  this.tokens = outTokens;
  this.tokens_meta = Array(outTokens.length);
  this.pos = 0;
  this.posMax = this.src.length;
  this.level = 0;
  this.pending = "";
  this.pendingLevel = 0;
  this.cache = {};
  this.delimiters = [];
  this._prev_delimiters = [];
  this.backticks = {};
  this.backticksScanned = false;
  this.linkLevel = 0;
}
StateInline.prototype.pushPending = function() {
  var token2 = new Token("text", "", 0);
  token2.content = this.pending;
  token2.level = this.pendingLevel;
  this.tokens.push(token2);
  this.pending = "";
  return token2;
};
StateInline.prototype.push = function(type2, tag, nesting) {
  if (this.pending) {
    this.pushPending();
  }
  var token2 = new Token(type2, tag, nesting);
  var token_meta = null;
  if (nesting < 0) {
    this.level--;
    this.delimiters = this._prev_delimiters.pop();
  }
  token2.level = this.level;
  if (nesting > 0) {
    this.level++;
    this._prev_delimiters.push(this.delimiters);
    this.delimiters = [];
    token_meta = { delimiters: this.delimiters };
  }
  this.pendingLevel = this.level;
  this.tokens.push(token2);
  this.tokens_meta.push(token_meta);
  return token2;
};
StateInline.prototype.scanDelims = function(start, canSplitWord) {
  var pos = start, lastChar, nextChar, count, can_open, can_close, isLastWhiteSpace, isLastPunctChar, isNextWhiteSpace, isNextPunctChar, left_flanking = true, right_flanking = true, max2 = this.posMax, marker2 = this.src.charCodeAt(start);
  lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 32;
  while (pos < max2 && this.src.charCodeAt(pos) === marker2) {
    pos++;
  }
  count = pos - start;
  nextChar = pos < max2 ? this.src.charCodeAt(pos) : 32;
  isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));
  isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));
  isLastWhiteSpace = isWhiteSpace$1(lastChar);
  isNextWhiteSpace = isWhiteSpace$1(nextChar);
  if (isNextWhiteSpace) {
    left_flanking = false;
  } else if (isNextPunctChar) {
    if (!(isLastWhiteSpace || isLastPunctChar)) {
      left_flanking = false;
    }
  }
  if (isLastWhiteSpace) {
    right_flanking = false;
  } else if (isLastPunctChar) {
    if (!(isNextWhiteSpace || isNextPunctChar)) {
      right_flanking = false;
    }
  }
  if (!canSplitWord) {
    can_open = left_flanking && (!right_flanking || isLastPunctChar);
    can_close = right_flanking && (!left_flanking || isNextPunctChar);
  } else {
    can_open = left_flanking;
    can_close = right_flanking;
  }
  return {
    can_open,
    can_close,
    length: count
  };
};
StateInline.prototype.Token = Token;
var state_inline = StateInline;
var Ruler = ruler;
var _rules = [
  ["text", text],
  ["linkify", linkify2],
  ["newline", newline],
  ["escape", _escape],
  ["backticks", backticks],
  ["strikethrough", strikethrough.tokenize],
  ["emphasis", emphasis.tokenize],
  ["link", link],
  ["image", image],
  ["autolink", autolink],
  ["html_inline", html_inline],
  ["entity", entity]
];
var _rules2 = [
  ["balance_pairs", balance_pairs],
  ["strikethrough", strikethrough.postProcess],
  ["emphasis", emphasis.postProcess],
  // rules for pairs separate '**' into its own text tokens, which may be left unused,
  // rule below merges unused segments back with the rest of the text
  ["fragments_join", fragments_join]
];
function ParserInline$1() {
  var i2;
  this.ruler = new Ruler();
  for (i2 = 0; i2 < _rules.length; i2++) {
    this.ruler.push(_rules[i2][0], _rules[i2][1]);
  }
  this.ruler2 = new Ruler();
  for (i2 = 0; i2 < _rules2.length; i2++) {
    this.ruler2.push(_rules2[i2][0], _rules2[i2][1]);
  }
}
ParserInline$1.prototype.skipToken = function(state) {
  var ok, i2, pos = state.pos, rules = this.ruler.getRules(""), len = rules.length, maxNesting = state.md.options.maxNesting, cache2 = state.cache;
  if (typeof cache2[pos] !== "undefined") {
    state.pos = cache2[pos];
    return;
  }
  if (state.level < maxNesting) {
    for (i2 = 0; i2 < len; i2++) {
      state.level++;
      ok = rules[i2](state, true);
      state.level--;
      if (ok) {
        break;
      }
    }
  } else {
    state.pos = state.posMax;
  }
  if (!ok) {
    state.pos++;
  }
  cache2[pos] = state.pos;
};
ParserInline$1.prototype.tokenize = function(state) {
  var ok, i2, rules = this.ruler.getRules(""), len = rules.length, end = state.posMax, maxNesting = state.md.options.maxNesting;
  while (state.pos < end) {
    if (state.level < maxNesting) {
      for (i2 = 0; i2 < len; i2++) {
        ok = rules[i2](state, false);
        if (ok) {
          break;
        }
      }
    }
    if (ok) {
      if (state.pos >= end) {
        break;
      }
      continue;
    }
    state.pending += state.src[state.pos++];
  }
  if (state.pending) {
    state.pushPending();
  }
};
ParserInline$1.prototype.parse = function(str, md, env, outTokens) {
  var i2, rules, len;
  var state = new this.State(str, md, env, outTokens);
  this.tokenize(state);
  rules = this.ruler2.getRules("");
  len = rules.length;
  for (i2 = 0; i2 < len; i2++) {
    rules[i2](state);
  }
};
ParserInline$1.prototype.State = state_inline;
var parser_inline = ParserInline$1;
var re$1;
var hasRequiredRe;
function requireRe() {
  if (hasRequiredRe)
    return re$1;
  hasRequiredRe = 1;
  re$1 = function(opts) {
    var re2 = {};
    opts = opts || {};
    re2.src_Any = requireRegex$3().source;
    re2.src_Cc = requireRegex$2().source;
    re2.src_Z = requireRegex().source;
    re2.src_P = regex$4.source;
    re2.src_ZPCc = [re2.src_Z, re2.src_P, re2.src_Cc].join("|");
    re2.src_ZCc = [re2.src_Z, re2.src_Cc].join("|");
    var text_separators = "[><｜]";
    re2.src_pseudo_letter = "(?:(?!" + text_separators + "|" + re2.src_ZPCc + ")" + re2.src_Any + ")";
    re2.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
    re2.src_auth = "(?:(?:(?!" + re2.src_ZCc + "|[@/\\[\\]()]).)+@)?";
    re2.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?";
    re2.src_host_terminator = "(?=$|" + text_separators + "|" + re2.src_ZPCc + ")(?!" + (opts["---"] ? "-(?!--)|" : "-|") + "_|:\\d|\\.-|\\.(?!$|" + re2.src_ZPCc + "))";
    re2.src_path = "(?:[/?#](?:(?!" + re2.src_ZCc + "|" + text_separators + `|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!` + re2.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + re2.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + re2.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + re2.src_ZCc + `|["]).)+\\"|\\'(?:(?!` + re2.src_ZCc + "|[']).)+\\'|\\'(?=" + re2.src_pseudo_letter + "|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!" + re2.src_ZCc + "|[.]|$)|" + (opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + ",(?!" + re2.src_ZCc + "|$)|;(?!" + re2.src_ZCc + "|$)|\\!+(?!" + re2.src_ZCc + "|[!]|$)|\\?(?!" + re2.src_ZCc + "|[?]|$))+|\\/)?";
    re2.src_email_name = '[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*';
    re2.src_xn = "xn--[a-z0-9\\-]{1,59}";
    re2.src_domain_root = // Allow letters & digits (http://test1)
    "(?:" + re2.src_xn + "|" + re2.src_pseudo_letter + "{1,63})";
    re2.src_domain = "(?:" + re2.src_xn + "|(?:" + re2.src_pseudo_letter + ")|(?:" + re2.src_pseudo_letter + "(?:-|" + re2.src_pseudo_letter + "){0,61}" + re2.src_pseudo_letter + "))";
    re2.src_host = "(?:(?:(?:(?:" + re2.src_domain + ")\\.)*" + re2.src_domain + "))";
    re2.tpl_host_fuzzy = "(?:" + re2.src_ip4 + "|(?:(?:(?:" + re2.src_domain + ")\\.)+(?:%TLDS%)))";
    re2.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + re2.src_domain + ")\\.)+(?:%TLDS%))";
    re2.src_host_strict = re2.src_host + re2.src_host_terminator;
    re2.tpl_host_fuzzy_strict = re2.tpl_host_fuzzy + re2.src_host_terminator;
    re2.src_host_port_strict = re2.src_host + re2.src_port + re2.src_host_terminator;
    re2.tpl_host_port_fuzzy_strict = re2.tpl_host_fuzzy + re2.src_port + re2.src_host_terminator;
    re2.tpl_host_port_no_ip_fuzzy_strict = re2.tpl_host_no_ip_fuzzy + re2.src_port + re2.src_host_terminator;
    re2.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + re2.src_ZPCc + "|>|$))";
    re2.tpl_email_fuzzy = "(^|" + text_separators + '|"|\\(|' + re2.src_ZCc + ")(" + re2.src_email_name + "@" + re2.tpl_host_fuzzy_strict + ")";
    re2.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
    // but can start with > (markdown blockquote)
    "(^|(?![.:/\\-_@])(?:[$+<=>^`|｜]|" + re2.src_ZPCc + "))((?![$+<=>^`|｜])" + re2.tpl_host_port_fuzzy_strict + re2.src_path + ")";
    re2.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\- and non punctuation.
    // but can start with > (markdown blockquote)
    "(^|(?![.:/\\-_@])(?:[$+<=>^`|｜]|" + re2.src_ZPCc + "))((?![$+<=>^`|｜])" + re2.tpl_host_port_no_ip_fuzzy_strict + re2.src_path + ")";
    return re2;
  };
  return re$1;
}
function assign$1(obj) {
  var sources = Array.prototype.slice.call(arguments, 1);
  sources.forEach(function(source) {
    if (!source) {
      return;
    }
    Object.keys(source).forEach(function(key) {
      obj[key] = source[key];
    });
  });
  return obj;
}
function _class(obj) {
  return Object.prototype.toString.call(obj);
}
function isString(obj) {
  return _class(obj) === "[object String]";
}
function isObject$1(obj) {
  return _class(obj) === "[object Object]";
}
function isRegExp(obj) {
  return _class(obj) === "[object RegExp]";
}
function isFunction(obj) {
  return _class(obj) === "[object Function]";
}
function escapeRE(str) {
  return str.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
}
var defaultOptions = {
  fuzzyLink: true,
  fuzzyEmail: true,
  fuzzyIP: false
};
function isOptionsObj(obj) {
  return Object.keys(obj || {}).reduce(function(acc, k) {
    return acc || defaultOptions.hasOwnProperty(k);
  }, false);
}
var defaultSchemas = {
  "http:": {
    validate: function(text3, pos, self2) {
      var tail = text3.slice(pos);
      if (!self2.re.http) {
        self2.re.http = new RegExp(
          "^\\/\\/" + self2.re.src_auth + self2.re.src_host_port_strict + self2.re.src_path,
          "i"
        );
      }
      if (self2.re.http.test(tail)) {
        return tail.match(self2.re.http)[0].length;
      }
      return 0;
    }
  },
  "https:": "http:",
  "ftp:": "http:",
  "//": {
    validate: function(text3, pos, self2) {
      var tail = text3.slice(pos);
      if (!self2.re.no_http) {
        self2.re.no_http = new RegExp(
          "^" + self2.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'
          // with code comments
          "(?:localhost|(?:(?:" + self2.re.src_domain + ")\\.)+" + self2.re.src_domain_root + ")" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path,
          "i"
        );
      }
      if (self2.re.no_http.test(tail)) {
        if (pos >= 3 && text3[pos - 3] === ":") {
          return 0;
        }
        if (pos >= 3 && text3[pos - 3] === "/") {
          return 0;
        }
        return tail.match(self2.re.no_http)[0].length;
      }
      return 0;
    }
  },
  "mailto:": {
    validate: function(text3, pos, self2) {
      var tail = text3.slice(pos);
      if (!self2.re.mailto) {
        self2.re.mailto = new RegExp(
          "^" + self2.re.src_email_name + "@" + self2.re.src_host_strict,
          "i"
        );
      }
      if (self2.re.mailto.test(tail)) {
        return tail.match(self2.re.mailto)[0].length;
      }
      return 0;
    }
  }
};
var tlds_2ch_src_re = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]";
var tlds_default = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");
function resetScanCache(self2) {
  self2.__index__ = -1;
  self2.__text_cache__ = "";
}
function createValidator(re2) {
  return function(text3, pos) {
    var tail = text3.slice(pos);
    if (re2.test(tail)) {
      return tail.match(re2)[0].length;
    }
    return 0;
  };
}
function createNormalizer() {
  return function(match3, self2) {
    self2.normalize(match3);
  };
}
function compile(self2) {
  var re2 = self2.re = requireRe()(self2.__opts__);
  var tlds2 = self2.__tlds__.slice();
  self2.onCompile();
  if (!self2.__tlds_replaced__) {
    tlds2.push(tlds_2ch_src_re);
  }
  tlds2.push(re2.src_xn);
  re2.src_tlds = tlds2.join("|");
  function untpl(tpl) {
    return tpl.replace("%TLDS%", re2.src_tlds);
  }
  re2.email_fuzzy = RegExp(untpl(re2.tpl_email_fuzzy), "i");
  re2.link_fuzzy = RegExp(untpl(re2.tpl_link_fuzzy), "i");
  re2.link_no_ip_fuzzy = RegExp(untpl(re2.tpl_link_no_ip_fuzzy), "i");
  re2.host_fuzzy_test = RegExp(untpl(re2.tpl_host_fuzzy_test), "i");
  var aliases = [];
  self2.__compiled__ = {};
  function schemaError(name2, val) {
    throw new Error('(LinkifyIt) Invalid schema "' + name2 + '": ' + val);
  }
  Object.keys(self2.__schemas__).forEach(function(name2) {
    var val = self2.__schemas__[name2];
    if (val === null) {
      return;
    }
    var compiled = { validate: null, link: null };
    self2.__compiled__[name2] = compiled;
    if (isObject$1(val)) {
      if (isRegExp(val.validate)) {
        compiled.validate = createValidator(val.validate);
      } else if (isFunction(val.validate)) {
        compiled.validate = val.validate;
      } else {
        schemaError(name2, val);
      }
      if (isFunction(val.normalize)) {
        compiled.normalize = val.normalize;
      } else if (!val.normalize) {
        compiled.normalize = createNormalizer();
      } else {
        schemaError(name2, val);
      }
      return;
    }
    if (isString(val)) {
      aliases.push(name2);
      return;
    }
    schemaError(name2, val);
  });
  aliases.forEach(function(alias) {
    if (!self2.__compiled__[self2.__schemas__[alias]]) {
      return;
    }
    self2.__compiled__[alias].validate = self2.__compiled__[self2.__schemas__[alias]].validate;
    self2.__compiled__[alias].normalize = self2.__compiled__[self2.__schemas__[alias]].normalize;
  });
  self2.__compiled__[""] = { validate: null, normalize: createNormalizer() };
  var slist = Object.keys(self2.__compiled__).filter(function(name2) {
    return name2.length > 0 && self2.__compiled__[name2];
  }).map(escapeRE).join("|");
  self2.re.schema_test = RegExp("(^|(?!_)(?:[><｜]|" + re2.src_ZPCc + "))(" + slist + ")", "i");
  self2.re.schema_search = RegExp("(^|(?!_)(?:[><｜]|" + re2.src_ZPCc + "))(" + slist + ")", "ig");
  self2.re.schema_at_start = RegExp("^" + self2.re.schema_search.source, "i");
  self2.re.pretest = RegExp(
    "(" + self2.re.schema_test.source + ")|(" + self2.re.host_fuzzy_test.source + ")|@",
    "i"
  );
  resetScanCache(self2);
}
function Match(self2, shift2) {
  var start = self2.__index__, end = self2.__last_index__, text3 = self2.__text_cache__.slice(start, end);
  this.schema = self2.__schema__.toLowerCase();
  this.index = start + shift2;
  this.lastIndex = end + shift2;
  this.raw = text3;
  this.text = text3;
  this.url = text3;
}
function createMatch(self2, shift2) {
  var match3 = new Match(self2, shift2);
  self2.__compiled__[match3.schema].normalize(match3, self2);
  return match3;
}
function LinkifyIt$1(schemas, options2) {
  if (!(this instanceof LinkifyIt$1)) {
    return new LinkifyIt$1(schemas, options2);
  }
  if (!options2) {
    if (isOptionsObj(schemas)) {
      options2 = schemas;
      schemas = {};
    }
  }
  this.__opts__ = assign$1({}, defaultOptions, options2);
  this.__index__ = -1;
  this.__last_index__ = -1;
  this.__schema__ = "";
  this.__text_cache__ = "";
  this.__schemas__ = assign$1({}, defaultSchemas, schemas);
  this.__compiled__ = {};
  this.__tlds__ = tlds_default;
  this.__tlds_replaced__ = false;
  this.re = {};
  compile(this);
}
LinkifyIt$1.prototype.add = function add2(schema, definition) {
  this.__schemas__[schema] = definition;
  compile(this);
  return this;
};
LinkifyIt$1.prototype.set = function set2(options2) {
  this.__opts__ = assign$1(this.__opts__, options2);
  return this;
};
LinkifyIt$1.prototype.test = function test(text3) {
  this.__text_cache__ = text3;
  this.__index__ = -1;
  if (!text3.length) {
    return false;
  }
  var m2, ml, me, len, shift2, next, re2, tld_pos, at_pos;
  if (this.re.schema_test.test(text3)) {
    re2 = this.re.schema_search;
    re2.lastIndex = 0;
    while ((m2 = re2.exec(text3)) !== null) {
      len = this.testSchemaAt(text3, m2[2], re2.lastIndex);
      if (len) {
        this.__schema__ = m2[2];
        this.__index__ = m2.index + m2[1].length;
        this.__last_index__ = m2.index + m2[0].length + len;
        break;
      }
    }
  }
  if (this.__opts__.fuzzyLink && this.__compiled__["http:"]) {
    tld_pos = text3.search(this.re.host_fuzzy_test);
    if (tld_pos >= 0) {
      if (this.__index__ < 0 || tld_pos < this.__index__) {
        if ((ml = text3.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {
          shift2 = ml.index + ml[1].length;
          if (this.__index__ < 0 || shift2 < this.__index__) {
            this.__schema__ = "";
            this.__index__ = shift2;
            this.__last_index__ = ml.index + ml[0].length;
          }
        }
      }
    }
  }
  if (this.__opts__.fuzzyEmail && this.__compiled__["mailto:"]) {
    at_pos = text3.indexOf("@");
    if (at_pos >= 0) {
      if ((me = text3.match(this.re.email_fuzzy)) !== null) {
        shift2 = me.index + me[1].length;
        next = me.index + me[0].length;
        if (this.__index__ < 0 || shift2 < this.__index__ || shift2 === this.__index__ && next > this.__last_index__) {
          this.__schema__ = "mailto:";
          this.__index__ = shift2;
          this.__last_index__ = next;
        }
      }
    }
  }
  return this.__index__ >= 0;
};
LinkifyIt$1.prototype.pretest = function pretest(text3) {
  return this.re.pretest.test(text3);
};
LinkifyIt$1.prototype.testSchemaAt = function testSchemaAt(text3, schema, pos) {
  if (!this.__compiled__[schema.toLowerCase()]) {
    return 0;
  }
  return this.__compiled__[schema.toLowerCase()].validate(text3, pos, this);
};
LinkifyIt$1.prototype.match = function match2(text3) {
  var shift2 = 0, result = [];
  if (this.__index__ >= 0 && this.__text_cache__ === text3) {
    result.push(createMatch(this, shift2));
    shift2 = this.__last_index__;
  }
  var tail = shift2 ? text3.slice(shift2) : text3;
  while (this.test(tail)) {
    result.push(createMatch(this, shift2));
    tail = tail.slice(this.__last_index__);
    shift2 += this.__last_index__;
  }
  if (result.length) {
    return result;
  }
  return null;
};
LinkifyIt$1.prototype.matchAtStart = function matchAtStart(text3) {
  this.__text_cache__ = text3;
  this.__index__ = -1;
  if (!text3.length)
    return null;
  var m2 = this.re.schema_at_start.exec(text3);
  if (!m2)
    return null;
  var len = this.testSchemaAt(text3, m2[2], m2[0].length);
  if (!len)
    return null;
  this.__schema__ = m2[2];
  this.__index__ = m2.index + m2[1].length;
  this.__last_index__ = m2.index + m2[0].length + len;
  return createMatch(this, 0);
};
LinkifyIt$1.prototype.tlds = function tlds(list3, keepOld) {
  list3 = Array.isArray(list3) ? list3 : [list3];
  if (!keepOld) {
    this.__tlds__ = list3.slice();
    this.__tlds_replaced__ = true;
    compile(this);
    return this;
  }
  this.__tlds__ = this.__tlds__.concat(list3).sort().filter(function(el2, idx, arr) {
    return el2 !== arr[idx - 1];
  }).reverse();
  compile(this);
  return this;
};
LinkifyIt$1.prototype.normalize = function normalize3(match3) {
  if (!match3.schema) {
    match3.url = "http://" + match3.url;
  }
  if (match3.schema === "mailto:" && !/^mailto:/i.test(match3.url)) {
    match3.url = "mailto:" + match3.url;
  }
};
LinkifyIt$1.prototype.onCompile = function onCompile() {
};
var linkifyIt = LinkifyIt$1;
const maxInt = 2147483647;
const base = 36;
const tMin = 1;
const tMax = 26;
const skew = 38;
const damp = 700;
const initialBias = 72;
const initialN = 128;
const delimiter = "-";
const regexPunycode = /^xn--/;
const regexNonASCII = /[^\0-\x7F]/;
const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g;
const errors = {
  "overflow": "Overflow: input needs wider integers to process",
  "not-basic": "Illegal input >= 0x80 (not a basic code point)",
  "invalid-input": "Invalid input"
};
const baseMinusTMin = base - tMin;
const floor = Math.floor;
const stringFromCharCode = String.fromCharCode;
function error(type2) {
  throw new RangeError(errors[type2]);
}
function map$1(array, callback) {
  const result = [];
  let length2 = array.length;
  while (length2--) {
    result[length2] = callback(array[length2]);
  }
  return result;
}
function mapDomain(domain, callback) {
  const parts2 = domain.split("@");
  let result = "";
  if (parts2.length > 1) {
    result = parts2[0] + "@";
    domain = parts2[1];
  }
  domain = domain.replace(regexSeparators, ".");
  const labels = domain.split(".");
  const encoded = map$1(labels, callback).join(".");
  return result + encoded;
}
function ucs2decode(string) {
  const output = [];
  let counter = 0;
  const length2 = string.length;
  while (counter < length2) {
    const value = string.charCodeAt(counter++);
    if (value >= 55296 && value <= 56319 && counter < length2) {
      const extra = string.charCodeAt(counter++);
      if ((extra & 64512) == 56320) {
        output.push(((value & 1023) << 10) + (extra & 1023) + 65536);
      } else {
        output.push(value);
        counter--;
      }
    } else {
      output.push(value);
    }
  }
  return output;
}
const ucs2encode = (codePoints) => String.fromCodePoint(...codePoints);
const basicToDigit = function(codePoint) {
  if (codePoint >= 48 && codePoint < 58) {
    return 26 + (codePoint - 48);
  }
  if (codePoint >= 65 && codePoint < 91) {
    return codePoint - 65;
  }
  if (codePoint >= 97 && codePoint < 123) {
    return codePoint - 97;
  }
  return base;
};
const digitToBasic = function(digit, flag) {
  return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
};
const adapt = function(delta2, numPoints, firstTime) {
  let k = 0;
  delta2 = firstTime ? floor(delta2 / damp) : delta2 >> 1;
  delta2 += floor(delta2 / numPoints);
  for (; delta2 > baseMinusTMin * tMax >> 1; k += base) {
    delta2 = floor(delta2 / baseMinusTMin);
  }
  return floor(k + (baseMinusTMin + 1) * delta2 / (delta2 + skew));
};
const decode$2 = function(input) {
  const output = [];
  const inputLength = input.length;
  let i2 = 0;
  let n = initialN;
  let bias = initialBias;
  let basic = input.lastIndexOf(delimiter);
  if (basic < 0) {
    basic = 0;
  }
  for (let j = 0; j < basic; ++j) {
    if (input.charCodeAt(j) >= 128) {
      error("not-basic");
    }
    output.push(input.charCodeAt(j));
  }
  for (let index2 = basic > 0 ? basic + 1 : 0; index2 < inputLength; ) {
    const oldi = i2;
    for (let w2 = 1, k = base; ; k += base) {
      if (index2 >= inputLength) {
        error("invalid-input");
      }
      const digit = basicToDigit(input.charCodeAt(index2++));
      if (digit >= base) {
        error("invalid-input");
      }
      if (digit > floor((maxInt - i2) / w2)) {
        error("overflow");
      }
      i2 += digit * w2;
      const t2 = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
      if (digit < t2) {
        break;
      }
      const baseMinusT = base - t2;
      if (w2 > floor(maxInt / baseMinusT)) {
        error("overflow");
      }
      w2 *= baseMinusT;
    }
    const out = output.length + 1;
    bias = adapt(i2 - oldi, out, oldi == 0);
    if (floor(i2 / out) > maxInt - n) {
      error("overflow");
    }
    n += floor(i2 / out);
    i2 %= out;
    output.splice(i2++, 0, n);
  }
  return String.fromCodePoint(...output);
};
const encode$2 = function(input) {
  const output = [];
  input = ucs2decode(input);
  const inputLength = input.length;
  let n = initialN;
  let delta2 = 0;
  let bias = initialBias;
  for (const currentValue of input) {
    if (currentValue < 128) {
      output.push(stringFromCharCode(currentValue));
    }
  }
  const basicLength = output.length;
  let handledCPCount = basicLength;
  if (basicLength) {
    output.push(delimiter);
  }
  while (handledCPCount < inputLength) {
    let m2 = maxInt;
    for (const currentValue of input) {
      if (currentValue >= n && currentValue < m2) {
        m2 = currentValue;
      }
    }
    const handledCPCountPlusOne = handledCPCount + 1;
    if (m2 - n > floor((maxInt - delta2) / handledCPCountPlusOne)) {
      error("overflow");
    }
    delta2 += (m2 - n) * handledCPCountPlusOne;
    n = m2;
    for (const currentValue of input) {
      if (currentValue < n && ++delta2 > maxInt) {
        error("overflow");
      }
      if (currentValue === n) {
        let q = delta2;
        for (let k = base; ; k += base) {
          const t2 = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
          if (q < t2) {
            break;
          }
          const qMinusT = q - t2;
          const baseMinusT = base - t2;
          output.push(
            stringFromCharCode(digitToBasic(t2 + qMinusT % baseMinusT, 0))
          );
          q = floor(qMinusT / baseMinusT);
        }
        output.push(stringFromCharCode(digitToBasic(q, 0)));
        bias = adapt(delta2, handledCPCountPlusOne, handledCPCount === basicLength);
        delta2 = 0;
        ++handledCPCount;
      }
    }
    ++delta2;
    ++n;
  }
  return output.join("");
};
const toUnicode = function(input) {
  return mapDomain(input, function(string) {
    return regexPunycode.test(string) ? decode$2(string.slice(4).toLowerCase()) : string;
  });
};
const toASCII = function(input) {
  return mapDomain(input, function(string) {
    return regexNonASCII.test(string) ? "xn--" + encode$2(string) : string;
  });
};
const punycode$1 = {
  /**
   * A string representing the current Punycode.js version number.
   * @memberOf punycode
   * @type String
   */
  "version": "2.1.0",
  /**
   * An object of methods to convert from JavaScript's internal character
   * representation (UCS-2) to Unicode code points, and back.
   * @see <https://mathiasbynens.be/notes/javascript-encoding>
   * @memberOf punycode
   * @type Object
   */
  "ucs2": {
    "decode": ucs2decode,
    "encode": ucs2encode
  },
  "decode": decode$2,
  "encode": encode$2,
  "toASCII": toASCII,
  "toUnicode": toUnicode
};
const punycode_es6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  decode: decode$2,
  default: punycode$1,
  encode: encode$2,
  toASCII,
  toUnicode,
  ucs2decode,
  ucs2encode
}, Symbol.toStringTag, { value: "Module" }));
const require$$8 = /* @__PURE__ */ getAugmentedNamespace(punycode_es6);
var _default = {
  options: {
    html: false,
    // Enable HTML tags in source
    xhtmlOut: false,
    // Use '/' to close single tags (<br />)
    breaks: false,
    // Convert '\n' in paragraphs into <br>
    langPrefix: "language-",
    // CSS language prefix for fenced blocks
    linkify: false,
    // autoconvert URL-like texts to links
    // Enable some language-neutral replacements + quotes beautification
    typographer: false,
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
    // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
    quotes: "“”‘’",
    /* “”‘’ */
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externaly.
    // If result starts with <pre... internal wrapper is skipped.
    //
    // function (/*str, lang*/) { return ''; }
    //
    highlight: null,
    maxNesting: 100
    // Internal protection, recursion limit
  },
  components: {
    core: {},
    block: {},
    inline: {}
  }
};
var zero = {
  options: {
    html: false,
    // Enable HTML tags in source
    xhtmlOut: false,
    // Use '/' to close single tags (<br />)
    breaks: false,
    // Convert '\n' in paragraphs into <br>
    langPrefix: "language-",
    // CSS language prefix for fenced blocks
    linkify: false,
    // autoconvert URL-like texts to links
    // Enable some language-neutral replacements + quotes beautification
    typographer: false,
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
    // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
    quotes: "“”‘’",
    /* “”‘’ */
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externaly.
    // If result starts with <pre... internal wrapper is skipped.
    //
    // function (/*str, lang*/) { return ''; }
    //
    highlight: null,
    maxNesting: 20
    // Internal protection, recursion limit
  },
  components: {
    core: {
      rules: [
        "normalize",
        "block",
        "inline",
        "text_join"
      ]
    },
    block: {
      rules: [
        "paragraph"
      ]
    },
    inline: {
      rules: [
        "text"
      ],
      rules2: [
        "balance_pairs",
        "fragments_join"
      ]
    }
  }
};
var commonmark = {
  options: {
    html: true,
    // Enable HTML tags in source
    xhtmlOut: true,
    // Use '/' to close single tags (<br />)
    breaks: false,
    // Convert '\n' in paragraphs into <br>
    langPrefix: "language-",
    // CSS language prefix for fenced blocks
    linkify: false,
    // autoconvert URL-like texts to links
    // Enable some language-neutral replacements + quotes beautification
    typographer: false,
    // Double + single quotes replacement pairs, when typographer enabled,
    // and smartquotes on. Could be either a String or an Array.
    //
    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
    // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
    quotes: "“”‘’",
    /* “”‘’ */
    // Highlighter function. Should return escaped HTML,
    // or '' if the source string is not changed and should be escaped externaly.
    // If result starts with <pre... internal wrapper is skipped.
    //
    // function (/*str, lang*/) { return ''; }
    //
    highlight: null,
    maxNesting: 20
    // Internal protection, recursion limit
  },
  components: {
    core: {
      rules: [
        "normalize",
        "block",
        "inline",
        "text_join"
      ]
    },
    block: {
      rules: [
        "blockquote",
        "code",
        "fence",
        "heading",
        "hr",
        "html_block",
        "lheading",
        "list",
        "reference",
        "paragraph"
      ]
    },
    inline: {
      rules: [
        "autolink",
        "backticks",
        "emphasis",
        "entity",
        "escape",
        "html_inline",
        "image",
        "link",
        "newline",
        "text"
      ],
      rules2: [
        "balance_pairs",
        "emphasis",
        "fragments_join"
      ]
    }
  }
};
var utils = utils$1;
var helpers = helpers$1;
var Renderer = renderer;
var ParserCore = parser_core;
var ParserBlock = parser_block;
var ParserInline = parser_inline;
var LinkifyIt = linkifyIt;
var mdurl = mdurl$1;
var punycode = require$$8;
var config$1 = {
  default: _default,
  zero,
  commonmark
};
var BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;
var GOOD_DATA_RE = /^data:image\/(gif|png|jpeg|webp);/;
function validateLink(url2) {
  var str = url2.trim().toLowerCase();
  return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;
}
var RECODE_HOSTNAME_FOR = ["http:", "https:", "mailto:"];
function normalizeLink(url2) {
  var parsed = mdurl.parse(url2, true);
  if (parsed.hostname) {
    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
      try {
        parsed.hostname = punycode.toASCII(parsed.hostname);
      } catch (er) {
      }
    }
  }
  return mdurl.encode(mdurl.format(parsed));
}
function normalizeLinkText(url2) {
  var parsed = mdurl.parse(url2, true);
  if (parsed.hostname) {
    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {
      try {
        parsed.hostname = punycode.toUnicode(parsed.hostname);
      } catch (er) {
      }
    }
  }
  return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + "%");
}
function MarkdownIt$1(presetName, options2) {
  if (!(this instanceof MarkdownIt$1)) {
    return new MarkdownIt$1(presetName, options2);
  }
  if (!options2) {
    if (!utils.isString(presetName)) {
      options2 = presetName || {};
      presetName = "default";
    }
  }
  this.inline = new ParserInline();
  this.block = new ParserBlock();
  this.core = new ParserCore();
  this.renderer = new Renderer();
  this.linkify = new LinkifyIt();
  this.validateLink = validateLink;
  this.normalizeLink = normalizeLink;
  this.normalizeLinkText = normalizeLinkText;
  this.utils = utils;
  this.helpers = utils.assign({}, helpers);
  this.options = {};
  this.configure(presetName);
  if (options2) {
    this.set(options2);
  }
}
MarkdownIt$1.prototype.set = function(options2) {
  utils.assign(this.options, options2);
  return this;
};
MarkdownIt$1.prototype.configure = function(presets) {
  var self2 = this, presetName;
  if (utils.isString(presets)) {
    presetName = presets;
    presets = config$1[presetName];
    if (!presets) {
      throw new Error('Wrong `markdown-it` preset "' + presetName + '", check name');
    }
  }
  if (!presets) {
    throw new Error("Wrong `markdown-it` preset, can't be empty");
  }
  if (presets.options) {
    self2.set(presets.options);
  }
  if (presets.components) {
    Object.keys(presets.components).forEach(function(name2) {
      if (presets.components[name2].rules) {
        self2[name2].ruler.enableOnly(presets.components[name2].rules);
      }
      if (presets.components[name2].rules2) {
        self2[name2].ruler2.enableOnly(presets.components[name2].rules2);
      }
    });
  }
  return this;
};
MarkdownIt$1.prototype.enable = function(list3, ignoreInvalid) {
  var result = [];
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  ["core", "block", "inline"].forEach(function(chain) {
    result = result.concat(this[chain].ruler.enable(list3, true));
  }, this);
  result = result.concat(this.inline.ruler2.enable(list3, true));
  var missed = list3.filter(function(name2) {
    return result.indexOf(name2) < 0;
  });
  if (missed.length && !ignoreInvalid) {
    throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + missed);
  }
  return this;
};
MarkdownIt$1.prototype.disable = function(list3, ignoreInvalid) {
  var result = [];
  if (!Array.isArray(list3)) {
    list3 = [list3];
  }
  ["core", "block", "inline"].forEach(function(chain) {
    result = result.concat(this[chain].ruler.disable(list3, true));
  }, this);
  result = result.concat(this.inline.ruler2.disable(list3, true));
  var missed = list3.filter(function(name2) {
    return result.indexOf(name2) < 0;
  });
  if (missed.length && !ignoreInvalid) {
    throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + missed);
  }
  return this;
};
MarkdownIt$1.prototype.use = function(plugin) {
  var args = [this].concat(Array.prototype.slice.call(arguments, 1));
  plugin.apply(plugin, args);
  return this;
};
MarkdownIt$1.prototype.parse = function(src, env) {
  if (typeof src !== "string") {
    throw new Error("Input data should be a String");
  }
  var state = new this.core.State(src, this, env);
  this.core.process(state);
  return state.tokens;
};
MarkdownIt$1.prototype.render = function(src, env) {
  env = env || {};
  return this.renderer.render(this.parse(src, env), this.options, env);
};
MarkdownIt$1.prototype.parseInline = function(src, env) {
  var state = new this.core.State(src, this, env);
  state.inlineMode = true;
  this.core.process(state);
  return state.tokens;
};
MarkdownIt$1.prototype.renderInline = function(src, env) {
  env = env || {};
  return this.renderer.render(this.parseInline(src, env), this.options, env);
};
var lib$3 = MarkdownIt$1;
(function(module) {
  module.exports = lib$3;
})(markdownIt);
const MarkdownIt = /* @__PURE__ */ getDefaultExportFromCjs$1(markdownItExports);
let mapping = {};
const splitWithSpace = (s2) => s2 ? s2.split(" ") : [];
const toArray = (a2) => Array.isArray(a2) ? a2 : [a2];
function parseTokens(tokens) {
  tokens.forEach((token2) => {
    if (/(_open$|image|code_inline)/.test(token2.type) && mapping[token2.tag]) {
      const orig = splitWithSpace(token2.attrGet("class"));
      const addition = toArray(mapping[token2.tag]);
      token2.attrSet("class", [...orig, ...addition].join(" "));
    }
    if (token2.children) {
      parseTokens(token2.children);
    }
  });
}
function parseState(state) {
  parseTokens(state.tokens);
}
function markdownitTagToClass(md, _mapping) {
  mapping = _mapping || {};
  md.core.ruler.push("markdownit-tag-to-class", parseState);
}
var markdownItClass = markdownitTagToClass;
const defaultClasses = {
  h1: ["font-medium", "text-4xl", "mb-6"],
  h2: ["font-medium", "text-3xl", "mb-5"],
  h3: ["font-medium", "text-2xl", "mb-4"],
  h4: ["font-medium", "text-1xl", "mb-3"],
  h5: ["font-medium", "text-sm", "mb-3"],
  h6: ["font-medium", "text-xs", "mb-3"],
  p: ["my-3 first:mt-0 text-sm mb-4"],
  pre: ["rounded p-3 bg-white mb-2"],
  code: ["font-medium rounded text-sm px-[4px] py-[2px]"],
  a: ["text-blue-500", "hover:underline text-sm"],
  ul: ["list-disc pl-6 my-3 text-sm"],
  ol: ["list-decimal pl-6 my-3 text-sm"]
};
const buildClasses = (options2) => {
  const _classes = defaultClasses;
  const buildFlat = (value) => {
    if (lodashExports.isArray(value)) {
      return lodashExports.flatten(value).map((arrValue) => arrValue.split(" "));
    }
    return (value == null ? void 0 : value.split(" ")) ?? [];
  };
  if (options2.classes) {
    return lodashExports.mapValues(_classes, (defaultValue, key) => {
      const inputClasses = buildFlat(options2.classes[key]);
      if (options2.classes.overwrite)
        return lodashExports.flatten([...inputClasses]);
      return lodashExports.flatten([...buildFlat(defaultValue), ...inputClasses]);
    });
  }
  return _classes;
};
const useMarkdown = (target2, text3, options2 = {}) => {
  const normalizedOptions = {
    ...options2,
    openExternal: options2.openExternal ?? true
  };
  const classes = buildClasses(normalizedOptions);
  const md = new MarkdownIt({
    html: true,
    linkify: true,
    highlight(str) {
      return `<pre class="${classes.pre.join(" ")}"><code>${str}</code></pre>`;
    }
  });
  md.use(markdownItClass, classes);
  if (normalizedOptions.openExternal) {
    const open = useExternalLink();
    whenever(target2, () => {
      useEventListener(target2, "click", (e) => {
        const link4 = e.target.closest("a[href]");
        if (!link4) {
          return;
        }
        e.preventDefault();
        const url2 = link4.getAttribute("href");
        if (url2) {
          open(url2);
        }
      });
    });
  }
  return {
    markdown: computed(() => md.render(unref(text3), { sanitize: true }))
  };
};
const _hoisted_1$1I = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 14 14",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1t = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 2.07143L12.2929 1.36432C12.5789 1.07832 13.009 0.992768 13.3827 1.14755C13.7564 1.30233 14 1.66697 14 2.07143H13ZM13 4.64286H14C14 5.19514 13.5523 5.64286 13 5.64286V4.64286ZM10.4286 4.64286V5.64286C10.0241 5.64286 9.65947 5.39922 9.50469 5.02554C9.34991 4.65187 9.43547 4.22175 9.72146 3.93575L10.4286 4.64286ZM11.5998 8.96396C11.817 8.45615 12.4047 8.22053 12.9125 8.43768C13.4203 8.65483 13.6559 9.24253 13.4387 9.75033L11.5998 8.96396ZM14 2.07143V4.64286H12V2.07143H14ZM7 2C4.23858 2 2 4.23858 2 7H0C0 3.13401 3.13401 0 7 0V2ZM11.5998 5.03604C10.8357 3.24906 9.06255 2 7 2V0C9.89132 0 12.371 1.75275 13.4387 4.24967L11.5998 5.03604ZM13 5.64286H12.5193V3.64286H13V5.64286ZM12.5193 5.64286H10.4286V3.64286H12.5193V5.64286ZM2 7C2 8.38099 2.55855 9.62962 3.46447 10.5355L2.05025 11.9497C0.784597 10.6841 0 8.93272 0 7H2ZM3.46447 10.5355C4.37038 11.4415 5.61901 12 7 12V14C5.06728 14 3.31591 13.2154 2.05025 11.9497L3.46447 10.5355ZM7 12C9.06255 12 10.8357 10.7509 11.5998 8.96396L13.4387 9.75033C12.371 12.2472 9.89132 14 7 14V12ZM9.72146 3.93575L12.2929 1.36432L13.7071 2.77854L11.1357 5.34996L9.72146 3.93575Z",
  fill: "#1B1E2E",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1f = [
  _hoisted_2$1t
];
function render$O(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1I, _hoisted_3$1f);
}
const RefreshIcon = { name: "cy-refresh_x16", render: render$O };
const _hoisted_1$1H = ["innerHTML"];
const _sfc_main$1b = /* @__PURE__ */ defineComponent({
  __name: "Warning",
  props: {
    title: null,
    message: null,
    details: { default: void 0 },
    modelValue: { type: Boolean, default: true },
    dismissible: { type: Boolean, default: true },
    retryable: { type: Boolean, default: false }
  },
  emits: ["update:modelValue", "retry"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const { modelValue: show } = useVModels(props, emits);
    const markdownTarget = ref();
    let message = computed(() => {
      if (props.details) {
        return [props.message, `        ${props.details}`].join("\n\n");
      }
      return props.message;
    });
    const { markdown } = useMarkdown(markdownTarget, message.value, { classes: { code: ["bg-warning-200"] } });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$1i, {
        modelValue: unref(show),
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(show) ? show.value = $event : null),
        dismissible: __props.dismissible,
        status: "warning",
        "data-cy": "warning-alert",
        "icon-classes": "icon-dark-orange-400 h-[16px] w-[16px]",
        title: __props.title,
        icon: unref(ErrorOutlineIcon)
      }, {
        default: withCtx(() => [
          createBaseVNode("div", {
            ref_key: "markdownTarget",
            ref: markdownTarget,
            class: "warning-markdown",
            innerHTML: unref(markdown)
          }, null, 8, _hoisted_1$1H),
          __props.retryable ? (openBlock(), createBlock(_sfc_main$1t, {
            key: 0,
            size: "md",
            "prefix-icon": unref(RefreshIcon),
            "prefix-icon-class": "icon-dark-white",
            onClick: _cache[0] || (_cache[0] = ($event) => emits("retry"))
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("warnings.retry")), 1)
            ]),
            _: 1
          }, 8, ["prefix-icon"])) : createCommentVNode("", true)
        ]),
        _: 1
      }, 8, ["modelValue", "dismissible", "title", "icon"]);
    };
  }
});
const Warning_vue_vue_type_style_index_0_lang = "";
const _sfc_main$1a = /* @__PURE__ */ defineComponent({
  __name: "WarningList",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
fragment WarningList on Query {
  warnings {
    id
    ...WarningContent
  }
}`;
    gql`
mutation WarningList_removeWarning($id: ID!) {
  dismissWarning(id: $id) {
    warnings {
      id
      ...WarningContent
    }
  }
}
`;
    gql`
mutation WarningList_pingBaseUrl {
  pingBaseUrl {
    warnings {
      id
      ...WarningContent
    }
  }
}
`;
    const pingBaseUrlMutation = useMutation(WarningList_PingBaseUrlDocument);
    const dismissWarning = useMutation(WarningList_RemoveWarningDocument);
    const retryables = {
      "CANNOT_CONNECT_BASE_URL_WARNING": () => {
        pingBaseUrlMutation.executeMutation({});
      }
    };
    const dismiss = (id2) => {
      if (!dismissWarning.fetching.value) {
        dismissWarning.executeMutation({ id: id2 });
      }
    };
    const retry = (warning) => {
      var _a2;
      (_a2 = retryables[warning.errorType]) == null ? void 0 : _a2.call(retryables);
    };
    return (_ctx, _cache) => {
      return openBlock(true), createElementBlock(Fragment, null, renderList(props.gql.warnings, (warning) => {
        return openBlock(), createBlock(_sfc_main$1b, {
          key: warning.id,
          title: warning.title ?? "Warning",
          message: warning.errorMessage,
          retryable: Boolean(retryables[warning.errorType]),
          dismissible: "",
          "onUpdate:modelValue": ($event) => dismiss(warning.id),
          onRetry: ($event) => retry(warning)
        }, null, 8, ["title", "message", "retryable", "onUpdate:modelValue", "onRetry"]);
      }), 128);
    };
  }
});
const _hoisted_1$1G = ["data-cy"];
const _hoisted_2$1s = { class: "text-center text-body-gray-600 text-lg" };
const _sfc_main$19 = /* @__PURE__ */ defineComponent({
  __name: "LaunchpadHeader",
  props: {
    title: null,
    description: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("h1", {
          class: "pt-[14px] font-medium text-center text-[32px] leading-snug text-body-gray-900",
          "data-cy": `launchpad-${__props.title}`
        }, toDisplayString$1(__props.title), 9, _hoisted_1$1G),
        createBaseVNode("p", _hoisted_2$1s, toDisplayString$1(__props.description), 1)
      ], 64);
    };
  }
});
const _hoisted_1$1F = { class: "mb-5 children:relative" };
const _sfc_main$18 = /* @__PURE__ */ defineComponent({
  __name: "Wizard",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    const currentStep = ref("selectFramework");
    const setCurrentStep = (step) => {
      currentStep.value = step;
    };
    gql`
fragment Wizard on Query {
  ...ScaffoldedFiles
  ...WarningList
  wizard {
    ...EnvironmentSetup
    bundler {
      id
      type
    }
    framework {
      id
      type
    }
  }
  ...InstallDependencies
}`;
    const title = computed(() => t2(`setupWizard.${currentStep.value}.title`));
    const description = computed(() => t2(`setupWizard.${currentStep.value}.description`));
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createVNode(_sfc_main$1a, {
          gql: props.gql
        }, null, 8, ["gql"]),
        createVNode(_sfc_main$19, {
          title: unref(title),
          description: unref(description)
        }, null, 8, ["title", "description"]),
        createBaseVNode("div", _hoisted_1$1F, [
          currentStep.value === "selectFramework" ? (openBlock(), createBlock(_sfc_main$1h, {
            key: 0,
            gql: props.gql.wizard,
            "next-fn": () => setCurrentStep("installDependencies")
          }, null, 8, ["gql", "next-fn"])) : createCommentVNode("", true),
          currentStep.value === "installDependencies" ? (openBlock(), createBlock(_sfc_main$1c, {
            key: 1,
            gql: props.gql,
            "back-fn": () => setCurrentStep("selectFramework")
          }, null, 8, ["gql", "back-fn"])) : createCommentVNode("", true)
        ])
      ], 64);
    };
  }
});
const _hoisted_1$1E = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1r = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10 2C10 3.10457 9.10457 4 8 4C6.89543 4 6 3.10457 6 2C6 0.89543 6.89543 0 8 0C9.10457 0 10 0.89543 10 2Z",
  class: "icon-dark",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_3$1e = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10 8C10 9.10457 9.10457 10 8 10C6.89543 10 6 9.10457 6 8C6 6.89543 6.89543 6 8 6C9.10457 6 10 6.89543 10 8Z",
  class: "icon-dark",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_4$M = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10 14C10 15.1046 9.10457 16 8 16C6.89543 16 6 15.1046 6 14C6 12.8954 6.89543 12 8 12C9.10457 12 10 12.8954 10 14Z",
  class: "icon-dark",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_5$r = [
  _hoisted_2$1r,
  _hoisted_3$1e,
  _hoisted_4$M
];
function render$N(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1E, _hoisted_5$r);
}
const __unplugin_components_1$5 = { name: "cy-vertical-dots_x16", render: render$N };
const _hoisted_1$1D = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1q = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M10.2929 4.29289C10.1054 4.10536 9.851 4 9.58579 4H4C3.44772 4 3 4.44772 3 5V8H9.58579C9.851 8 10.1054 7.89464 10.2929 7.70711L12 6L10.2929 4.29289Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$1d = /* @__PURE__ */ createBaseVNode("path", {
  d: "M12 6L10.2929 4.29289C10.1054 4.10536 9.851 4 9.58579 4H4C3.44772 4 3 4.44772 3 5V8M12 6H20C20.5523 6 21 6.44772 21 7V19C21 19.5523 20.5523 20 20 20H4C3.44772 20 3 19.5523 3 19V8M12 6L10.2929 7.70711C10.1054 7.89464 9.851 8 9.58579 8H3",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$L = [
  _hoisted_2$1q,
  _hoisted_3$1d
];
function render$M(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1D, _hoisted_4$L);
}
const __unplugin_components_0$g = { name: "cy-folder-outline_x24", render: render$M };
const _hoisted_1$1C = { class: "border-r flex border-r-gray-100 h-[40px] text-center mr-[4px] w-[73px] items-center justify-center" };
const _hoisted_2$1p = { class: "flex-1 min-w-0" };
const _hoisted_3$1c = { class: "text-left w-full grid decoration-transparent focus:outline-none children:truncate" };
const _hoisted_4$K = { class: "font-medium leading-normal text-[16px] text-indigo-500 row-[1]" };
const _hoisted_5$q = ["title"];
const _hoisted_6$g = ["data-cy", "onClick"];
const _sfc_main$17 = /* @__PURE__ */ defineComponent({
  __name: "GlobalProjectCard",
  props: {
    gql: null
  },
  emits: ["projectSelected", "removeProject", "openInIDE", "openInFinder", "_setCurrentProject"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    gql`
mutation GlobalProjectCard_setCurrentProject($path: String!) {
  setCurrentProject(path: $path) {
    ...MainLaunchpadQueryData
  }
}
`;
    gql`
fragment GlobalProjectCard on GlobalProject {
  id
  title
  projectRoot
}
`;
    const { t: t2 } = useI18n();
    const menuItems = [
      { name: t2("globalPage.removeProject"), event: "removeProject" },
      { name: t2("globalPage.openInIDE"), event: "openInIDE" },
      { name: t2("globalPage.openInFinder"), event: "openInFinder" }
    ];
    const setCurrentProjectMutation = useMutation(GlobalProjectCard_SetCurrentProjectDocument);
    const setCurrentProject = (project) => {
      setCurrentProjectMutation.executeMutation({ path: project });
      emit2("_setCurrentProject", project);
    };
    const handleMenuClick = (eventName) => {
      switch (eventName) {
        case "removeProject":
          emit2(eventName, props.gql.projectRoot);
          break;
        case "openInIDE":
          emit2(eventName, props.gql.projectRoot);
          break;
        case "openInFinder":
          emit2(eventName, props.gql.projectRoot);
          break;
        default:
          return;
      }
    };
    return (_ctx, _cache) => {
      const _component_i_cy_folder_outline_x24 = __unplugin_components_0$g;
      const _component_i_cy_vertical_dots_x16 = __unplugin_components_1$5;
      return openBlock(), createElementBlock("div", {
        class: "bg-white border rounded cursor-pointer flex space-x-3 border-gray-100 w-full pt-[13px] pr-[4px] pb-[13px] relative items-center group hocus-default focus-within-default",
        "data-cy": "project-card",
        onClick: _cache[1] || (_cache[1] = ($event) => setCurrentProject(props.gql.projectRoot))
      }, [
        createBaseVNode("div", _hoisted_1$1C, [
          createVNode(_component_i_cy_folder_outline_x24, { class: "h-[28px] w-[24px] icon-dark-gray-500 icon-light-gray-50 group-hocus:icon-dark-indigo-400 group-hocus:icon-light-indigo-200" })
        ]),
        createBaseVNode("div", _hoisted_2$1p, [
          createBaseVNode("button", _hoisted_3$1c, [
            createBaseVNode("span", _hoisted_4$K, toDisplayString$1(props.gql.title), 1),
            createBaseVNode("span", {
              class: "text-sm text-gray-500 relative",
              title: props.gql.projectRoot
            }, toDisplayString$1(props.gql.projectRoot), 9, _hoisted_5$q)
          ])
        ]),
        createVNode(unref(Menu$1), null, {
          default: withCtx(({ open }) => [
            createVNode(unref(MenuButton), {
              "aria-label": "Project actions",
              tabindex: "-1",
              class: "flex h-[32px] text-white w-[32px] items-center justify-center focus:outline-transparent focus:text-gray-300",
              onClick: _cache[0] || (_cache[0] = withModifiers(() => {
              }, ["stop"]))
            }, {
              default: withCtx(() => [
                createVNode(_component_i_cy_vertical_dots_x16, {
                  class: normalizeClass(["transition transition-color duration-300 icon-dark-current", open ? "icon-dark-gray-700" : "group-hocus:icon-dark-gray-300"])
                }, null, 8, ["class"])
              ]),
              _: 2
            }, 1024),
            createVNode(unref(MenuItems), {
              "data-cy": "project-card-menu-items",
              class: "rounded flex flex-col outline-transparent bg-gray-900 text-white right-0 right-[18px] -bottom-[104px] z-40 absolute"
            }, {
              default: withCtx(() => [
                (openBlock(), createElementBlock(Fragment, null, renderList(menuItems, (item) => {
                  return createVNode(unref(MenuItem), {
                    key: item.name
                  }, {
                    default: withCtx(({ active }) => [
                      createBaseVNode("button", {
                        "data-cy": item.name,
                        class: normalizeClass([{ "bg-gray-700": active }, "border-b border-b-gray-800 text-left py-[8px] px-[16px]"]),
                        onClick: withModifiers(($event) => handleMenuClick(item.event), ["stop"])
                      }, toDisplayString$1(item.name), 11, _hoisted_6$g)
                    ]),
                    _: 2
                  }, 1024);
                }), 64))
              ]),
              _: 1
            })
          ]),
          _: 1
        })
      ]);
    };
  }
});
const _hoisted_1$1B = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1o = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 8H8M14 8H8M8 8V2M8 8V14",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$1b = [
  _hoisted_2$1o
];
function render$L(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1B, _hoisted_3$1b);
}
const CreateIcon = { name: "cy-add-large_x16", render: render$L };
const _hoisted_1$1A = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1n = /* @__PURE__ */ createBaseVNode("path", {
  d: "M12 7C12 8.38071 11.4404 9.63071 10.5355 10.5355C9.63071 11.4404 8.38071 12 7 12C4.23858 12 2 9.76142 2 7C2 4.23858 4.23858 2 7 2C9.76142 2 12 4.23858 12 7Z",
  class: "icon-light",
  fill: "#D0D2E0"
}, null, -1);
const _hoisted_3$1a = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10.5355 10.5355C11.4404 9.63071 12 8.38071 12 7C12 4.23858 9.76142 2 7 2C4.23858 2 2 4.23858 2 7C2 9.76142 4.23858 12 7 12C8.38071 12 9.63071 11.4404 10.5355 10.5355ZM10.5355 10.5355L14 14",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$J = [
  _hoisted_2$1n,
  _hoisted_3$1a
];
function render$K(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1A, _hoisted_4$J);
}
const __unplugin_components_0$f = { name: "cy-magnifying-glass_x16", render: render$K };
function useModelWrapper(props, emit2, name2 = "modelValue") {
  return computed({
    get: () => props[name2],
    set: (value) => {
      emit2(`update:${name2}`, value);
    }
  });
}
const _hoisted_1$1z = {
  key: 0,
  class: "flex flex-none ml-[-1px] pl-4 items-center"
};
const _hoisted_2$1m = { class: "flex items-center justify-center text-gray-500" };
const _hoisted_3$19 = ["type"];
const _hoisted_4$I = {
  key: 1,
  class: "flex flex-none mr-[-1px] pr-3 items-center"
};
const _hoisted_5$p = { class: "flex items-center justify-center text-gray-500" };
const __default__$1 = {
  inheritAttrs: false
};
const _sfc_main$16 = /* @__PURE__ */ defineComponent({
  ...__default__$1,
  __name: "Input",
  props: {
    type: { default: "text" },
    inputClasses: { default: void 0 },
    prefixIcon: { default: void 0 },
    prefixIconClasses: { default: void 0 },
    suffixIcon: { default: void 0 },
    suffixIconClasses: { default: void 0 },
    modelValue: { default: "" },
    style: { default: "" },
    hasError: { type: Boolean, default: false },
    inputRef: { type: Function, default: void 0 }
  },
  emits: ["update:modelValue"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const slots = useSlots();
    const attrs = useAttrs();
    const inputAttrs = _$1.omit(attrs, "class");
    const localValue = useModelWrapper(props, emits, "modelValue");
    const hasPrefix = computed(() => {
      return !!(slots.prefix || props.prefixIcon || props.type === "search");
    });
    const hasSuffix = computed(() => {
      return !!(slots.suffix || props.suffixIcon);
    });
    return (_ctx, _cache) => {
      var _a2;
      const _component_i_cy_magnifying_glass_x16 = __unplugin_components_0$f;
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["p-0 m-0 border-0", _ctx.$attrs.class])
      }, [
        createBaseVNode("div", {
          class: normalizeClass(["relative flex flex-row leading-tight border border-gray-100 rounded-md", [props.inputClasses, { "hocus-default focus-within-default": !__props.hasError, "border-error-300 ring-2 ring-error-100 hocus-error": __props.hasError }]])
        }, [
          unref(hasPrefix) ? (openBlock(), createElementBlock("div", _hoisted_1$1z, [
            createBaseVNode("span", _hoisted_2$1m, [
              renderSlot(_ctx.$slots, "prefix", {}, () => [
                __props.prefixIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.prefixIcon), {
                  key: 0,
                  class: normalizeClass(["pointer-events-none", __props.prefixIconClasses])
                }, null, 8, ["class"])) : __props.type === "search" ? (openBlock(), createBlock(_component_i_cy_magnifying_glass_x16, {
                  key: 1,
                  class: "icon-light-gray-50 icon-dark-gray-500"
                })) : createCommentVNode("", true)
              ], true)
            ])
          ])) : createCommentVNode("", true),
          withDirectives(createBaseVNode("input", mergeProps({
            ref: (_a2 = props.inputRef) == null ? void 0 : _a2.call(props),
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localValue) ? localValue.value = $event : null),
            style: __props.style,
            type: __props.type,
            spellcheck: false,
            class: [[{ "text-gray-800": !__props.hasError, "text-error-500": __props.hasError }], "border-0 flex-1 ml-[1px] min-w-[100px] py-[9px] pl-2 placeholder-gray-400 text-gray-800 block disabled:bg-gray-100 disabled:text-gray-400"],
            autocomplete: "off"
          }, unref(inputAttrs)), null, 16, _hoisted_3$19), [
            [vModelDynamic, unref(localValue)]
          ]),
          unref(hasSuffix) ? (openBlock(), createElementBlock("div", _hoisted_4$I, [
            createBaseVNode("span", _hoisted_5$p, [
              renderSlot(_ctx.$slots, "suffix", {}, () => [
                __props.suffixIcon ? (openBlock(), createBlock(resolveDynamicComponent(__props.suffixIcon), {
                  key: 0,
                  class: normalizeClass(["pointer-events-none", __props.suffixIconClasses])
                }, null, 8, ["class"])) : createCommentVNode("", true)
              ], true)
            ])
          ])) : createCommentVNode("", true)
        ], 2)
      ], 2);
    };
  }
});
const Input_vue_vue_type_style_index_0_scoped_71ed09a1_lang = "";
const Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$16, [["__scopeId", "data-v-71ed09a1"]]);
const _hoisted_1$1y = {
  height: "1em",
  width: "1em",
  style: { "min-width": "12px", "min-height": "12px" },
  viewBox: "0 0 12 12",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1l = /* @__PURE__ */ createBaseVNode("path", {
  d: "M1 11L11 1M1 1L11 11",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$18 = [
  _hoisted_2$1l
];
function render$J(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1y, _hoisted_3$18);
}
const __unplugin_components_2$1 = { name: "cy-delete_x12", render: render$J };
const _hoisted_1$1x = {
  height: "1em",
  width: "1em",
  style: { "min-width": "80px", "min-height": "80px" },
  viewBox: "0 0 80 80",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1k = /* @__PURE__ */ createBaseVNode("path", {
  d: "M55 33V32M26 56H24C22.3431 56 21 54.6569 21 53V52M55 28V27C55 25.3431 53.6569 24 52 24H51M21 28V27C21 25.3431 22.3431 24 24 24H25M21 48L21 45.5M21 41.5V38.5M21 34.5L21 32M29 24H32.5M36.5 24H39.5M43.5 24H47",
  stroke: "rgba(0,0,0,0.2)",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$17 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M42.5858 33.5858C42.2107 33.2107 41.702 33 41.1716 33L30 33C29.4477 33 29 33.4477 29 34V39H41.1716C41.702 39 42.2107 38.7893 42.5858 38.4142L45 36L42.5858 33.5858Z",
  fill: "#69D3A7",
  class: "icon-light"
}, null, -1);
const _hoisted_4$H = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M29 39H28H29ZM42.5858 38.4142L43.2929 39.1214L42.5858 38.4142ZM41.1716 33V32V33ZM42.5858 33.5858L43.2929 32.8787V32.8787L42.5858 33.5858ZM30 33V34V33ZM40.7071 46.7071C41.0976 46.3166 41.0976 45.6834 40.7071 45.2929C40.3166 44.9024 39.6834 44.9024 39.2929 45.2929L40.7071 46.7071ZM37.5 48.5L36.7929 47.7929C36.4024 48.1834 36.4024 48.8166 36.7929 49.2071L37.5 48.5ZM39.2929 51.7071C39.6834 52.0976 40.3166 52.0976 40.7071 51.7071C41.0976 51.3166 41.0976 50.6834 40.7071 50.2929L39.2929 51.7071ZM48.7071 45.2929C48.3166 44.9024 47.6834 44.9024 47.2929 45.2929C46.9024 45.6834 46.9024 46.3166 47.2929 46.7071L48.7071 45.2929ZM50.5 48.5L51.2071 49.2071C51.5976 48.8166 51.5976 48.1834 51.2071 47.7929L50.5 48.5ZM47.2929 50.2929C46.9024 50.6834 46.9024 51.3166 47.2929 51.7071C47.6834 52.0976 48.3166 52.0976 48.7071 51.7071L47.2929 50.2929ZM42.0238 52.7831C41.904 53.3222 42.2439 53.8564 42.7831 53.9762C43.3222 54.096 43.8564 53.7561 43.9762 53.2169L42.0238 52.7831ZM45.9762 44.2169C46.096 43.6778 45.7561 43.1436 45.2169 43.0238C44.6778 42.904 44.1436 43.2439 44.0238 43.7831L45.9762 44.2169ZM58 38V57H60V38H58ZM57 58H31V60H57V58ZM30 34H41.1716V32H30V34ZM41.8787 34.2929L44.2929 36.7071L45.7071 35.2929L43.2929 32.8787L41.8787 34.2929ZM45 37H57V35H45V37ZM44.2929 35.2929L41.8787 37.7071L43.2929 39.1214L45.7071 36.7071L44.2929 35.2929ZM30 57V39H28V57H30ZM30 39V34H28V39H30ZM41.1716 38H29V40H41.1716V38ZM41.8787 37.7071C41.6911 37.8947 41.4368 38 41.1716 38V40C41.9672 40 42.7303 39.684 43.2929 39.1214L41.8787 37.7071ZM41.1716 34C41.4368 34 41.6911 34.1054 41.8787 34.2929L43.2929 32.8787C42.7303 32.3161 41.9672 32 41.1716 32V34ZM31 58C30.4477 58 30 57.5523 30 57H28C28 58.6569 29.3431 60 31 60V58ZM58 57C58 57.5523 57.5523 58 57 58V60C58.6569 60 60 58.6569 60 57H58ZM60 38C60 36.3432 58.6569 35 57 35V37C57.5523 37 58 37.4477 58 38H60ZM30 32C28.8954 32 28 32.8955 28 34H30V34V32ZM39.2929 45.2929L36.7929 47.7929L38.2071 49.2071L40.7071 46.7071L39.2929 45.2929ZM36.7929 49.2071L39.2929 51.7071L40.7071 50.2929L38.2071 47.7929L36.7929 49.2071ZM47.2929 46.7071L49.7929 49.2071L51.2071 47.7929L48.7071 45.2929L47.2929 46.7071ZM49.7929 47.7929L47.2929 50.2929L48.7071 51.7071L51.2071 49.2071L49.7929 47.7929ZM43.9762 53.2169L45.9762 44.2169L44.0238 43.7831L42.0238 52.7831L43.9762 53.2169Z",
  fill: "#00814D"
}, null, -1);
const _hoisted_5$o = [
  _hoisted_2$1k,
  _hoisted_3$17,
  _hoisted_4$H
];
function render$I(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1x, _hoisted_5$o);
}
const __unplugin_components_0$e = { name: "cy-drag-project_x80", render: render$I };
var vue3FileSelector_commonExports = {};
var vue3FileSelector_common = {
  get exports() {
    return vue3FileSelector_commonExports;
  },
  set exports(v) {
    vue3FileSelector_commonExports = v;
  }
};
const require$$0 = /* @__PURE__ */ getAugmentedNamespace(vue_runtime_esmBundler);
(function(module) {
  module.exports = /******/
  function(modules) {
    var installedModules = {};
    function __webpack_require__(moduleId) {
      if (installedModules[moduleId]) {
        return installedModules[moduleId].exports;
      }
      var module2 = installedModules[moduleId] = {
        /******/
        i: moduleId,
        /******/
        l: false,
        /******/
        exports: {}
        /******/
      };
      modules[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
      module2.l = true;
      return module2.exports;
    }
    __webpack_require__.m = modules;
    __webpack_require__.c = installedModules;
    __webpack_require__.d = function(exports, name2, getter) {
      if (!__webpack_require__.o(exports, name2)) {
        Object.defineProperty(exports, name2, { enumerable: true, get: getter });
      }
    };
    __webpack_require__.r = function(exports) {
      if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
        Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
      }
      Object.defineProperty(exports, "__esModule", { value: true });
    };
    __webpack_require__.t = function(value, mode) {
      if (mode & 1)
        value = __webpack_require__(value);
      if (mode & 8)
        return value;
      if (mode & 4 && typeof value === "object" && value && value.__esModule)
        return value;
      var ns = /* @__PURE__ */ Object.create(null);
      __webpack_require__.r(ns);
      Object.defineProperty(ns, "default", { enumerable: true, value });
      if (mode & 2 && typeof value != "string")
        for (var key in value)
          __webpack_require__.d(ns, key, function(key2) {
            return value[key2];
          }.bind(null, key));
      return ns;
    };
    __webpack_require__.n = function(module2) {
      var getter = module2 && module2.__esModule ? (
        /******/
        function getDefault() {
          return module2["default"];
        }
      ) : (
        /******/
        function getModuleExports() {
          return module2;
        }
      );
      __webpack_require__.d(getter, "a", getter);
      return getter;
    };
    __webpack_require__.o = function(object, property) {
      return Object.prototype.hasOwnProperty.call(object, property);
    };
    __webpack_require__.p = "";
    return __webpack_require__(__webpack_require__.s = "fae3");
  }({
    /***/
    "8875": (
      /***/
      function(module2, exports, __webpack_require__) {
        var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
        (function(root2, factory) {
          {
            !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = factory, __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === "function" ? __WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__) : __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module2.exports = __WEBPACK_AMD_DEFINE_RESULT__));
          }
        })(typeof self !== "undefined" ? self : this, function() {
          function getCurrentScript() {
            var descriptor = Object.getOwnPropertyDescriptor(document, "currentScript");
            if (!descriptor && "currentScript" in document && document.currentScript) {
              return document.currentScript;
            }
            if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {
              return document.currentScript;
            }
            try {
              throw new Error();
            } catch (err) {
              var ieStackRegExp = /.*at [^(]*\((.*):(.+):(.+)\)$/ig, ffStackRegExp = /@([^@]*):(\d+):(\d+)\s*$/ig, stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack), scriptLocation = stackDetails && stackDetails[1] || false, line = stackDetails && stackDetails[2] || false, currentLocation = document.location.href.replace(document.location.hash, ""), pageSource, inlineScriptSourceRegExp, inlineScriptSource, scripts = document.getElementsByTagName("script");
              if (scriptLocation === currentLocation) {
                pageSource = document.documentElement.outerHTML;
                inlineScriptSourceRegExp = new RegExp("(?:[^\\n]+?\\n){0," + (line - 2) + "}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*", "i");
                inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, "$1").trim();
              }
              for (var i2 = 0; i2 < scripts.length; i2++) {
                if (scripts[i2].readyState === "interactive") {
                  return scripts[i2];
                }
                if (scripts[i2].src === scriptLocation) {
                  return scripts[i2];
                }
                if (scriptLocation === currentLocation && scripts[i2].innerHTML && scripts[i2].innerHTML.trim() === inlineScriptSource) {
                  return scripts[i2];
                }
              }
              return null;
            }
          }
          return getCurrentScript;
        });
      }
    ),
    /***/
    "8bbf": (
      /***/
      function(module2, exports) {
        module2.exports = require$$0;
      }
    ),
    /***/
    "fae3": (
      /***/
      function(module2, __webpack_exports__, __webpack_require__) {
        __webpack_require__.r(__webpack_exports__);
        __webpack_require__.d(__webpack_exports__, "FileSelector", function() {
          return (
            /* reexport */
            FileSelector
          );
        });
        __webpack_require__.d(__webpack_exports__, "Dropzone", function() {
          return (
            /* reexport */
            Dropzone
          );
        });
        __webpack_require__.d(__webpack_exports__, "DialogButton", function() {
          return (
            /* reexport */
            DialogButton
          );
        });
        if (typeof window !== "undefined") {
          var currentScript = window.document.currentScript;
          {
            var getCurrentScript = __webpack_require__("8875");
            currentScript = getCurrentScript();
            if (!("currentScript" in document)) {
              Object.defineProperty(document, "currentScript", { get: getCurrentScript });
            }
          }
          var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);
          if (src) {
            __webpack_require__.p = src[1];
          }
        }
        var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
        function render2(_ctx, _cache, $props, $setup, $data, $options) {
          return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [
            Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])("input", {
              style: { "display": "none" },
              type: "file",
              ref: "inputRef",
              multiple: $props.allowMultiple,
              accept: $props.accept,
              onChange: _cache[1] || (_cache[1] = (...args) => $setup.updateFiles && $setup.updateFiles(...args))
            }, null, 40, ["multiple", "accept"]),
            Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default", { openDialog: $setup.openDialog })
          ], 64);
        }
        var FileSelectorvue_type_script_lang_js = {
          emits: ["update:modelValue"],
          props: {
            modelValue: {
              type: Array,
              required: true
            },
            allowMultiple: {
              type: Boolean,
              default: true
            },
            accept: {
              type: Array,
              default: void 0
            }
          },
          setup(props, { emit: emit2 }) {
            const inputRef = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null);
            const openDialog = () => {
              inputRef.value.click();
            };
            Object(external_commonjs_vue_commonjs2_vue_root_Vue_["provide"])("openDialog", openDialog);
            Object(external_commonjs_vue_commonjs2_vue_root_Vue_["provide"])("addFiles", (files) => {
              emit2("update:modelValue", [...props.modelValue, ...files]);
            });
            const updateFiles = () => {
              emit2("update:modelValue", [...props.modelValue, ...inputRef.value.files]);
            };
            return {
              inputRef,
              openDialog,
              updateFiles
            };
          }
        };
        FileSelectorvue_type_script_lang_js.render = render2;
        var FileSelector = FileSelectorvue_type_script_lang_js;
        function Dropzonevue_type_template_id_4e1ef3e6_render(_ctx, _cache, $props, $setup, $data, $options) {
          return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])("div", {
            onDragover: _cache[1] || (_cache[1] = (...args) => $setup.handleDragover && $setup.handleDragover(...args)),
            onDrop: _cache[2] || (_cache[2] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])((...args) => $setup.handleDrop && $setup.handleDrop(...args), ["stop", "prevent"])),
            onDragleave: _cache[3] || (_cache[3] = (...args) => $setup.handleDragLeave && $setup.handleDragLeave(...args))
          }, [
            Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default", { hovered: $setup.hovered })
          ], 32);
        }
        var Dropzonevue_type_script_lang_js = {
          setup() {
            const hovered = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(false);
            const addFiles = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["inject"])("addFiles");
            const handleDrop = (evt) => {
              hovered.value = false;
              const files = Array.from(evt.dataTransfer.items).map((item) => {
                if (item.kind !== "file")
                  return null;
                return item.getAsFile();
              }).filter(Boolean);
              addFiles(files);
            };
            const handleDragover = (evt) => {
              evt.preventDefault();
              hovered.value = true;
            };
            const handleDragLeave = () => {
              hovered.value = false;
            };
            return {
              hovered,
              handleDragover,
              handleDragLeave,
              handleDrop
            };
          }
        };
        Dropzonevue_type_script_lang_js.render = Dropzonevue_type_template_id_4e1ef3e6_render;
        var Dropzone = Dropzonevue_type_script_lang_js;
        function DialogButtonvue_type_template_id_e98058c8_render(_ctx, _cache, $props, $setup, $data, $options) {
          return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])("button", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])(_ctx.$attrs, {
            onClick: _cache[1] || (_cache[1] = (...args) => $setup.openDialog && $setup.openDialog(...args))
          }), [
            Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")
          ], 16);
        }
        var DialogButtonvue_type_script_lang_js = {
          setup() {
            const openDialog = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["inject"])("openDialog");
            return {
              openDialog
            };
          }
        };
        DialogButtonvue_type_script_lang_js.render = DialogButtonvue_type_template_id_e98058c8_render;
        var DialogButton = DialogButtonvue_type_script_lang_js;
      }
    )
    /******/
  });
})(vue3FileSelector_common);
const _hoisted_1$1w = {
  class: "border-dashed bg-gray-50 border border-gray-200 rounded-[4px] h-[240px] text-center w-full min-w-[220px] p-[58px] relative block hocus-default",
  "data-cy": "dropzone"
};
const _hoisted_2$1j = { class: "font-light text-body-gray-700 text-[18px]" };
const _hoisted_3$16 = { class: "font-medium text-indigo-500 hocus-link-default" };
const _sfc_main$15 = /* @__PURE__ */ defineComponent({
  __name: "FileDropzone",
  props: {
    closeButton: { type: Boolean, default: false }
  },
  emits: ["addProject", "close"],
  setup(__props, { emit: emit2 }) {
    const { t: t2 } = useI18n();
    const projectUpload = ref();
    const files = ref([]);
    watch(files, (newVal) => {
      if (newVal == null ? void 0 : newVal.length) {
        handleFileSelection(newVal);
      }
    });
    function handleFileSelection(fileList) {
      const path = getFilePath(fileList);
      emit2("addProject", path);
      files.value = [];
    }
    function getFilePath(files2) {
      if (files2) {
        const file = files2[0];
        const path = (file == null ? void 0 : file.path) ?? "";
        return path;
      }
      return "";
    }
    function handleOpenDialog() {
      emit2("addProject", null);
    }
    onMounted(() => {
      var _a2;
      const fileRef = (_a2 = projectUpload.value) == null ? void 0 : _a2.querySelector("input[type=file]");
      fileRef == null ? void 0 : fileRef.setAttribute("webkitdirectory", "webkitdirectory");
      fileRef == null ? void 0 : fileRef.setAttribute("webkitRelativePath", "webkitRelativePath");
    });
    return (_ctx, _cache) => {
      const _component_i_cy_drag_project_x80 = __unplugin_components_0$e;
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_delete_x12 = __unplugin_components_2$1;
      return openBlock(), createElementBlock("div", {
        ref_key: "projectUpload",
        ref: projectUpload,
        class: "cursor-pointer relative"
      }, [
        createVNode(unref(vue3FileSelector_commonExports.FileSelector), {
          modelValue: files.value,
          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => files.value = $event),
          "allow-multiple": ""
        }, {
          default: withCtx(() => [
            createVNode(unref(vue3FileSelector_commonExports.Dropzone), { onClick: handleOpenDialog }, {
              default: withCtx(() => [
                createBaseVNode("div", _hoisted_1$1w, [
                  createVNode(_component_i_cy_drag_project_x80, { class: "mx-auto h-[80px] mb-[-4px] w-[80px] icon-dark-indigo-500 icon-light-indigo-200" }),
                  createBaseVNode("span", _hoisted_2$1j, [
                    createVNode(_component_i18n_t, {
                      scope: "global",
                      keypath: "globalPage.empty.dropText"
                    }, {
                      default: withCtx(() => [
                        createBaseVNode("button", _hoisted_3$16, toDisplayString$1(unref(t2)("globalPage.empty.browseManually")), 1)
                      ]),
                      _: 1
                    })
                  ])
                ])
              ]),
              _: 1
            })
          ]),
          _: 1
        }, 8, ["modelValue"]),
        __props.closeButton ? (openBlock(), createElementBlock("button", {
          key: 0,
          "aria-label": "Close",
          class: "flex outline-none h-[32px] top-[8px] right-[8px] text-gray-400 w-[32px] absolute items-center justify-center hocus:text-gray-500",
          onClick: _cache[1] || (_cache[1] = ($event) => emit2("close"))
        }, [
          createVNode(_component_i_cy_delete_x12, { class: "h-[12px] w-[12px] icon-dark-current" })
        ])) : createCommentVNode("", true)
      ], 512);
    };
  }
});
const _hoisted_1$1v = {
  xmlns: "http://www.w3.org/2000/svg",
  width: "160",
  height: "160",
  fill: "none"
};
const _hoisted_2$1i = /* @__PURE__ */ createStaticVNode('<path fill="#D0D2E0" d="M71.4 47.379H5.334v79.884h66.068V47.379Z"></path><path fill="#9095AD" d="M58.33 59.353H18.388v5.384H58.33v-5.384ZM58.33 71.249H18.388v5.383H58.33V71.25ZM58.33 82.779H18.388v5.384H58.33v-5.384Z"></path><path fill="#6470F3" d="M113.392 22.667H49.023v73.31h64.369v-73.31ZM128.689 106.013l-5.502 5.503 6.715 6.715 5.503-5.503-6.716-6.715Z"></path><path fill="#D0D2E0" d="m127.311 120.788 10.646-10.646 14.992 14.992a2.433 2.433 0 0 1 0 3.436l-7.199 7.199a2.426 2.426 0 0 1-3.436 0l-14.992-14.992-.011.011Z"></path><circle cx="106.667" cy="89.333" r="20" fill="#9095AD"></circle><path fill="#D0D2E0" d="M125.954 70.375a27.161 27.161 0 0 1 5.89 29.597 27.153 27.153 0 0 1-25.091 16.767 27.154 27.154 0 0 1-25.09-16.767 27.158 27.158 0 0 1 44.291-29.597Zm-31.43 6.988a17.295 17.295 0 1 0 24.458 0 17.283 17.283 0 0 0-18.848-3.753 17.28 17.28 0 0 0-5.61 3.753ZM69.75 34.514a6.066 6.066 0 0 1 1.953 4.765 5.607 5.607 0 0 1-1.938 4.605 7.94 7.94 0 0 1-5.145 1.589l-.127 2.366h-3.78l-.159-5.225h1.255a9.528 9.528 0 0 0 4.113-.715 2.62 2.62 0 0 0 1.445-2.589 2.89 2.89 0 0 0-.778-2.144 2.843 2.843 0 0 0-2.144-.81 2.956 2.956 0 0 0-2.192.779 2.827 2.827 0 0 0-.794 2.112h-4.066a6.542 6.542 0 0 1 .81-3.351 5.734 5.734 0 0 1 2.446-2.303 8.163 8.163 0 0 1 3.796-.842 7.464 7.464 0 0 1 5.304 1.763Zm-9.085 19.98a2.383 2.383 0 0 1-.746-1.811 2.35 2.35 0 0 1 .746-1.795 2.7 2.7 0 0 1 1.922-.73 2.59 2.59 0 0 1 1.874.73 2.413 2.413 0 0 1 .746 1.795 2.445 2.445 0 0 1-.746 1.81 2.572 2.572 0 0 1-1.874.715 2.683 2.683 0 0 1-2.001-.715h.08Z"></path>', 6);
const _hoisted_8$b = [
  _hoisted_2$1i
];
function render$H(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1v, _hoisted_8$b);
}
const NoResultsIllustration = { render: render$H };
const _hoisted_1$1u = {
  key: 0,
  "data-testid": "no-results",
  class: "text-center"
};
const _hoisted_2$1h = { class: "leading-normal text-gray-500 text-[18px]" };
const _hoisted_3$15 = {
  key: 0,
  class: "text-purple-500 truncate"
};
const _sfc_main$14 = /* @__PURE__ */ defineComponent({
  __name: "NoResults",
  props: {
    searchTerm: null,
    message: null,
    emptySearch: { type: Boolean }
  },
  emits: ["clear"],
  setup(__props, { emit: emit2 }) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      const _component_i_cy_delete_x12 = __unplugin_components_2$1;
      return __props.searchTerm || __props.emptySearch ? (openBlock(), createElementBlock("div", _hoisted_1$1u, [
        createVNode(unref(NoResultsIllustration), {
          class: "mx-auto",
          alt: ""
        }),
        createBaseVNode("p", _hoisted_2$1h, [
          createTextVNode(toDisplayString$1(__props.message || unref(t2)("noResults.defaultMessage")) + " ", 1),
          __props.searchTerm ? (openBlock(), createElementBlock("span", _hoisted_3$15, toDisplayString$1(__props.searchTerm), 1)) : createCommentVNode("", true)
        ]),
        createVNode(_sfc_main$1t, {
          "data-cy": "no-results-clear",
          class: "mx-auto mt-[20px]",
          size: "lg",
          variant: "outline",
          onClick: _cache[0] || (_cache[0] = ($event) => emit2("clear"))
        }, {
          prefix: withCtx(() => [
            createVNode(_component_i_cy_delete_x12, { class: "w-[12px] icon-dark-gray-400" })
          ]),
          default: withCtx(() => [
            createTextVNode(" " + toDisplayString$1(unref(t2)("noResults.clearSearch")), 1)
          ]),
          _: 1
        })
      ])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$1t = { class: "flex min-w-full mb-[24px] gap-[16px] col-start-1 col-end-3 items-center relative" };
const _sfc_main$13 = /* @__PURE__ */ defineComponent({
  __name: "GlobalPageHeader",
  props: {
    modelValue: null,
    projectCount: null
  },
  emits: ["update:modelValue", "addProject"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const showDropzone = ref(false);
    const { t: t2 } = useI18n();
    const localValue = useModelWrapper(props, emit2, "modelValue");
    const handleClear = () => {
      localValue.value = "";
    };
    const toggleDropzone = () => {
      showDropzone.value = !showDropzone.value;
    };
    return (_ctx, _cache) => {
      const _component_i_cy_add_large_x16 = CreateIcon;
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("div", _hoisted_1$1t, [
          createVNode(Input, {
            id: "project-search",
            modelValue: unref(localValue),
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localValue) ? localValue.value = $event : null),
            name: "project-search",
            type: "search",
            class: "grow min-w-[200px] w-85%"
          }, null, 8, ["modelValue"]),
          createBaseVNode("label", {
            for: "project-search",
            class: normalizeClass(["transition-opacity left-[42px] text-gray-400 duration-50 absolute", { "opacity-0": unref(localValue).length }])
          }, toDisplayString$1(unref(t2)("globalPage.searchPlaceholder")), 3),
          createVNode(_sfc_main$1t, {
            "aria-controls": "dropzone",
            class: "h-full text-[16px]",
            "data-cy": "addProjectButton",
            size: "lg",
            variant: showDropzone.value ? "pending" : "primary",
            "aria-expanded": showDropzone.value,
            onClick: toggleDropzone
          }, {
            prefix: withCtx(() => [
              createVNode(_component_i_cy_add_large_x16, {
                class: normalizeClass(["transform duration-150", showDropzone.value ? "icon-dark-gray-100 rotate-45" : "icon-dark-indigo-300"])
              }, null, 8, ["class"])
            ]),
            default: withCtx(() => [
              createTextVNode(" " + toDisplayString$1(unref(t2)("globalPage.addProjectButton")), 1)
            ]),
            _: 1
          }, 8, ["variant", "aria-expanded"])
        ]),
        showDropzone.value ? (openBlock(), createBlock(_sfc_main$15, {
          key: 0,
          id: "dropzone",
          "data-cy": "dropzone",
          class: "mb-[24px]",
          "close-button": "",
          onAddProject: _cache[1] || (_cache[1] = ($event) => emit2("addProject", $event)),
          onClose: toggleDropzone
        })) : createCommentVNode("", true),
        !__props.projectCount ? (openBlock(), createBlock(_sfc_main$14, {
          key: 1,
          class: "mt-[80px]",
          "search-term": unref(localValue),
          message: unref(t2)("globalPage.noResultsMessage"),
          onClear: handleClear
        }, null, 8, ["search-term", "message"])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$1s = { class: "text-center" };
const _hoisted_2$1g = { class: "mb-2 text-2rem" };
const _hoisted_3$14 = { class: "mb-6 text-lg font-light text-body-gray" };
const _sfc_main$12 = /* @__PURE__ */ defineComponent({
  __name: "GlobalEmpty",
  emits: ["addProject"],
  setup(__props, { emit: emit2 }) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("main", _hoisted_1$1s, [
        createBaseVNode("h1", _hoisted_2$1g, toDisplayString$1(unref(t2)("globalPage.empty.title")), 1),
        createBaseVNode("p", _hoisted_3$14, toDisplayString$1(unref(t2)("globalPage.empty.helper")), 1),
        createVNode(_sfc_main$15, {
          onAddProject: _cache[0] || (_cache[0] = ($event) => emit2("addProject", $event))
        })
      ]);
    };
  }
});
const _hoisted_1$1r = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$1f = /* @__PURE__ */ createBaseVNode("path", {
  d: "M3 6L6.5 9.5L3 13M9 13H13",
  stroke: "currentColor",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$13 = [
  _hoisted_2$1f
];
function render$G(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1r, _hoisted_3$13);
}
const __unplugin_components_1$4 = { name: "cy-technology-command-line_x16", render: render$G };
const _hoisted_1$1q = {
  key: 0,
  class: "flex align-center justify-center"
};
const __default__ = {
  inheritAttrs: true
};
const _sfc_main$11 = /* @__PURE__ */ defineComponent({
  ...__default__,
  __name: "Icon",
  props: {
    icon: null,
    iconClass: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return __props.icon ? (openBlock(), createElementBlock("span", _hoisted_1$1q, [
        (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
          class: normalizeClass(__props.iconClass)
        }, null, 8, ["class"]))
      ])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$1p = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 254"
};
const _hoisted_2$1e = ["id"];
const _hoisted_3$12 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FFF",
  offset: "0%"
}, null, -1);
const _hoisted_4$G = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FFF",
  "stop-opacity": "0",
  offset: "100%"
}, null, -1);
const _hoisted_5$n = [
  _hoisted_3$12,
  _hoisted_4$G
];
const _hoisted_6$f = /* @__PURE__ */ createBaseVNode("path", {
  d: "M180.828 252.605a15.872 15.872 0 0 0 12.65-.486l52.501-25.262a15.94 15.94 0 0 0 9.025-14.364V41.197a15.939 15.939 0 0 0-9.025-14.363l-52.5-25.263a15.877 15.877 0 0 0-18.115 3.084L74.857 96.35l-43.78-33.232a10.614 10.614 0 0 0-13.56.603L3.476 76.494c-4.63 4.211-4.635 11.495-.012 15.713l37.967 34.638l-37.967 34.637c-4.623 4.219-4.618 11.502.012 15.714l14.041 12.772a10.614 10.614 0 0 0 13.56.604l43.78-33.233l100.507 91.695a15.853 15.853 0 0 0 5.464 3.571zm10.464-183.649l-76.262 57.889l76.262 57.888V68.956z",
  id: "ssvg-id-visual-studio-codea"
}, null, -1);
const _hoisted_7$c = ["id"];
const _hoisted_8$a = /* @__PURE__ */ createBaseVNode("use", { "xlink:href": "#ssvg-id-visual-studio-codea" }, null, -1);
const _hoisted_9$b = [
  _hoisted_8$a
];
const _hoisted_10$9 = ["mask"];
const _hoisted_11$7 = ["mask"];
const _hoisted_12$7 = ["mask"];
const _hoisted_13$6 = ["fill", "mask"];
function render$F(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1p, [
    createBaseVNode("defs", null, [
      createBaseVNode("linearGradient", {
        x1: "50%",
        y1: "0%",
        x2: "50%",
        y2: "100%",
        id: _ctx.idMap["ssvg-id-visual-studio-codec"]
      }, _hoisted_5$n, 8, _hoisted_2$1e),
      _hoisted_6$f
    ]),
    createBaseVNode("mask", {
      id: _ctx.idMap["ssvg-id-visual-studio-codeb"],
      fill: "#fff"
    }, _hoisted_9$b, 8, _hoisted_7$c),
    createBaseVNode("path", {
      d: "M246.135 26.873L193.593 1.575a15.885 15.885 0 0 0-18.123 3.08L3.466 161.482c-4.626 4.219-4.62 11.502.012 15.714l14.05 12.772a10.625 10.625 0 0 0 13.569.604L238.229 33.436c6.949-5.271 16.93-.315 16.93 8.407v-.61a15.938 15.938 0 0 0-9.024-14.36z",
      fill: "#0065A9",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_10$9),
    createBaseVNode("path", {
      d: "M246.135 226.816l-52.542 25.298a15.887 15.887 0 0 1-18.123-3.08L3.466 92.207c-4.626-4.218-4.62-11.502.012-15.713l14.05-12.773a10.625 10.625 0 0 1 13.569-.603l207.132 157.135c6.949 5.271 16.93.315 16.93-8.408v.611a15.939 15.939 0 0 1-9.024 14.36z",
      fill: "#007ACC",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_11$7),
    createBaseVNode("path", {
      d: "M193.428 252.134a15.892 15.892 0 0 1-18.125-3.083c5.881 5.88 15.938 1.715 15.938-6.603V11.273c0-8.318-10.057-12.483-15.938-6.602a15.892 15.892 0 0 1 18.125-3.084l52.533 25.263a15.937 15.937 0 0 1 9.03 14.363V212.51c0 6.125-3.51 11.709-9.03 14.363l-52.533 25.262z",
      fill: "#1F9CF0",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_12$7),
    createBaseVNode("path", {
      d: "M180.828 252.605a15.874 15.874 0 0 0 12.65-.486l52.5-25.263a15.938 15.938 0 0 0 9.026-14.363V41.197a15.939 15.939 0 0 0-9.025-14.363L193.477 1.57a15.877 15.877 0 0 0-18.114 3.084L74.857 96.35l-43.78-33.232a10.614 10.614 0 0 0-13.56.603L3.476 76.494c-4.63 4.211-4.635 11.495-.012 15.713l37.967 34.638l-37.967 34.637c-4.623 4.219-4.618 11.502.012 15.714l14.041 12.772a10.614 10.614 0 0 0 13.56.604l43.78-33.233l100.506 91.695a15.857 15.857 0 0 0 5.465 3.571zm10.464-183.65l-76.262 57.89l76.262 57.888V68.956z",
      "fill-opacity": ".25",
      fill: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codec"] + ")",
      mask: "url(#" + _ctx.idMap["ssvg-id-visual-studio-codeb"] + ")"
    }, null, 8, _hoisted_13$6)
  ]);
}
const VSCode = { name: "logos-visual-studio-code", render: render$F, data() {
  const __randId = () => Math.random().toString(36).substr(2, 10);
  const idMap = { "ssvg-id-visual-studio-codeb": "uicons-" + __randId(), "ssvg-id-visual-studio-codec": "uicons-" + __randId() };
  return { idMap };
} };
const _hoisted_1$1o = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 256"
};
const _hoisted_2$1d = /* @__PURE__ */ createBaseVNode("circle", {
  fill: "#60B57D",
  cx: "128.002",
  cy: "128.002",
  r: "128.002"
}, null, -1);
const _hoisted_3$11 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M117.82 59.143a3.605 3.605 0 0 1-4.515 5.62c-9.397-7.547-17.224-10.04-22.051-7.575c-5.618 2.865-7.797 12.083-6.663 24.946l.17 1.737c.096.879.206 1.773.33 2.682l.269 1.839c.334 2.15.745 4.376 1.235 6.67c6.767-1.05 14.05-1.735 21.698-2.02a197.699 197.699 0 0 1 10.079-11.969l1.698-1.83c4.246-4.513 8.505-8.553 12.696-12.049l1.673-1.37c15.295-12.285 29.531-17.146 38.738-11.168c8.02 5.203 10.17 16.989 7.19 32.783a3.605 3.605 0 1 1-7.084-1.336c2.495-13.227.852-22.232-4.03-25.4c-6.348-4.12-18.142.623-31.44 11.701l-1.484 1.257a127.43 127.43 0 0 0-2.246 1.982l-1.51 1.383a149.716 149.716 0 0 0-4.571 4.446l-1.535 1.577c-.256.266-.512.535-.769.805l-1.54 1.647l-1.54 1.691l-1.541 1.736c-.514.586-1.028 1.179-1.54 1.78l-1.54 1.822l-.299.363c3.586.019 7.235.123 10.932.315l1.435.08l2.852.182c2.367.166 4.707.366 7.017.599l2.758.295c.457.052.913.105 1.368.159l2.711.341c2.247.297 4.46.625 6.635.984l2.592.444l2.555.473l2.515.501c8.32 1.716 15.97 3.888 22.71 6.434l1.996.775c17.704 7.074 28.614 16.812 28.054 27.576c-.464 8.898-8.44 16.244-21.81 21.507a3.605 3.605 0 1 1-2.64-6.708c11.024-4.34 16.971-9.817 17.25-15.174c.358-6.858-7.848-13.951-21.507-19.672l-1.7-.694c-1.15-.458-2.337-.906-3.557-1.343l-1.856-.649c-.626-.213-1.261-.424-1.904-.632l-1.954-.615l-2-.598c-.337-.098-.676-.195-1.017-.292l-2.068-.57c-.348-.093-.698-.186-1.05-.278l-2.133-.54a174.737 174.737 0 0 0-6.645-1.498l-2.293-.456l-1.16-.22l-2.348-.42l-2.382-.398l-1.204-.19l-2.432-.36c-.816-.116-1.637-.227-2.463-.334l-2.495-.309l-2.523-.282a217.085 217.085 0 0 0-3.837-.37l-2.59-.213c-.868-.066-1.74-.126-2.616-.182l-2.639-.154l-2.64-.121l-2.62-.09a217.035 217.035 0 0 0-8.993-.068l-2.06.038l-.81 1.074a213.91 213.91 0 0 0-1.505 2.045l-1.496 2.082a220.968 220.968 0 0 0-6.566 9.801l-1.388 2.224a217.303 217.303 0 0 0-4.232 7.177c.123.302.248.605.375.908l.98 2.314c.166.387.334.774.504 1.162l1.036 2.331l1.074 2.342l1.112 2.349l1.15 2.356l1.186 2.362l1.215 2.348l1.233 2.314l1.249 2.28l.63 1.126l1.272 2.227c.426.736.855 1.466 1.285 2.19l1.298 2.152c.435.71.871 1.415 1.31 2.113l1.32 2.075l1.329 2.034a192.004 192.004 0 0 0 3.356 4.904l1.353 1.886a174.77 174.77 0 0 0 2.717 3.64l1.362 1.75l1.363 1.705c.227.28.455.558.682.834l1.362 1.632l1.36 1.583a129.105 129.105 0 0 0 4.06 4.446l1.342 1.377l1.334 1.324a99.254 99.254 0 0 0 1.985 1.884l1.31 1.186a82.252 82.252 0 0 0 1.945 1.673l1.28 1.042c8.703 6.925 16.414 9.722 21.534 7.11c4.807-2.45 7.102-9.608 6.932-19.757l-.043-1.545a72.96 72.96 0 0 0-.081-1.588l-.118-1.63a85.54 85.54 0 0 0-.154-1.672l-.192-1.712a97.035 97.035 0 0 0-.109-.87l-.246-1.769l-.284-1.805l-.32-1.84a127.447 127.447 0 0 0-.959-4.747l-.448-1.954l-.484-1.983c-.084-.333-.17-.667-.256-1.002l-.539-2.025l-.575-2.052l-.302-1.035l-.63-2.088l-.666-2.111c-.342-1.062-.698-2.131-1.067-3.208l-.757-2.163l-.793-2.182a199.84 199.84 0 0 0-1.694-4.415l-.902-2.23l-.937-2.243l-.482-1.126l-.991-2.261l-1.028-2.272c-.174-.379-.35-.759-.527-1.139l-1.08-2.284a220.62 220.62 0 0 0-.555-1.145a3.605 3.605 0 1 1 6.48-3.159l1.196 2.49c.392.828.778 1.656 1.156 2.482l1.118 2.474a220.378 220.378 0 0 1 3.112 7.356l.957 2.426c.157.403.311.806.464 1.208l.896 2.403c.146.399.29.797.433 1.195l.835 2.376a184.854 184.854 0 0 1 1.545 4.694l.71 2.315c8.5 28.409 7.41 51.515-5.34 58.016c-10.313 5.26-24.936-2.046-39.655-17.456l-1.523-1.622a137.51 137.51 0 0 1-3.044-3.415l-1.518-1.79c-4.046-4.844-8.055-10.257-11.938-16.147l-1.45-2.231a225.959 225.959 0 0 1-10.398-18.043l-.657-1.279a238.72 238.72 0 0 1-1.288-2.564l-1.247-2.559a230.326 230.326 0 0 1-2.826-6.112l-.582 1.151c-.18.36-.357.72-.533 1.08l-1.038 2.147l-.997 2.132l-.958 2.114c-.156.351-.31.702-.463 1.051l-.896 2.087c-.146.346-.29.69-.433 1.035l-.836 2.056c-.136.34-.27.68-.402 1.019l-.774 2.02c-.125.335-.249.669-.37 1.002l-.712 1.983l-.67 1.956c-.325.97-.633 1.931-.926 2.88l-.565 1.883l-.522 1.851c-.083.306-.165.61-.245.913l-.458 1.8a92.343 92.343 0 0 0-.956 4.344l-.307 1.67c-2.04 11.83-.71 20.554 4.345 23.835c5.092 3.303 14.533.79 26.183-7.62a3.605 3.605 0 1 1 4.22 5.845c-13.807 9.968-26.013 13.216-34.327 7.822c-10.046-6.519-10.752-23.757-4.066-45.202l.694-2.158c.478-1.448.989-2.913 1.532-4.395l.838-2.233a172.466 172.466 0 0 1 3.825-9.143l1.072-2.33l1.117-2.346a208.194 208.194 0 0 1 4.582-8.897c-.216-.552-.43-1.103-.641-1.653l-.933-2.475a188.692 188.692 0 0 1-3.296-9.713l-.714-2.374a162.63 162.63 0 0 1-1.24-4.466c-.445.089-.885.18-1.322.272l-1.96.431l-1.913.453c-.315.077-.627.155-.938.234l-1.84.483l-1.787.504c-.588.171-1.167.346-1.736.523l-1.683.542c-.552.184-1.095.371-1.628.561l-1.572.579c-10.803 4.113-17.383 9.51-17.69 15.388c-.279 5.358 5.068 11.423 15.584 16.883a3.605 3.605 0 1 1-3.322 6.398C46.567 140.033 39.395 131.898 39.86 123c.645-12.406 16.305-21.875 39.597-26.656c-4.714-22.525-2.315-40.051 8.52-45.577c8.009-4.088 18.472-.757 29.842 8.377zm19.753 67.051c1.196 5.536-2.322 10.99-7.857 12.188c-5.536 1.196-10.99-2.322-12.188-7.858c-1.194-5.535 2.322-10.989 7.858-12.187c5.535-1.196 10.989 2.322 12.187 7.857zm-34.898-25.606l-.65.045c-.497.036-.992.073-1.484.113l-2.345.202l-2.31.228c-.382.04-.762.082-1.141.124l-2.256.267l-1.113.143l-2.198.304l-.872.133l.308 1.151a167.326 167.326 0 0 0 1.568 5.342l.694 2.18l.362 1.1l.752 2.213c.207.597.418 1.196.633 1.798a238.568 238.568 0 0 1 3.54-5.705l.78-1.208a234.986 234.986 0 0 1 5.732-8.43z",
  fill: "#FFF"
}, null, -1);
const _hoisted_4$F = [
  _hoisted_2$1d,
  _hoisted_3$11
];
function render$E(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1o, _hoisted_4$F);
}
const Atom = { name: "logos-atom-icon", render: render$E };
const _hoisted_1$1n = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 256"
};
const _hoisted_2$1c = ["id"];
const _hoisted_3$10 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#00CDD7",
  offset: "28%"
}, null, -1);
const _hoisted_4$E = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#2086D7",
  offset: "94%"
}, null, -1);
const _hoisted_5$m = [
  _hoisted_3$10,
  _hoisted_4$E
];
const _hoisted_6$e = ["id"];
const _hoisted_7$b = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FFF045",
  offset: "14%"
}, null, -1);
const _hoisted_8$9 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#00CDD7",
  offset: "37%"
}, null, -1);
const _hoisted_9$a = [
  _hoisted_7$b,
  _hoisted_8$9
];
const _hoisted_10$8 = ["id"];
const _hoisted_11$6 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#00CDD7",
  offset: "28%"
}, null, -1);
const _hoisted_12$6 = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#2086D7",
  offset: "94%"
}, null, -1);
const _hoisted_13$5 = [
  _hoisted_11$6,
  _hoisted_12$6
];
const _hoisted_14$4 = ["fill"];
const _hoisted_15$4 = ["fill"];
const _hoisted_16$4 = ["fill"];
const _hoisted_17$4 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M48 48h160v160H48z",
  fill: "#000"
}, null, -1);
const _hoisted_18$2 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M63.2 178h60v10h-60v-10zm78.4-52.4l8.4-10.4c6 4.8 12 8 19.6 8c6 0 9.6-2.4 9.6-6.4c0-3.6-2.4-5.6-13.2-8.4c-13.2-3.6-21.6-7.2-21.6-20.4v-.4c0-12 9.6-20 22.8-20a39.16 39.16 0 0 1 24.4 8.4L184 87.2a30.48 30.48 0 0 0-16.8-6.4c-5.2 0-8.4 2.4-8.4 6c0 4.4 2.8 6 14 8.8c13.2 3.6 20.8 8.4 20.8 20c0 13.2-10 20.8-24 20.8a46.12 46.12 0 0 1-28-10.8zm-12.8-56.8l-10 38.4l-11.2-38.4H96.4l-11.2 38.4l-10-38.4H59.6l19.2 66.4h12.4L102 96.8l10.8 38.4h12.4l19.2-66.4h-15.6z",
  fill: "#FFF"
}, null, -1);
function render$D(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1n, [
    createBaseVNode("defs", null, [
      createBaseVNode("linearGradient", {
        x1: "41.703%",
        y1: "1.925%",
        x2: "71.876%",
        y2: "95.235%",
        id: _ctx.idMap["ssvg-id-webstorma"]
      }, _hoisted_5$m, 8, _hoisted_2$1c),
      createBaseVNode("linearGradient", {
        x1: "22.489%",
        y1: "15.127%",
        x2: "82.877%",
        y2: "84.763%",
        id: _ctx.idMap["ssvg-id-webstormb"]
      }, _hoisted_9$a, 8, _hoisted_6$e),
      createBaseVNode("linearGradient", {
        x1: "11171%",
        y1: "-27691.798%",
        x2: "11907%",
        y2: "-28759.626%",
        id: _ctx.idMap["ssvg-id-webstormc"]
      }, _hoisted_13$5, 8, _hoisted_10$8)
    ]),
    createBaseVNode("path", {
      fill: "url(#" + _ctx.idMap["ssvg-id-webstorma"] + ")",
      d: "M34.4 231.2L0 26.8L64 .4l40.4 24l37.6-20l77.6 30L176 256z"
    }, null, 8, _hoisted_14$4),
    createBaseVNode("path", {
      fill: "url(#" + _ctx.idMap["ssvg-id-webstormb"] + ")",
      d: "M256 86.8L222.8 5.2L163.2 0L70.4 88.8l24.8 114.8L142 236l114-67.6l-28-52.4z"
    }, null, 8, _hoisted_15$4),
    createBaseVNode("path", {
      fill: "url(#" + _ctx.idMap["ssvg-id-webstormc"] + ")",
      d: "M204.8 74.4L228 116l28-29.2L235.6 36z"
    }, null, 8, _hoisted_16$4),
    _hoisted_17$4,
    _hoisted_18$2
  ]);
}
const Webstorm = { name: "logos-webstorm", render: render$D, data() {
  const __randId = () => Math.random().toString(36).substr(2, 10);
  const idMap = { "ssvg-id-webstorma": "uicons-" + __randId(), "ssvg-id-webstormb": "uicons-" + __randId(), "ssvg-id-webstormc": "uicons-" + __randId() };
  return { idMap };
} };
const _hoisted_1$1m = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 257"
};
const _hoisted_2$1b = /* @__PURE__ */ createStaticVNode('<path d="M128.286 1.952L1.945 127.885L128.286 254.4l125.761-126.515L128.286 1.952" fill="#019833"></path><path d="M128.264 13.516V2.885L2.774 127.908h10.753L128.264 13.516" fill="#66FE98"></path><path d="M128.264 13.516V2.885l125.88 125.023h-11.636L128.264 13.516" fill="#45FE02"></path><path d="M128.264 242.836v11.769L2.774 127.908h10.753l114.737 114.928" fill="#017D17"></path><path d="M128.264 242.836v11.769l125.88-126.697h-11.636L128.264 242.836" fill="#005D04"></path><path d="M65.226 230.591H40.9l-9.5-9.258V44.55h-7.54l-6.455-6.464V18.325l6.687-7.253h85.075l7.649 7.658v18.756l-6.356 7.747h-6.428v59.758l60.487-59.758h-3.377l-7.035-7.587V17.758l6.912-6.345h85.872l6.796 6.805v18.81L65.226 230.591" fill="#000"></path><path d="M128.264 256.342L0 127.908L128.264 0L256 127.908L128.264 256.342zM3.929 127.908L128.264 252.41l123.805-124.502L128.264 3.935L3.929 127.908z" fill="#000"></path><path d="M108.075 22.742l3.779-2.441l-3.861-4.008H26.156l-4.158 4.164v15.75l4.61 4.616l2.199-4.616l-2.892-2.897V22.207l2.169-1.931l77.264.095l2.727 2.371" fill="#FEFEFE"></path><path d="M41.458 35.833v184.334l2.592 2.468l-2.077 3.925l-5.451-5.369V40.612l4.936-4.779" fill="#FEFEFE"></path><path d="M28.236 35.833l-1.628 4.99h9.886l5.719-4.99H28.236" fill="gray"></path><path d="M166.531 35.897l-3.457-2.442v-9.896l3.616-3.621h75.449l2.893 3.862l4.117-3.249l-4.238-3.872h-81.114l-4.038 4.043v15.871l4.252 3.848m-65.615 76.31l-7.879 19.144l88.948-89.309l-.435-10.804l-80.634 80.969" fill="#FEFEFE"></path><path d="M107.897 22.671l3.957-2.37v15.532l-4.517 4.523h-8.778l-.163 76.395l-7.849 19.1V35.833h14.659l2.727-2.219l-.036-10.943" fill="gray"></path><path d="M244.764 22.722l4.385-2.171v14.183L62.408 226.56H41.973l1.994-3.77l15.695.001L244.791 31.379l-.027-8.657" fill="gray"></path><path d="M179.03 35.782l-4.548 4.569l-10.471.09l2.557-4.59l12.462-.069" fill="gray"></path><path d="M165.973 19.79l-2.89 2.893v10.624l2.531 2.534h13.372v10.265l-88.46 89.783V35.968h14.701l3.016-3.02V22.197l-2.784-2.154H28.093l-2.531 2.535V33.56l2.573 2.577h13.457v184.002l2.531 2.534h15.292L244.794 31.131v-8.448l-2.89-2.893h-75.931" fill="#CCC"></path><path d="M59.519 222.918H44.022l-2.674-2.678V36.381H28.034l-2.716-2.72V22.476l2.674-2.677h77.551l2.945 2.278v10.972l-3.159 3.163H90.77v99.081l87.972-89.288v-9.919h-13.229l-2.674-2.678V22.582l3.032-3.037h76.134l3.033 3.037v8.648l-.068.071L59.519 222.918zm-15.294-.489h15.087L244.55 31.033v-8.249l-2.747-2.75h-75.729l-2.747 2.75v10.422l2.388 2.391h13.516v10.609l-.07.071l-88.879 90.208V35.724h14.844l2.873-2.878V22.317l-2.623-2.03H28.194l-2.388 2.392v10.78l2.431 2.434h13.599v184.144l2.389 2.392z" fill="gray"></path><path d="M134.566 143.819a.834.834 0 0 0-.38.19l-3.585 3.083a.84.84 0 0 0-.232.359l-3.586 10.054a.835.835 0 0 0 .19.866l2.742 2.745a.835.835 0 0 0 .591.233h11.073a.83.83 0 0 0 .59-.233l2.89-2.914c.1-.1.172-.224.211-.359l3.08-10.582a.835.835 0 0 0-.211-.823l-2.384-2.387a.827.827 0 0 0-.59-.232h-10.23a.796.796 0 0 0-.169 0zm-20.29 28.343a.833.833 0 0 0-.633.613l-1.371 5.449a.833.833 0 0 0 .801 1.035h6.518l-16.157 46.19a.833.833 0 0 0 .781 1.099h23.517a.834.834 0 0 0 .802-.571l1.54-4.963a.834.834 0 0 0-.802-1.077h-5.315l15.988-46.676a.833.833 0 0 0-.781-1.099h-24.72a.943.943 0 0 0-.168 0zm74.835.169a.835.835 0 0 0-.465.275l-4.893 5.533h-7.783l-5.189-5.385a.828.828 0 0 0-.59-.254h-18.582a.832.832 0 0 0-.781.549l-1.708 5.112a.834.834 0 0 0 .78 1.098h4.978l-15.482 45.683a.835.835 0 0 0 .781 1.099h19.784a.833.833 0 0 0 .781-.549l1.518-4.457a.833.833 0 0 0-.78-1.098h-3.459l9.871-31.111h17.865l-11.263 36.138a.832.832 0 0 0 .801 1.077h19.088a.834.834 0 0 0 .76-.507l1.708-4.098a.832.832 0 0 0-.759-1.14h-3.459l10.04-31.639h17l-11.432 36.307a.833.833 0 0 0 .802 1.077h20.965a.835.835 0 0 0 .781-.528l1.708-4.457a.833.833 0 0 0-.78-1.119h-4.156l12.635-41.079a.836.836 0 0 0-.127-.761l-3.923-5.28a.832.832 0 0 0-.675-.317h-14.996a.829.829 0 0 0-.612.254l-4.725 5.195h-8.268l-4.893-5.364a.83.83 0 0 0-.612-.254h-12.086a.943.943 0 0 0-.168 0z" fill="#CCC"></path><path d="M128.359 162.524c.523.504 1.207.78 1.901.78l.046-.001h11.039c.742.023 1.444-.263 2.013-.81l2.883-2.909c.334-.334.579-.751.706-1.195l3.079-10.58a2.785 2.785 0 0 0-.705-2.752l-2.409-2.413a2.713 2.713 0 0 0-1.947-.78h-10.16a2.756 2.756 0 0 0-.436.01l-.205.032c-.47.099-.909.318-1.252.62l-3.586 3.084l-.041.037c-.349.318-.612.72-.764 1.167l-3.578 10.031a2.81 2.81 0 0 0 .647 2.907l2.769 2.772zm16.154-16.751l1.575 1.577l-2.816 9.676l-2.346 2.368l-10.168.001l-1.897-1.9l3.257-9.13l3.014-2.592h9.381z" fill="#000"></path><path d="M241.638 176.931l-3.923-5.28l-.035-.045a2.792 2.792 0 0 0-2.225-1.06h-14.948a2.763 2.763 0 0 0-2.049.848l-4.184 4.601h-6.541l-4.312-4.727l-.04-.043a2.818 2.818 0 0 0-2.016-.848h-12.016a2.759 2.759 0 0 0-.436.01l-.202.031a2.78 2.78 0 0 0-1.529.893l-4.31 4.874h-6.071l-4.615-4.79a2.81 2.81 0 0 0-1.995-.849h-18.588a2.796 2.796 0 0 0-2.612 1.837l-1.724 5.155a2.792 2.792 0 0 0 2.633 3.675h2.252l-14.61 43.11a2.794 2.794 0 0 0 1.757 3.528c.277.092.565.141.878.144h19.79a2.807 2.807 0 0 0 2.625-1.873l1.522-4.466a2.793 2.793 0 0 0-2.634-3.674h-.789l8.631-27.201H183.1l-10.476 33.611a2.791 2.791 0 0 0 1.847 3.48a3.1 3.1 0 0 0 .824.123H194.4a2.79 2.79 0 0 0 2.547-1.709l1.722-4.13a2.79 2.79 0 0 0-2.577-3.815h-.788l8.799-27.729h12.905l-10.637 33.782a2.792 2.792 0 0 0 2.657 3.601H229.995a2.817 2.817 0 0 0 2.619-1.783l1.719-4.485a2.791 2.791 0 0 0-2.616-3.745h-1.51l11.847-38.518a2.788 2.788 0 0 0-.416-2.533zm-16.723 44.96h5.169l-.842 2.195h-18.676l11.772-37.383h-21.096l-11.28 35.548h4.432l-.765 1.835h-16.815l11.599-37.214h-21.952l-11.111 35.019h4.554l-.748 2.195H141.75l15.854-46.782h-6.137l.952-2.849h17.287l5.433 5.639h9.495l5.135-5.808l11.114-.001l5.124 5.619h9.996l4.955-5.449h13.97l3.236 4.356l-13.249 43.08z" fill="#000"></path><path d="M130.096 218.105a3.01 3.01 0 0 0-.824-.123h-2.58l15.106-44.099a2.792 2.792 0 0 0-2.634-3.675h-24.65a2.771 2.771 0 0 0-.437.01l-.213.034a2.769 2.769 0 0 0-2.117 2.046l-1.372 5.454a2.794 2.794 0 0 0 2.034 3.38c.212.052.431.08.664.081h3.763l-15.255 43.615a2.792 2.792 0 0 0 2.634 3.674h23.53c1.204 0 2.263-.763 2.656-1.946l1.542-4.971a2.791 2.791 0 0 0-1.847-3.48zm-24.292 6.488l16.541-47.289h-7.826l.802-3.187h22.264l-16.364 47.774h6.534l-.838 2.702h-21.113z" fill="#000"></path>', 20);
const _hoisted_22$2 = [
  _hoisted_2$1b
];
function render$C(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1m, _hoisted_22$2);
}
const Vim = { name: "logos-vim", render: render$C };
const _hoisted_1$1l = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 332"
};
const _hoisted_2$1a = ["id"];
const _hoisted_3$$ = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#FF9700",
  offset: "0%"
}, null, -1);
const _hoisted_4$D = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#F48E00",
  offset: "53%"
}, null, -1);
const _hoisted_5$l = /* @__PURE__ */ createBaseVNode("stop", {
  "stop-color": "#D06F00",
  offset: "100%"
}, null, -1);
const _hoisted_6$d = [
  _hoisted_3$$,
  _hoisted_4$D,
  _hoisted_5$l
];
const _hoisted_7$a = ["fill"];
const _hoisted_8$8 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 164.291c0 3.887 2.865 7.95 6.397 9.071l242.53 76.902c3.531 1.12 6.397-1.127 6.397-5.007V166.66c0-3.88-2.866-7.944-6.397-9.064L6.397 80.694C2.865 79.574 0 81.814 0 85.7v78.59z",
  fill: "#FF9800"
}, null, -1);
const _hoisted_9$9 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M255.288 5.302c0-3.886-2.872-6.135-6.397-5.014L6.397 77.176C2.865 78.296 0 82.36 0 86.247v78.59c0 3.887 2.865 6.128 6.397 5.014l242.494-76.895c3.525-1.12 6.397-5.184 6.397-9.064V5.302z",
  fill: "#FF9800"
}, null, -1);
function render$B(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1l, [
    createBaseVNode("defs", null, [
      createBaseVNode("linearGradient", {
        x1: "55.117%",
        y1: "58.68%",
        x2: "63.68%",
        y2: "39.597%",
        id: _ctx.idMap["ssvg-id-sublimetext-icona"]
      }, _hoisted_6$d, 8, _hoisted_2$1a)
    ]),
    createBaseVNode("path", {
      d: "M255.288 166.795c0-3.887-2.872-6.128-6.397-5.015L6.397 238.675C2.865 239.796 0 243.86 0 247.74v78.59c0 3.887 2.865 6.135 6.397 5.015l242.494-76.888c3.525-1.12 6.397-5.185 6.397-9.071v-78.59z",
      fill: "url(#" + _ctx.idMap["ssvg-id-sublimetext-icona"] + ")"
    }, null, 8, _hoisted_7$a),
    _hoisted_8$8,
    _hoisted_9$9
  ]);
}
const Sublime = { name: "logos-sublimetext-icon", render: render$B, data() {
  const __randId = () => Math.random().toString(36).substr(2, 10);
  const idMap = { "ssvg-id-sublimetext-icona": "uicons-" + __randId() };
  return { idMap };
} };
const _hoisted_1$1k = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 24 24"
};
const _hoisted_2$19 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2h-4z",
  fill: "currentColor"
}, null, -1);
const _hoisted_3$_ = [
  _hoisted_2$19
];
function render$A(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1k, _hoisted_3$_);
}
const Computer = { name: "mdi-computer", render: render$A };
const _hoisted_1$1j = {
  width: "1em",
  height: "1em",
  preserveAspectRatio: "xMidYMid meet",
  viewBox: "0 0 256 216"
};
const _hoisted_2$18 = /* @__PURE__ */ createStaticVNode('<path d="M255.568 162.465a9.062 9.062 0 0 0-.232-.583c.087-2.236-.577-4.31-1.958-6.068c-1.773-2.259-4.582-3.829-8.506-4.742a91.355 91.355 0 0 1 1.795-.535l4.548-3.087c.806-.547 1.005-1.515.89-2.602c-.351-3.302-3.5-5.582-6.797-5.187c-5.338.639-13.694 1.68-15.479 2.127l-6.34-2.407a11.62 11.62 0 0 0-6.659-.486a88.29 88.29 0 0 0-9.042 2.527c2.708-15.206 9.729-51.155 19.705-77.002l.069-.191c9.393-28.387 10.518-46.95 3.439-56.749C227.446 2.56 222.07.065 215.02.065c-10.075.291-21.764 19.619-21.764 19.619l-2.083 4.283l-1.274 1.273l-1.273-1.62l-4.014 4.593c-.03.052-2.973 5.16-6.897 9.515c-1.748 1.224-2.901 1.519-3.572 1.544c-4.047.15-4.328-.775-4.563-1.518c-.256-.81-.854-2.705-2.98-3.467c-1.319-.472-2.782-.286-4.013.513c-.672.437-1.411 1.07-2.774 3.345c-.084.018-.165.055-.249.078c1.2-2.962 2.234-6.226 3.081-9.784l-.066-1.733c-.144-3.826-4.901-5.495-7.405-2.599l-4.917 5.685c-1.166 1.513-2.197 2.85-3.124 3.977c-.727.342-1.508.522-2.503.588c-.31.02-.602.042-.88.064c-2.13.165-2.307.178-4.234-1.314c-2.969-2.296-8.009-7.389-17.502-17.24c-9.215-9.563-17.332-14.08-24.841-13.875c-5.364.162-10.086 2.696-14.43 7.747l-.141.001C79.06 5.47 73.396 0 66.334 0l-.149.001c-3.492.037-7.223 2.315-12.448 7.607c-3.279 2.616-6.637 6.338-9.886 9.94c-1.245 1.38-2.424 2.687-3.523 3.844c-3.129 2.449-5.732 3.753-7.539 3.774c-.959.002-3.886.044-6.647-8.696l-3.52-11.144l-3.152 7.916l-1.231-3.895L7.118 37.271l.658 1.57c.486 1.158 4.986 11.338 13.342 12.123c8.574.797 16.61-6.014 21.947-11.284c4.352-3.649 8.398-8.144 11.656-11.763c.551-.612 1.083-1.204 1.596-1.767c1.981.765 5.895 3.365 9.557 8.041l-4.623 5.621C49.048 54.64 47.772 56.19 40.141 68.746c-9.577 15.759-11.423 25.862-5.643 30.887c1.263 1.097 4.451 3.338 9.405 3.338c1.736 0 3.691-.278 5.854-.975a266.471 266.471 0 0 0-6.499 5.138c-12.063 9.842-25.061 22.115-20.869 31.192c-.062 1.852.37 3.549 1.259 5.019C11.853 153.818-3.543 174.107.729 185.717c.119 4.011 1.85 7.276 4.937 9.26c8.449 5.434 26.242-4.355 38.62-12.637c-.523 1.502-.879 2.786-.999 3.726l-.467 3.663l1.236.312l-.013.095l-.467 3.671l3.59.897c1.231.31 2.186.245 3.55-.599c-1.346 4.402-1.388 6.799-1.38 7.277l.211 13.302l2.875-4.282l.076 5.413l7.438-11.082c.05-.075 2.061-3.071 5.32-7.844l6.244-9.038l-3.472 10.88l11.128-8.897c6.402-5.418 12.872-12.205 18.021-17.585c-.926 2.528-.866 4.935.129 6.916c-.197 2.771.904 5.23 3.135 6.823c4.304 3.071 12 2.076 20.252-2.33c.409 2.367 1.842 3.634 2.643 4.171c5.683 3.813 15.555-2.952 23.52-9.269l1.328-1.054c.542 3.699 2.548 6.636 5.721 8.256c1.745.892 3.745 1.332 5.968 1.332c5.343 0 11.973-2.548 19.435-7.498c.995 2.41 2.765 4.37 5.188 5.662c5.184 2.763 12.516 1.991 20.958-2.008l4.563 1.31c5.597 1.607 9.555 2.182 13.378 2.182c3.065-.001 6.042-.37 9.706-.874c8.548-1.173 18.797-8.443 21.931-15.556c.496-1.128.819-2.248.968-3.341l-.432-4.506" fill="#FFF"></path><path d="M188.478 30.281s-9.613 16.85-18.315 17.172c-10.2.378-7.96-6.103-9.438-5.142c-1.474.958-7.134 12.944-7.223 14.407c10.985 18.13 31.297-12.458 34.976-26.437zM21.758 46.815c14.006 1.316 29.593-25.201 33.983-25.072c4.391.129 13.296 7.095 18.029 16.818c6.231-12.189 13.815-17.603 26.391-8.57c7.317 5.255 22.611 26.044 31.765 27.068c9.911 1.109 18.428-8.323 22.533-25.567c-5.682 7.36-7.995 10.665-13.688 11.04c-5.875.387-5.359 1.55-25.89-19.756S84.666 11.671 78.597 20.71c-1.356-1.485-8.224-12.615-16.5-12.526c-5.864.064-15.633 13.943-21.475 18.982c-6.07 5.235-9.709 6.158-11.916 6.184c-3.42.041-7.542-1.708-10.669-11.607L11.869 37.23s3.778 9.011 9.889 9.585zm46.401-8.538c-15.461 18.812-16.08 19.26-24.207 32.633c-8.127 13.373-10.284 22.262-6.47 25.578c3.843 3.341 10.69 3.526 19.079-2.674c11.673-8.946 27.254-21.712 31.531-32.581c1.112-2.825-19.13 16.337-27.253 21.089c-4.874 2.851-11.425 3.601-14.944.196c-7.182-6.949 24.966-41.317 22.264-44.241zm32.131 15.231c-1.356.452-9.2 12.041-9.168 13.558c.032 1.52 7.393 3.745 10.33 12.913c2.938 9.168 1.808 23.759 1.808 23.759c6.456-2.97 16.702-37.001-2.97-50.23zM238.67 158.41c-29.66-1.382 7.102-11.88 7.102-11.88c-16.012-1.033-45.122 16.859-21.37 14.139c23.914-2.761 24.192 18.914-.517 18.885c-3.458-.004-2.389-3.454-2.389-3.454l-10.079 4.455c9.541 2.739 13.824 2.222 21.367 1.186c13.3-1.826 32.878-22.068 5.886-23.331zm-69.634-12.368c-15.776 4.961-28.133 14.053-35.695 22.183c-6.747 4.081-26.05 14.114-13.98-13.24c6.87-15.569-15.866-.18-22.209 5.767c1.326-6.022 6.089-16.716-1.622-13.755c-7.71 2.962-16.024 8.988-30.257 22.345c8.173-13.165 8.598-14.544 11.063-20.935c-2.348.606-4.912 2.591-7.502 5.384c-61.969 47.396-53.111 15.025-41.458 3.432c8.145-9.924 34.254-16.982 41.177-31.023c-35.825 19.235-38.032 2.764-8.184-16.388c5.489-3.515 41.765-20.164 14.006 3.205c16.42-7.644 30.331-19.457 19.604-21.773c-13.942-3.009-35.868 14.037-47.081 23.187c-6.595 5.381-33.54 27.383-11.731 30.42c-14.14 7.761-38.61 39.155-26.998 46.622c7.934 5.1 35.283-11.471 52.576-26.736c-6.582 10.544-11.92 22.797-12.319 25.926c2.583.645 56.737-62.912 28.288-4.01c20.627-17.455 41.351-48.86 25.47-9.133c-3.435 8.591 11.66 9.315 27.993-5.61c-9.54 12.171-6.583 19.979 14.34 3.386c-12.74 2.838-8.418-6.872 24.519-29.254zm53.055.301c-10.172 1.902-18.214 5.056-24.305 8.735c.117-.446.204-.866.253-1.239c.551-4.261 8.651-53.781 21.435-86.902c5.238-15.83 18.29-58.688-8.587-58.688c-10.765 0-19.205 21.361-17.348 29.263c7.13-9.041 6.681-14.628 14.599-14.527c15.521.043 9.937 29.352 5.346 45.785c-8.753 31.333-16.039 58.185-20.094 81.195c-.718 4.075-1.056 6.987-1.124 8.998c-4.868 4.014-7.777 8.316-8.92 12.142c-11.644.756-25.87 3.996-10.329-20.291c-31.204 15.597-26.169 49.7 10.129 21.024c-2.645 10.864 9.37 17.352 31.596 1.074c-9.189 4.258-37.984.203 7.349-26.569z" fill="#000"></path><path d="M197.922 33.494c-1.857-7.901 6.583-29.262 17.348-29.262c26.876 0 13.824 42.858 8.586 58.687c-12.783 33.121-20.883 82.642-21.435 86.902c-.673 5.202-8.703 19.137-4.648-3.873c4.055-23.011 11.341-49.863 20.094-81.195c4.591-16.434 10.174-45.742-5.346-45.785c-7.918-.102-7.469 5.486-14.599 14.526" fill="#C73D27"></path><path d="M237.914 154.341c-29.66-1.382 7.102-11.88 7.102-11.88c-16.012-1.033-45.122 16.86-21.371 14.14c23.915-2.761 24.193 18.913-.516 18.884c-3.458-.004-2.389-3.454-2.389-3.454l-10.08 4.455c9.542 2.739 13.825 2.222 21.368 1.186c13.3-1.826 32.878-22.068 5.886-23.331zm-69.634-12.368c-15.776 4.961-28.133 14.053-35.695 22.184c-6.747 4.08-26.051 14.113-13.98-13.241c6.87-15.569-15.866-.18-22.209 5.767c1.326-6.022 6.088-16.716-1.622-13.754c-7.711 2.961-16.024 8.987-30.258 22.344c8.174-13.165 8.599-14.543 11.064-20.935c-2.348.606-4.912 2.591-7.502 5.384c-61.969 47.396-53.111 15.025-41.458 3.432c8.145-9.924 34.254-16.982 41.177-31.023c-35.825 19.235-38.032 2.764-8.184-16.388c5.488-3.514 41.765-20.164 14.006 3.205c16.42-7.643 30.331-19.457 19.604-21.773c-13.942-3.009-35.868 14.037-47.081 23.187c-6.595 5.382-33.54 27.383-11.731 30.421c-14.141 7.76-38.61 39.154-26.998 46.621c7.934 5.101 35.283-11.471 52.576-26.736c-6.582 10.544-11.92 22.797-12.319 25.926c2.583.645 56.737-62.912 28.288-4.01c20.627-17.455 41.351-48.859 25.469-9.132c-3.434 8.59 11.661 9.314 27.994-5.611c-9.54 12.171-6.583 19.98 14.34 3.386c-12.74 2.838-8.418-6.872 24.519-29.254zm53.055.301c-23.951 4.478-36.097 15.897-38.745 24.762c-11.644.756-25.87 3.997-10.329-20.291c-31.204 15.597-26.169 49.7 10.128 21.024c-2.645 10.865 9.37 17.352 31.597 1.074c-9.189 4.258-37.984.203 7.349-26.569z" fill="#1370C2"></path><path d="M172.385 97.46c-.594-1.917-12.692 20.088-12.692 20.088s-15.403 26.694-17.074 17.165c-3.728-21.253-30.642 41.883-26.023 44.192c.548.274 17.896-43.233 20.453-28.213c2.53 14.862 38.155-44.123 35.336-53.232" fill="#000"></path><path d="M76.396 159.132c-22.872 28.67-22.644 42.183-22.644 42.183s25.199-37.551 43.376-60.971c15.573-20.065 19.078-37.639 19.078-37.639s-21.374 33.317-39.81 56.427" fill="#000"></path><path d="M60.124 17.725c4.391.129 13.296 7.096 18.029 16.818c6.231-12.188 13.815-17.603 26.391-8.57c7.316 5.256 22.611 26.044 31.765 27.068c9.911 1.109 18.427-8.322 22.532-25.567c-5.681 7.361-7.995 10.665-13.687 11.041c-5.875.387-5.359 1.549-25.89-19.757S89.049 7.653 82.98 16.692c-1.356-1.485-8.224-12.615-16.5-12.525c-5.864.064-15.633 13.943-21.476 18.982c-6.069 5.235-9.708 6.158-11.915 6.183c-3.421.041-7.542-1.707-10.67-11.607l-6.168 15.488s3.778 9.011 9.889 9.585c14.006 1.316 29.594-25.202 33.984-25.073zm32.351 39.491c1.112-2.825-19.13 16.337-27.254 21.088c-4.873 2.851-11.424 3.601-14.944.196c-7.181-6.948 24.967-41.316 22.265-44.24c-15.461 18.812-16.081 19.26-24.207 32.632c-8.127 13.373-10.284 22.263-6.47 25.579c3.843 3.341 10.69 3.525 19.078-2.675c11.673-8.946 27.255-21.712 31.532-32.58zm12.198-7.726c-1.356.452-9.2 12.041-9.168 13.559c.032 1.52 7.392 3.744 10.33 12.912c2.938 9.168 1.808 23.76 1.808 23.76c6.456-2.97 16.701-37.001-2.97-50.231zm70.659 44.997c-.594-1.917-12.691 20.088-12.691 20.088s-15.404 26.693-17.075 17.165c-3.727-21.254-30.642 41.882-26.022 44.192c.548.274 17.895-43.234 20.453-28.213c2.53 14.861 38.154-44.123 35.335-53.232zm-95.963 65.741c-22.872 28.67-22.644 42.183-22.644 42.183s25.199-37.551 43.377-60.971c15.572-20.065 19.077-37.64 19.077-37.64s-21.373 33.318-39.81 56.428zm85.739-121.935c-1.475.958-7.134 12.945-7.223 14.407c10.984 18.13 31.296-12.457 34.976-26.436c0 0-9.613 16.849-18.315 17.172c-10.2.377-7.96-6.103-9.438-5.143z" fill="#C73D27"></path>', 7);
const _hoisted_9$8 = [
  _hoisted_2$18
];
function render$z(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1j, _hoisted_9$8);
}
const Emacs = { name: "logos-emacs", render: render$z };
const _hoisted_1$1i = { class: "flex items-center" };
const _hoisted_2$17 = {
  key: 0,
  class: "flex py-[16px] pb-[4px] items-center"
};
const _hoisted_3$Z = { class: "w-[400px]" };
const _hoisted_4$C = {
  for: "customPath",
  class: "sr-only"
};
const _sfc_main$10 = /* @__PURE__ */ defineComponent({
  __name: "ChooseExternalEditor",
  props: {
    gql: null
  },
  emits: ["choseEditor"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const icons = {
      "code": VSCode,
      "webstorm": Webstorm,
      "atom": Atom,
      "sublimetext": Sublime,
      "sublimetext2": Sublime,
      "sublimetextdev": Sublime,
      "vim": Vim,
      "emacs": Emacs,
      "finder": Computer,
      "computer": Computer,
      "File Explorer": Computer,
      "File System": Computer,
      "custom": __unplugin_components_0$i
    };
    const customEditor = { id: "custom", icon: __unplugin_components_0$i, name: "Custom", binary: "custom" };
    const editorOptions = computed(() => {
      var _a2;
      const editors = ((_a2 = props.gql.localSettings.availableEditors) == null ? void 0 : _a2.map((x2) => ({ ...x2, icon: icons[x2.id] }))) || [];
      editors.push(customEditor);
      return editors;
    });
    gql`
fragment ChooseExternalEditor on Query {
  localSettings {
    availableEditors {
      id
      name
      binary
    }

    preferences {
      preferredEditorBinary
    }
  }
}`;
    const { t: t2 } = useI18n();
    const selectedWellKnownEditor = props.gql.localSettings.availableEditors.find((editor) => {
      return editor.binary && editor.binary === props.gql.localSettings.preferences.preferredEditorBinary;
    });
    const customBinary = ref(
      selectedWellKnownEditor ? "" : props.gql.localSettings.preferences.preferredEditorBinary ?? ""
    );
    const editorToUse = ref(
      customBinary.value ? "custom" : "found"
    );
    const selectedEditor = ref(
      editorToUse.value === "custom" ? customEditor : selectedWellKnownEditor
    );
    watch(customBinary, (val) => {
      if (editorToUse.value !== "custom") {
        editorToUse.value = "custom";
      }
      emit2("choseEditor", val);
    });
    const updateEditor = (editor) => {
      selectedEditor.value = editor;
      if (editor.id === "custom") {
        editorToUse.value = "custom";
        if (customBinary.value) {
          emit2("choseEditor", customBinary.value);
        }
      } else {
        editorToUse.value = "found";
        emit2("choseEditor", selectedEditor.value.binary);
      }
    };
    return (_ctx, _cache) => {
      const _component_i_cy_terminal_x16 = __unplugin_components_0$i;
      const _component_i_cy_technology_command_line_x16 = __unplugin_components_1$4;
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("div", _hoisted_1$1i, [
          createVNode(_sfc_main$1p, {
            "model-value": selectedEditor.value,
            options: unref(editorOptions),
            "item-value": "name",
            "item-key": "id",
            placeholder: unref(t2)("settingsPage.editor.noEditorSelectedPlaceholder"),
            class: "w-[400px]",
            "onUpdate:modelValue": updateEditor
          }, {
            "input-prefix": withCtx(({ value }) => [
              value ? (openBlock(), createBlock(_sfc_main$11, {
                key: 0,
                icon: icons[value.id],
                class: "text-md text-gray-500",
                "icon-class": "icon-dark-gray-500"
              }, null, 8, ["icon"])) : (openBlock(), createBlock(_component_i_cy_terminal_x16, {
                key: 1,
                class: "text-md icon-dark-gray-500"
              }))
            ]),
            "item-prefix": withCtx(({ value }) => [
              createVNode(_sfc_main$11, {
                icon: value.icon,
                class: "text-md"
              }, null, 8, ["icon"])
            ]),
            _: 1
          }, 8, ["model-value", "options", "placeholder"])
        ]),
        editorToUse.value === "custom" ? (openBlock(), createElementBlock("div", _hoisted_2$17, [
          createBaseVNode("div", _hoisted_3$Z, [
            createVNode(Input, {
              id: "customPath",
              modelValue: customBinary.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => customBinary.value = $event),
              "data-cy": "custom-editor",
              "input-classes": "text-sm text-gray-500",
              placeholder: unref(t2)("settingsPage.editor.customPathPlaceholder")
            }, {
              prefix: withCtx(() => [
                createVNode(_component_i_cy_technology_command_line_x16, { class: "text-md icon-dark-gray-500" })
              ]),
              _: 1
            }, 8, ["modelValue", "placeholder"]),
            createBaseVNode("label", _hoisted_4$C, toDisplayString$1(unref(t2)("settingsPage.editor.customPathPlaceholder")), 1)
          ])
        ])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$1h = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$16 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13.6569 13.6569C10.5327 16.781 5.46734 16.781 2.34315 13.6569C-0.781048 10.5327 -0.781048 5.46734 2.34315 2.34315C5.46734 -0.781048 10.5327 -0.781048 13.6569 2.34315C16.781 5.46734 16.781 10.5327 13.6569 13.6569Z",
  fill: "currentColor",
  class: "icon-light"
}, null, -1);
const _hoisted_3$Y = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  style: { "transform": "translate(5px, 2.8px)" },
  "clip-rule": "evenodd",
  d: "M1.84477 2.53525L1.84393 2.53644C1.55247 2.99535 0.945841 3.13804 0.479622 2.85394C0.00800347 2.56655 -0.141341 1.95125 0.146051 1.47963L0.999992 2C0.146051 1.47963 0.146312 1.4792 0.146575 1.47877L0.147114 1.47789L0.148242 1.47605L0.150693 1.47208L0.15638 1.463L0.170928 1.44042C0.182042 1.42347 0.196048 1.40275 0.213011 1.37881C0.246877 1.33103 0.292902 1.2699 0.351663 1.20004C0.468602 1.06102 0.639738 0.88294 0.870176 0.706317C1.33799 0.347756 2.04656 0 2.99999 0C4.09902 0 4.91097 0.431523 5.41403 1.1133C5.87907 1.74355 5.99999 2.47764 5.99999 3C5.99999 3.62988 5.82686 4.14716 5.53741 4.57449C5.26535 4.97613 4.9179 5.25422 4.6658 5.44689C4.05784 5.9115 4.01123 5.9631 3.99314 6.11684C3.92861 6.66534 3.43165 7.05768 2.88315 6.99315C2.33465 6.92862 1.94231 6.43166 2.00684 5.88316C2.1317 4.8219 2.92228 4.24504 3.33392 3.94468C3.3778 3.91266 3.41737 3.88379 3.45138 3.8578C3.67974 3.68328 3.80299 3.56879 3.88152 3.45286C3.94266 3.3626 3.99999 3.23731 3.99999 3C3.99999 2.74111 3.93342 2.4752 3.8047 2.30076C3.71401 2.17785 3.52597 2 2.99999 2C2.5628 2 2.27137 2.15224 2.08684 2.29368C1.99111 2.36706 1.92298 2.43898 1.88221 2.48746C1.86211 2.51135 1.84967 2.52835 1.84477 2.53525ZM2.99999 10C3.55228 10 3.99999 9.55229 3.99999 9C3.99999 8.44771 3.55228 8 2.99999 8C2.44771 8 1.99999 8.44771 1.99999 9C1.99999 9.55229 2.44771 10 2.99999 10Z",
  fill: "white",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$B = [
  _hoisted_2$16,
  _hoisted_3$Y
];
function render$y(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1h, _hoisted_4$B);
}
const __unplugin_components_0$d = { name: "cy-circle-bg-question-mark_x16", render: render$y };
const _hoisted_1$1g = { class: "bg-white rounded-t flex border-b-[1px] border-b-gray-100 min-h-[56px] px-[24px] top-0 z-1 sticky items-center justify-between" };
const _hoisted_2$15 = /* @__PURE__ */ createBaseVNode("span", { class: "border-t border-t-gray-100 h-[6px] mx-[8px] w-[32px] inline-block" }, null, -1);
const _hoisted_3$X = { class: "group-hocus:underline" };
const _hoisted_4$A = ["aria-label"];
const _sfc_main$$ = /* @__PURE__ */ defineComponent({
  __name: "StandardModalHeader",
  props: {
    helpLink: null,
    helpText: null,
    noHelp: { type: Boolean, default: false }
  },
  emits: ["close"],
  setup(__props) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      const _component_i_cy_circle_bg_question_mark_x16 = __unplugin_components_0$d;
      const _component_i_cy_delete_x12 = __unplugin_components_2$1;
      return openBlock(), createElementBlock("div", _hoisted_1$1g, [
        createBaseVNode("div", null, [
          createVNode(unref(DialogTitle), { class: "text-gray-900 text-[18px] inline-block" }, {
            default: withCtx(() => [
              renderSlot(_ctx.$slots, "default")
            ]),
            _: 3
          }),
          !__props.noHelp ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
            _hoisted_2$15,
            createVNode(_sfc_main$1x, {
              href: __props.helpLink,
              class: "outline-transparent text-indigo-500 text-[16px] group"
            }, {
              default: withCtx(() => [
                createBaseVNode("span", _hoisted_3$X, toDisplayString$1(__props.helpText), 1)
              ]),
              _: 1
            }, 8, ["href"]),
            createVNode(_component_i_cy_circle_bg_question_mark_x16, { class: "ml-[8px] -top-[2px] relative inline-block icon-dark-indigo-500 icon-light-indigo-100" })
          ], 64)) : createCommentVNode("", true)
        ]),
        createBaseVNode("button", {
          "aria-label": unref(t2)(`actions.close`),
          class: "border-transparent rounded-full outline-none border group",
          onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close"))
        }, [
          createVNode(_component_i_cy_delete_x12, { class: "h-[12px] w-[12px] icon-dark-gray-400 group-hocus:icon-dark-indigo-400 children:transition-all" })
        ], 8, _hoisted_4$A)
      ]);
    };
  }
});
const _sfc_main$_ = /* @__PURE__ */ defineComponent({
  __name: "StandardModalBody",
  props: {
    variant: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(__props.variant === "bare" ? "p-0" : "p-[24px]")
      }, [
        renderSlot(_ctx.$slots, "default")
      ], 2);
    };
  }
});
const _sfc_main$Z = {};
const _hoisted_1$1f = { class: "rounded-b bg-gray-50 border-t-[1px] border-gray-100 h-[72px] py-[16px] px-[24px]" };
function _sfc_render$4(_ctx, _cache) {
  return openBlock(), createElementBlock("div", _hoisted_1$1f, [
    renderSlot(_ctx.$slots, "default")
  ]);
}
const StandardModalFooter = /* @__PURE__ */ _export_sfc$1(_sfc_main$Z, [["render", _sfc_render$4]]);
function getBasePlacement(placement) {
  return placement.split("-")[0];
}
function getAlignment(placement) {
  return placement.split("-")[1];
}
function getMainAxisFromPlacement(placement) {
  return ["top", "bottom"].includes(getBasePlacement(placement)) ? "x" : "y";
}
function getLengthFromAxis(axis) {
  return axis === "y" ? "height" : "width";
}
function computeCoordsFromPlacement(_ref) {
  let {
    reference: reference3,
    floating,
    placement
  } = _ref;
  const commonX = reference3.x + reference3.width / 2 - floating.width / 2;
  const commonY = reference3.y + reference3.height / 2 - floating.height / 2;
  let coords;
  switch (getBasePlacement(placement)) {
    case "top":
      coords = {
        x: commonX,
        y: reference3.y - floating.height
      };
      break;
    case "bottom":
      coords = {
        x: commonX,
        y: reference3.y + reference3.height
      };
      break;
    case "right":
      coords = {
        x: reference3.x + reference3.width,
        y: commonY
      };
      break;
    case "left":
      coords = {
        x: reference3.x - floating.width,
        y: commonY
      };
      break;
    default:
      coords = {
        x: reference3.x,
        y: reference3.y
      };
  }
  const mainAxis = getMainAxisFromPlacement(placement);
  const length2 = getLengthFromAxis(mainAxis);
  switch (getAlignment(placement)) {
    case "start":
      coords[mainAxis] = coords[mainAxis] - (reference3[length2] / 2 - floating[length2] / 2);
      break;
    case "end":
      coords[mainAxis] = coords[mainAxis] + (reference3[length2] / 2 - floating[length2] / 2);
      break;
  }
  return coords;
}
const computePosition$1 = async (reference3, floating, config2) => {
  const {
    placement = "bottom",
    strategy = "absolute",
    middleware = [],
    platform: platform2
  } = config2;
  let rects = await platform2.getElementRects({
    reference: reference3,
    floating,
    strategy
  });
  let {
    x: x2,
    y: y2
  } = computeCoordsFromPlacement({
    ...rects,
    placement
  });
  let statefulPlacement = placement;
  let middlewareData = {};
  for (let i2 = 0; i2 < middleware.length; i2++) {
    const {
      name: name2,
      fn
    } = middleware[i2];
    const {
      x: nextX,
      y: nextY,
      data,
      reset
    } = await fn({
      x: x2,
      y: y2,
      initialPlacement: placement,
      placement: statefulPlacement,
      strategy,
      middlewareData,
      rects,
      platform: platform2,
      elements: {
        reference: reference3,
        floating
      }
    });
    x2 = nextX != null ? nextX : x2;
    y2 = nextY != null ? nextY : y2;
    middlewareData = {
      ...middlewareData,
      [name2]: data != null ? data : {}
    };
    if (reset) {
      if (typeof reset === "object") {
        if (reset.placement) {
          statefulPlacement = reset.placement;
        }
        if (reset.rects) {
          rects = reset.rects === true ? await platform2.getElementRects({
            reference: reference3,
            floating,
            strategy
          }) : reset.rects;
        }
        ({
          x: x2,
          y: y2
        } = computeCoordsFromPlacement({
          ...rects,
          placement: statefulPlacement
        }));
      }
      i2 = -1;
      continue;
    }
  }
  return {
    x: x2,
    y: y2,
    placement: statefulPlacement,
    strategy,
    middlewareData
  };
};
function expandPaddingObject(padding) {
  return {
    top: 0,
    right: 0,
    bottom: 0,
    left: 0,
    ...padding
  };
}
function getSideObjectFromPadding(padding) {
  return typeof padding !== "number" ? expandPaddingObject(padding) : {
    top: padding,
    right: padding,
    bottom: padding,
    left: padding
  };
}
function rectToClientRect(rect2) {
  return {
    ...rect2,
    top: rect2.y,
    left: rect2.x,
    right: rect2.x + rect2.width,
    bottom: rect2.y + rect2.height
  };
}
async function detectOverflow(middlewareArguments, options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  const {
    x: x2,
    y: y2,
    platform: platform2,
    rects,
    elements,
    strategy
  } = middlewareArguments;
  const {
    boundary = "clippingParents",
    rootBoundary = "viewport",
    elementContext = "floating",
    altBoundary = false,
    padding = 0
  } = options2;
  const paddingObject = getSideObjectFromPadding(padding);
  const altContext = elementContext === "floating" ? "reference" : "floating";
  const element = elements[altBoundary ? altContext : elementContext];
  const clippingClientRect = await platform2.getClippingClientRect({
    element: await platform2.isElement(element) ? element : element.contextElement || await platform2.getDocumentElement({
      element: elements.floating
    }),
    boundary,
    rootBoundary
  });
  const elementClientRect = rectToClientRect(await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({
    rect: elementContext === "floating" ? {
      ...rects.floating,
      x: x2,
      y: y2
    } : rects.reference,
    offsetParent: await platform2.getOffsetParent({
      element: elements.floating
    }),
    strategy
  }));
  return {
    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
    right: elementClientRect.right - clippingClientRect.right + paddingObject.right
  };
}
const min$1 = Math.min;
const max$1 = Math.max;
function within(min$1$1, value, max$1$1) {
  return max$1(min$1$1, min$1(value, max$1$1));
}
const arrow = (options2) => ({
  name: "arrow",
  options: options2,
  async fn(middlewareArguments) {
    const {
      element,
      padding = 0
    } = options2 != null ? options2 : {};
    const {
      x: x2,
      y: y2,
      placement,
      rects,
      platform: platform2
    } = middlewareArguments;
    if (element == null) {
      return {};
    }
    const paddingObject = getSideObjectFromPadding(padding);
    const coords = {
      x: x2,
      y: y2
    };
    const basePlacement = getBasePlacement(placement);
    const axis = getMainAxisFromPlacement(basePlacement);
    const length2 = getLengthFromAxis(axis);
    const arrowDimensions = await platform2.getDimensions({
      element
    });
    const minProp = axis === "y" ? "top" : "left";
    const maxProp = axis === "y" ? "bottom" : "right";
    const endDiff = rects.reference[length2] + rects.reference[axis] - coords[axis] - rects.floating[length2];
    const startDiff = coords[axis] - rects.reference[axis];
    const arrowOffsetParent = await platform2.getOffsetParent({
      element
    });
    const clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
    const centerToReference = endDiff / 2 - startDiff / 2;
    const min2 = paddingObject[minProp];
    const max2 = clientSize - arrowDimensions[length2] - paddingObject[maxProp];
    const center = clientSize / 2 - arrowDimensions[length2] / 2 + centerToReference;
    const offset2 = within(min2, center, max2);
    return {
      data: {
        [axis]: offset2,
        centerOffset: center - offset2
      }
    };
  }
});
const hash$1 = {
  left: "right",
  right: "left",
  bottom: "top",
  top: "bottom"
};
function getOppositePlacement(placement) {
  return placement.replace(/left|right|bottom|top/g, (matched) => hash$1[matched]);
}
function getAlignmentSides(placement, rects) {
  const isStart = getAlignment(placement) === "start";
  const mainAxis = getMainAxisFromPlacement(placement);
  const length2 = getLengthFromAxis(mainAxis);
  let mainAlignmentSide = mainAxis === "x" ? isStart ? "right" : "left" : isStart ? "bottom" : "top";
  if (rects.reference[length2] > rects.floating[length2]) {
    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
  }
  return {
    main: mainAlignmentSide,
    cross: getOppositePlacement(mainAlignmentSide)
  };
}
const hash = {
  start: "end",
  end: "start"
};
function getOppositeAlignmentPlacement(placement) {
  return placement.replace(/start|end/g, (matched) => hash[matched]);
}
const basePlacements = ["top", "right", "bottom", "left"];
const allPlacements = /* @__PURE__ */ basePlacements.reduce((acc, basePlacement) => acc.concat(basePlacement, basePlacement + "-start", basePlacement + "-end"), []);
function getPlacementList(alignment, autoAlignment, allowedPlacements) {
  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter((placement) => getAlignment(placement) === alignment), ...allowedPlacements.filter((placement) => getAlignment(placement) !== alignment)] : allowedPlacements.filter((placement) => getBasePlacement(placement) === placement);
  return allowedPlacementsSortedByAlignment.filter((placement) => {
    if (alignment) {
      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
    }
    return true;
  });
}
const autoPlacement = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "autoPlacement",
    options: options2,
    async fn(middlewareArguments) {
      var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _middlewareData$autoP5, _placementsSortedByLe;
      const {
        x: x2,
        y: y2,
        rects,
        middlewareData,
        placement
      } = middlewareArguments;
      const {
        alignment = null,
        allowedPlacements = allPlacements,
        autoAlignment = true,
        ...detectOverflowOptions
      } = options2;
      if ((_middlewareData$autoP = middlewareData.autoPlacement) != null && _middlewareData$autoP.skip) {
        return {};
      }
      const placements2 = getPlacementList(alignment, autoAlignment, allowedPlacements);
      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
      const currentIndex = (_middlewareData$autoP2 = (_middlewareData$autoP3 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP3.index) != null ? _middlewareData$autoP2 : 0;
      const currentPlacement = placements2[currentIndex];
      const {
        main: main2,
        cross: cross2
      } = getAlignmentSides(currentPlacement, rects);
      if (placement !== currentPlacement) {
        return {
          x: x2,
          y: y2,
          reset: {
            placement: placements2[0]
          }
        };
      }
      const currentOverflows = [overflow[getBasePlacement(currentPlacement)], overflow[main2], overflow[cross2]];
      const allOverflows = [...(_middlewareData$autoP4 = (_middlewareData$autoP5 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP5.overflows) != null ? _middlewareData$autoP4 : [], {
        placement: currentPlacement,
        overflows: currentOverflows
      }];
      const nextPlacement = placements2[currentIndex + 1];
      if (nextPlacement) {
        return {
          data: {
            index: currentIndex + 1,
            overflows: allOverflows
          },
          reset: {
            placement: nextPlacement
          }
        };
      }
      const placementsSortedByLeastOverflow = allOverflows.slice().sort((a2, b2) => a2.overflows[0] - b2.overflows[0]);
      const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find((_ref) => {
        let {
          overflows
        } = _ref;
        return overflows.every((overflow2) => overflow2 <= 0);
      })) == null ? void 0 : _placementsSortedByLe.placement;
      return {
        data: {
          skip: true
        },
        reset: {
          placement: placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement
        }
      };
    }
  };
};
function getExpandedPlacements(placement) {
  const oppositePlacement = getOppositePlacement(placement);
  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
}
const flip = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "flip",
    options: options2,
    async fn(middlewareArguments) {
      var _middlewareData$flip, _middlewareData$flip2;
      const {
        placement,
        middlewareData,
        rects,
        initialPlacement
      } = middlewareArguments;
      if ((_middlewareData$flip = middlewareData.flip) != null && _middlewareData$flip.skip) {
        return {};
      }
      const {
        mainAxis: checkMainAxis = true,
        crossAxis: checkCrossAxis = true,
        fallbackPlacements: specifiedFallbackPlacements,
        fallbackStrategy = "bestFit",
        flipAlignment = true,
        ...detectOverflowOptions
      } = options2;
      const basePlacement = getBasePlacement(placement);
      const isBasePlacement = basePlacement === initialPlacement;
      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
      const placements2 = [initialPlacement, ...fallbackPlacements];
      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
      const overflows = [];
      let overflowsData = ((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.overflows) || [];
      if (checkMainAxis) {
        overflows.push(overflow[basePlacement]);
      }
      if (checkCrossAxis) {
        const {
          main: main2,
          cross: cross2
        } = getAlignmentSides(placement, rects);
        overflows.push(overflow[main2], overflow[cross2]);
      }
      overflowsData = [...overflowsData, {
        placement,
        overflows
      }];
      if (!overflows.every((side) => side <= 0)) {
        var _middlewareData$flip$, _middlewareData$flip3;
        const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip3 = middlewareData.flip) == null ? void 0 : _middlewareData$flip3.index) != null ? _middlewareData$flip$ : 0) + 1;
        const nextPlacement = placements2[nextIndex];
        if (nextPlacement) {
          return {
            data: {
              index: nextIndex,
              overflows: overflowsData
            },
            reset: {
              placement: nextPlacement
            }
          };
        }
        let resetPlacement = "bottom";
        switch (fallbackStrategy) {
          case "bestFit": {
            var _overflowsData$slice$;
            const placement2 = (_overflowsData$slice$ = overflowsData.slice().sort((a2, b2) => a2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0) - b2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0))[0]) == null ? void 0 : _overflowsData$slice$.placement;
            if (placement2) {
              resetPlacement = placement2;
            }
            break;
          }
          case "initialPlacement":
            resetPlacement = initialPlacement;
            break;
        }
        return {
          data: {
            skip: true
          },
          reset: {
            placement: resetPlacement
          }
        };
      }
      return {};
    }
  };
};
function convertValueToCoords(_ref) {
  let {
    placement,
    rects,
    value
  } = _ref;
  const basePlacement = getBasePlacement(placement);
  const multiplier = ["left", "top"].includes(basePlacement) ? -1 : 1;
  const rawValue = typeof value === "function" ? value({
    ...rects,
    placement
  }) : value;
  const {
    mainAxis,
    crossAxis
  } = typeof rawValue === "number" ? {
    mainAxis: rawValue,
    crossAxis: 0
  } : {
    mainAxis: 0,
    crossAxis: 0,
    ...rawValue
  };
  return getMainAxisFromPlacement(basePlacement) === "x" ? {
    x: crossAxis,
    y: mainAxis * multiplier
  } : {
    x: mainAxis * multiplier,
    y: crossAxis
  };
}
const offset = function(value) {
  if (value === void 0) {
    value = 0;
  }
  return {
    name: "offset",
    options: value,
    fn(middlewareArguments) {
      const {
        x: x2,
        y: y2,
        placement,
        rects
      } = middlewareArguments;
      const diffCoords = convertValueToCoords({
        placement,
        rects,
        value
      });
      return {
        x: x2 + diffCoords.x,
        y: y2 + diffCoords.y,
        data: diffCoords
      };
    }
  };
};
function getCrossAxis(axis) {
  return axis === "x" ? "y" : "x";
}
const shift = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "shift",
    options: options2,
    async fn(middlewareArguments) {
      const {
        x: x2,
        y: y2,
        placement
      } = middlewareArguments;
      const {
        mainAxis: checkMainAxis = true,
        crossAxis: checkCrossAxis = false,
        limiter = {
          fn: (_ref) => {
            let {
              x: x3,
              y: y3
            } = _ref;
            return {
              x: x3,
              y: y3
            };
          }
        },
        ...detectOverflowOptions
      } = options2;
      const coords = {
        x: x2,
        y: y2
      };
      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
      const mainAxis = getMainAxisFromPlacement(getBasePlacement(placement));
      const crossAxis = getCrossAxis(mainAxis);
      let mainAxisCoord = coords[mainAxis];
      let crossAxisCoord = coords[crossAxis];
      if (checkMainAxis) {
        const minSide = mainAxis === "y" ? "top" : "left";
        const maxSide = mainAxis === "y" ? "bottom" : "right";
        const min2 = mainAxisCoord + overflow[minSide];
        const max2 = mainAxisCoord - overflow[maxSide];
        mainAxisCoord = within(min2, mainAxisCoord, max2);
      }
      if (checkCrossAxis) {
        const minSide = crossAxis === "y" ? "top" : "left";
        const maxSide = crossAxis === "y" ? "bottom" : "right";
        const min2 = crossAxisCoord + overflow[minSide];
        const max2 = crossAxisCoord - overflow[maxSide];
        crossAxisCoord = within(min2, crossAxisCoord, max2);
      }
      const limitedCoords = limiter.fn({
        ...middlewareArguments,
        [mainAxis]: mainAxisCoord,
        [crossAxis]: crossAxisCoord
      });
      return {
        ...limitedCoords,
        data: {
          x: limitedCoords.x - x2,
          y: limitedCoords.y - y2
        }
      };
    }
  };
};
const size = function(options2) {
  if (options2 === void 0) {
    options2 = {};
  }
  return {
    name: "size",
    options: options2,
    async fn(middlewareArguments) {
      var _middlewareData$size;
      const {
        placement,
        rects,
        middlewareData
      } = middlewareArguments;
      const {
        apply: apply2,
        ...detectOverflowOptions
      } = options2;
      if ((_middlewareData$size = middlewareData.size) != null && _middlewareData$size.skip) {
        return {};
      }
      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
      const basePlacement = getBasePlacement(placement);
      const isEnd = getAlignment(placement) === "end";
      let heightSide;
      let widthSide;
      if (basePlacement === "top" || basePlacement === "bottom") {
        heightSide = basePlacement;
        widthSide = isEnd ? "left" : "right";
      } else {
        widthSide = basePlacement;
        heightSide = isEnd ? "top" : "bottom";
      }
      const xMin = max$1(overflow.left, 0);
      const xMax = max$1(overflow.right, 0);
      const yMin = max$1(overflow.top, 0);
      const yMax = max$1(overflow.bottom, 0);
      const dimensions = {
        height: rects.floating.height - (["left", "right"].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max$1(overflow.top, overflow.bottom)) : overflow[heightSide]),
        width: rects.floating.width - (["top", "bottom"].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max$1(overflow.left, overflow.right)) : overflow[widthSide])
      };
      apply2 == null ? void 0 : apply2({
        ...dimensions,
        ...rects
      });
      return {
        data: {
          skip: true
        },
        reset: {
          rects: true
        }
      };
    }
  };
};
function isWindow(value) {
  return (value == null ? void 0 : value.toString()) === "[object Window]";
}
function getWindow(node) {
  if (node == null) {
    return window;
  }
  if (!isWindow(node)) {
    const ownerDocument = node.ownerDocument;
    return ownerDocument ? ownerDocument.defaultView || window : window;
  }
  return node;
}
function getComputedStyle$1(element) {
  return getWindow(element).getComputedStyle(element);
}
function getNodeName(node) {
  return isWindow(node) ? "" : node ? (node.nodeName || "").toLowerCase() : "";
}
function isHTMLElement(value) {
  return value instanceof getWindow(value).HTMLElement;
}
function isElement(value) {
  return value instanceof getWindow(value).Element;
}
function isNode(value) {
  return value instanceof getWindow(value).Node;
}
function isShadowRoot(node) {
  const OwnElement = getWindow(node).ShadowRoot;
  return node instanceof OwnElement || node instanceof ShadowRoot;
}
function isScrollParent(element) {
  const {
    overflow,
    overflowX,
    overflowY
  } = getComputedStyle$1(element);
  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function isTableElement(element) {
  return ["table", "td", "th"].includes(getNodeName(element));
}
function isContainingBlock(element) {
  const isFirefox = navigator.userAgent.toLowerCase().includes("firefox");
  const css = getComputedStyle$1(element);
  return css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].includes(css.willChange) || isFirefox && css.willChange === "filter" || isFirefox && (css.filter ? css.filter !== "none" : false);
}
const min = Math.min;
const max = Math.max;
const round = Math.round;
function getBoundingClientRect(element, includeScale) {
  if (includeScale === void 0) {
    includeScale = false;
  }
  const clientRect = element.getBoundingClientRect();
  let scaleX = 1;
  let scaleY = 1;
  if (includeScale && isHTMLElement(element)) {
    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
  }
  return {
    width: clientRect.width / scaleX,
    height: clientRect.height / scaleY,
    top: clientRect.top / scaleY,
    right: clientRect.right / scaleX,
    bottom: clientRect.bottom / scaleY,
    left: clientRect.left / scaleX,
    x: clientRect.left / scaleX,
    y: clientRect.top / scaleY
  };
}
function getDocumentElement(node) {
  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
}
function getNodeScroll(element) {
  if (isWindow(element)) {
    return {
      scrollLeft: element.pageXOffset,
      scrollTop: element.pageYOffset
    };
  }
  return {
    scrollLeft: element.scrollLeft,
    scrollTop: element.scrollTop
  };
}
function getWindowScrollBarX(element) {
  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;
}
function isScaled(element) {
  const rect2 = getBoundingClientRect(element);
  return round(rect2.width) !== element.offsetWidth || round(rect2.height) !== element.offsetHeight;
}
function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
  const documentElement = getDocumentElement(offsetParent);
  const rect2 = getBoundingClientRect(element, isOffsetParentAnElement && isScaled(offsetParent));
  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };
  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") {
    if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
      scroll = getNodeScroll(offsetParent);
    }
    if (isHTMLElement(offsetParent)) {
      const offsetRect = getBoundingClientRect(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    } else if (documentElement) {
      offsets.x = getWindowScrollBarX(documentElement);
    }
  }
  return {
    x: rect2.left + scroll.scrollLeft - offsets.x,
    y: rect2.top + scroll.scrollTop - offsets.y,
    width: rect2.width,
    height: rect2.height
  };
}
function getParentNode(node) {
  if (getNodeName(node) === "html") {
    return node;
  }
  return (
    // this is a quicker (but less type safe) way to save quite some bytes from the bundle
    // @ts-ignore
    node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
    node.parentNode || // DOM Element detected
    (isShadowRoot(node) ? node.host : null) || // ShadowRoot detected
    getDocumentElement(node)
  );
}
function getTrueOffsetParent(element) {
  if (!isHTMLElement(element) || getComputedStyle(element).position === "fixed") {
    return null;
  }
  return element.offsetParent;
}
function getContainingBlock(element) {
  let currentNode = getParentNode(element);
  while (isHTMLElement(currentNode) && !["html", "body"].includes(getNodeName(currentNode))) {
    if (isContainingBlock(currentNode)) {
      return currentNode;
    } else {
      currentNode = currentNode.parentNode;
    }
  }
  return null;
}
function getOffsetParent(element) {
  const window2 = getWindow(element);
  let offsetParent = getTrueOffsetParent(element);
  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") {
    offsetParent = getTrueOffsetParent(offsetParent);
  }
  if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static" && !isContainingBlock(offsetParent))) {
    return window2;
  }
  return offsetParent || getContainingBlock(element) || window2;
}
function getDimensions(element) {
  return {
    width: element.offsetWidth,
    height: element.offsetHeight
  };
}
function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
  let {
    rect: rect2,
    offsetParent,
    strategy
  } = _ref;
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
  const documentElement = getDocumentElement(offsetParent);
  if (offsetParent === documentElement) {
    return rect2;
  }
  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };
  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== "fixed") {
    if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
      scroll = getNodeScroll(offsetParent);
    }
    if (isHTMLElement(offsetParent)) {
      const offsetRect = getBoundingClientRect(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    }
  }
  return {
    ...rect2,
    x: rect2.x - scroll.scrollLeft + offsets.x,
    y: rect2.y - scroll.scrollTop + offsets.y
  };
}
function getViewportRect(element) {
  const win = getWindow(element);
  const html = getDocumentElement(element);
  const visualViewport = win.visualViewport;
  let width = html.clientWidth;
  let height = html.clientHeight;
  let x2 = 0;
  let y2 = 0;
  if (visualViewport) {
    width = visualViewport.width;
    height = visualViewport.height;
    if (Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < 0.01) {
      x2 = visualViewport.offsetLeft;
      y2 = visualViewport.offsetTop;
    }
  }
  return {
    width,
    height,
    x: x2,
    y: y2
  };
}
function getDocumentRect(element) {
  var _element$ownerDocumen;
  const html = getDocumentElement(element);
  const scroll = getNodeScroll(element);
  const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
  const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
  const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
  let x2 = -scroll.scrollLeft + getWindowScrollBarX(element);
  const y2 = -scroll.scrollTop;
  if (getComputedStyle$1(body || html).direction === "rtl") {
    x2 += max(html.clientWidth, body ? body.clientWidth : 0) - width;
  }
  return {
    width,
    height,
    x: x2,
    y: y2
  };
}
function getScrollParent(node) {
  if (["html", "body", "#document"].includes(getNodeName(node))) {
    return node.ownerDocument.body;
  }
  if (isHTMLElement(node) && isScrollParent(node)) {
    return node;
  }
  return getScrollParent(getParentNode(node));
}
function getScrollParents(node, list3) {
  var _node$ownerDocument;
  if (list3 === void 0) {
    list3 = [];
  }
  const scrollParent = getScrollParent(node);
  const isBody = scrollParent === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);
  const win = getWindow(scrollParent);
  const target2 = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
  const updatedList = list3.concat(target2);
  return isBody ? updatedList : (
    // @ts-ignore: isBody tells us target will be an HTMLElement here
    updatedList.concat(getScrollParents(getParentNode(target2)))
  );
}
function contains(parent, child) {
  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();
  if (parent.contains(child)) {
    return true;
  } else if (rootNode && isShadowRoot(rootNode)) {
    let next = child;
    do {
      if (next && parent === next) {
        return true;
      }
      next = next.parentNode || next.host;
    } while (next);
  }
  return false;
}
function getInnerBoundingClientRect(element) {
  const clientRect = getBoundingClientRect(element);
  const top2 = clientRect.top + element.clientTop;
  const left = clientRect.left + element.clientLeft;
  return {
    top: top2,
    left,
    x: left,
    y: top2,
    right: left + element.clientWidth,
    bottom: top2 + element.clientHeight,
    width: element.clientWidth,
    height: element.clientHeight
  };
}
function getClientRectFromClippingParent(element, clippingParent) {
  if (clippingParent === "viewport") {
    return rectToClientRect(getViewportRect(element));
  }
  if (isElement(clippingParent)) {
    return getInnerBoundingClientRect(clippingParent);
  }
  return rectToClientRect(getDocumentRect(getDocumentElement(element)));
}
function getClippingParents(element) {
  const clippingParents = getScrollParents(getParentNode(element));
  const canEscapeClipping = ["absolute", "fixed"].includes(getComputedStyle$1(element).position);
  const clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
  if (!isElement(clipperElement)) {
    return [];
  }
  return clippingParents.filter((clippingParent) => isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body");
}
function getClippingClientRect(_ref) {
  let {
    element,
    boundary,
    rootBoundary
  } = _ref;
  const mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
  const clippingParents = [...mainClippingParents, rootBoundary];
  const firstClippingParent = clippingParents[0];
  const clippingRect = clippingParents.reduce((accRect, clippingParent) => {
    const rect2 = getClientRectFromClippingParent(element, clippingParent);
    accRect.top = max(rect2.top, accRect.top);
    accRect.right = min(rect2.right, accRect.right);
    accRect.bottom = min(rect2.bottom, accRect.bottom);
    accRect.left = max(rect2.left, accRect.left);
    return accRect;
  }, getClientRectFromClippingParent(element, firstClippingParent));
  clippingRect.width = clippingRect.right - clippingRect.left;
  clippingRect.height = clippingRect.bottom - clippingRect.top;
  clippingRect.x = clippingRect.left;
  clippingRect.y = clippingRect.top;
  return clippingRect;
}
const platform = {
  getElementRects: (_ref) => {
    let {
      reference: reference3,
      floating,
      strategy
    } = _ref;
    return {
      reference: getRectRelativeToOffsetParent(reference3, getOffsetParent(floating), strategy),
      floating: {
        ...getDimensions(floating),
        x: 0,
        y: 0
      }
    };
  },
  convertOffsetParentRelativeRectToViewportRelativeRect: (args) => convertOffsetParentRelativeRectToViewportRelativeRect(args),
  getOffsetParent: (_ref2) => {
    let {
      element
    } = _ref2;
    return getOffsetParent(element);
  },
  isElement: (value) => isElement(value),
  getDocumentElement: (_ref3) => {
    let {
      element
    } = _ref3;
    return getDocumentElement(element);
  },
  getClippingClientRect: (args) => getClippingClientRect(args),
  getDimensions: (_ref4) => {
    let {
      element
    } = _ref4;
    return getDimensions(element);
  },
  getClientRects: (_ref5) => {
    let {
      element
    } = _ref5;
    return element.getClientRects();
  }
};
const computePosition = (reference3, floating, options2) => computePosition$1(reference3, floating, {
  platform,
  ...options2
});
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a2, b2) => {
  for (var prop2 in b2 || (b2 = {}))
    if (__hasOwnProp.call(b2, prop2))
      __defNormalProp(a2, prop2, b2[prop2]);
  if (__getOwnPropSymbols)
    for (var prop2 of __getOwnPropSymbols(b2)) {
      if (__propIsEnum.call(b2, prop2))
        __defNormalProp(a2, prop2, b2[prop2]);
    }
  return a2;
};
var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));
const config = {
  disabled: false,
  distance: 5,
  skidding: 0,
  container: "body",
  boundary: void 0,
  instantMove: false,
  disposeTimeout: 5e3,
  popperTriggers: [],
  strategy: "absolute",
  preventOverflow: true,
  flip: true,
  shift: true,
  overflowPadding: 0,
  arrowPadding: 0,
  arrowOverflow: true,
  themes: {
    tooltip: {
      placement: "top",
      triggers: ["hover", "focus", "touch"],
      hideTriggers: (events) => [...events, "click"],
      delay: {
        show: 200,
        hide: 0
      },
      handleResize: false,
      html: false,
      loadingContent: "..."
    },
    dropdown: {
      placement: "bottom",
      triggers: ["click"],
      delay: 0,
      handleResize: true,
      autoHide: true
    },
    menu: {
      $extend: "dropdown",
      triggers: ["hover", "focus"],
      popperTriggers: ["hover", "focus"],
      delay: {
        show: 0,
        hide: 400
      }
    }
  }
};
function getDefaultConfig(theme, key) {
  let themeConfig = config.themes[theme] || {};
  let value;
  do {
    value = themeConfig[key];
    if (typeof value === "undefined") {
      if (themeConfig.$extend) {
        themeConfig = config.themes[themeConfig.$extend] || {};
      } else {
        themeConfig = null;
        value = config[key];
      }
    } else {
      themeConfig = null;
    }
  } while (themeConfig);
  return value;
}
function getThemeClasses(theme) {
  const result = [theme];
  let themeConfig = config.themes[theme] || {};
  do {
    if (themeConfig.$extend && !themeConfig.$resetCss) {
      result.push(themeConfig.$extend);
      themeConfig = config.themes[themeConfig.$extend] || {};
    } else {
      themeConfig = null;
    }
  } while (themeConfig);
  return result.map((c2) => `v-popper--theme-${c2}`);
}
function getAllParentThemes(theme) {
  const result = [theme];
  let themeConfig = config.themes[theme] || {};
  do {
    if (themeConfig.$extend) {
      result.push(themeConfig.$extend);
      themeConfig = config.themes[themeConfig.$extend] || {};
    } else {
      themeConfig = null;
    }
  } while (themeConfig);
  return result;
}
let supportsPassive = false;
if (typeof window !== "undefined") {
  supportsPassive = false;
  try {
    const opts = Object.defineProperty({}, "passive", {
      get() {
        supportsPassive = true;
      }
    });
    window.addEventListener("test", null, opts);
  } catch (e) {
  }
}
let isIOS = false;
if (typeof window !== "undefined" && typeof navigator !== "undefined") {
  isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
}
const placements = ["auto", "top", "bottom", "left", "right"].reduce((acc, base2) => acc.concat([
  base2,
  `${base2}-start`,
  `${base2}-end`
]), []);
const SHOW_EVENT_MAP = {
  hover: "mouseenter",
  focus: "focus",
  click: "click",
  touch: "touchstart"
};
const HIDE_EVENT_MAP = {
  hover: "mouseleave",
  focus: "blur",
  click: "click",
  touch: "touchend"
};
function removeFromArray(array, item) {
  const index2 = array.indexOf(item);
  if (index2 !== -1) {
    array.splice(index2, 1);
  }
}
function nextFrame() {
  return new Promise((resolve3) => requestAnimationFrame(() => {
    requestAnimationFrame(resolve3);
  }));
}
const shownPoppers = [];
let hidingPopper = null;
const shownPoppersByTheme = {};
function getShownPoppersByTheme(theme) {
  let list3 = shownPoppersByTheme[theme];
  if (!list3) {
    list3 = shownPoppersByTheme[theme] = [];
  }
  return list3;
}
let Element$1 = function() {
};
if (typeof window !== "undefined") {
  Element$1 = window.Element;
}
function defaultPropFactory(prop2) {
  return function(props) {
    return getDefaultConfig(props.theme, prop2);
  };
}
const PROVIDE_KEY = "__floating-vue__popper";
var PrivatePopper = () => defineComponent({
  name: "VPopper",
  provide() {
    return {
      [PROVIDE_KEY]: {
        parentPopper: this
      }
    };
  },
  inject: {
    [PROVIDE_KEY]: { default: null }
  },
  props: {
    theme: {
      type: String,
      required: true
    },
    targetNodes: {
      type: Function,
      required: true
    },
    referenceNode: {
      type: Function,
      required: true
    },
    popperNode: {
      type: Function,
      required: true
    },
    shown: {
      type: Boolean,
      default: false
    },
    showGroup: {
      type: String,
      default: null
    },
    ariaId: {
      default: null
    },
    disabled: {
      type: Boolean,
      default: defaultPropFactory("disabled")
    },
    positioningDisabled: {
      type: Boolean,
      default: defaultPropFactory("positioningDisabled")
    },
    placement: {
      type: String,
      default: defaultPropFactory("placement"),
      validator: (value) => placements.includes(value)
    },
    delay: {
      type: [String, Number, Object],
      default: defaultPropFactory("delay")
    },
    distance: {
      type: [Number, String],
      default: defaultPropFactory("distance")
    },
    skidding: {
      type: [Number, String],
      default: defaultPropFactory("skidding")
    },
    triggers: {
      type: Array,
      default: defaultPropFactory("triggers")
    },
    showTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("showTriggers")
    },
    hideTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("hideTriggers")
    },
    popperTriggers: {
      type: Array,
      default: defaultPropFactory("popperTriggers")
    },
    popperShowTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("popperShowTriggers")
    },
    popperHideTriggers: {
      type: [Array, Function],
      default: defaultPropFactory("popperHideTriggers")
    },
    container: {
      type: [String, Object, Element$1, Boolean],
      default: defaultPropFactory("container")
    },
    boundary: {
      type: [String, Element$1],
      default: defaultPropFactory("boundary")
    },
    strategy: {
      type: String,
      validator: (value) => ["absolute", "fixed"].includes(value),
      default: defaultPropFactory("strategy")
    },
    autoHide: {
      type: [Boolean, Function],
      default: defaultPropFactory("autoHide")
    },
    handleResize: {
      type: Boolean,
      default: defaultPropFactory("handleResize")
    },
    instantMove: {
      type: Boolean,
      default: defaultPropFactory("instantMove")
    },
    eagerMount: {
      type: Boolean,
      default: defaultPropFactory("eagerMount")
    },
    popperClass: {
      type: [String, Array, Object],
      default: defaultPropFactory("popperClass")
    },
    computeTransformOrigin: {
      type: Boolean,
      default: defaultPropFactory("computeTransformOrigin")
    },
    autoMinSize: {
      type: Boolean,
      default: defaultPropFactory("autoMinSize")
    },
    autoSize: {
      type: [Boolean, String],
      default: defaultPropFactory("autoSize")
    },
    autoMaxSize: {
      type: Boolean,
      default: defaultPropFactory("autoMaxSize")
    },
    autoBoundaryMaxSize: {
      type: Boolean,
      default: defaultPropFactory("autoBoundaryMaxSize")
    },
    preventOverflow: {
      type: Boolean,
      default: defaultPropFactory("preventOverflow")
    },
    overflowPadding: {
      type: [Number, String],
      default: defaultPropFactory("overflowPadding")
    },
    arrowPadding: {
      type: [Number, String],
      default: defaultPropFactory("arrowPadding")
    },
    arrowOverflow: {
      type: Boolean,
      default: defaultPropFactory("arrowOverflow")
    },
    flip: {
      type: Boolean,
      default: defaultPropFactory("flip")
    },
    shift: {
      type: Boolean,
      default: defaultPropFactory("shift")
    },
    shiftCrossAxis: {
      type: Boolean,
      default: defaultPropFactory("shiftCrossAxis")
    }
  },
  emits: [
    "show",
    "hide",
    "update:shown",
    "apply-show",
    "apply-hide",
    "close-group",
    "close-directive",
    "auto-hide",
    "resize",
    "dispose"
  ],
  data() {
    return {
      isShown: false,
      isMounted: false,
      skipTransition: false,
      classes: {
        showFrom: false,
        showTo: false,
        hideFrom: false,
        hideTo: true
      },
      result: {
        x: 0,
        y: 0,
        placement: "",
        strategy: this.strategy,
        arrow: {
          x: 0,
          y: 0,
          centerOffset: 0
        },
        transformOrigin: null
      },
      shownChildren: /* @__PURE__ */ new Set(),
      lastAutoHide: true
    };
  },
  computed: {
    popperId() {
      return this.ariaId != null ? this.ariaId : this.randomId;
    },
    shouldMountContent() {
      return this.eagerMount || this.isMounted;
    },
    slotData() {
      return {
        popperId: this.popperId,
        isShown: this.isShown,
        shouldMountContent: this.shouldMountContent,
        skipTransition: this.skipTransition,
        autoHide: typeof this.autoHide === "function" ? this.lastAutoHide : this.autoHide,
        show: this.show,
        hide: this.hide,
        handleResize: this.handleResize,
        onResize: this.onResize,
        classes: __spreadProps(__spreadValues({}, this.classes), {
          popperClass: this.popperClass
        }),
        result: this.positioningDisabled ? null : this.result,
        attrs: this.$attrs
      };
    },
    parentPopper() {
      var _a2;
      return (_a2 = this[PROVIDE_KEY]) == null ? void 0 : _a2.parentPopper;
    },
    hasPopperShowTriggerHover() {
      var _a2, _b2;
      return ((_a2 = this.popperTriggers) == null ? void 0 : _a2.includes("hover")) || ((_b2 = this.popperShowTriggers) == null ? void 0 : _b2.includes("hover"));
    }
  },
  watch: __spreadValues(__spreadValues({
    shown: "$_autoShowHide",
    disabled(value) {
      if (value) {
        this.dispose();
      } else {
        this.init();
      }
    },
    async container() {
      if (this.isShown) {
        this.$_ensureTeleport();
        await this.$_computePosition();
      }
    }
  }, [
    "triggers",
    "positioningDisabled"
  ].reduce((acc, prop2) => {
    acc[prop2] = "$_refreshListeners";
    return acc;
  }, {})), [
    "placement",
    "distance",
    "skidding",
    "boundary",
    "strategy",
    "overflowPadding",
    "arrowPadding",
    "preventOverflow",
    "shift",
    "shiftCrossAxis",
    "flip"
  ].reduce((acc, prop2) => {
    acc[prop2] = "$_computePosition";
    return acc;
  }, {})),
  created() {
    this.$_isDisposed = true;
    this.randomId = `popper_${[Math.random(), Date.now()].map((n) => n.toString(36).substring(2, 10)).join("_")}`;
    if (this.autoMinSize) {
      console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.');
    }
    if (this.autoMaxSize) {
      console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.");
    }
  },
  mounted() {
    this.init();
    this.$_detachPopperNode();
  },
  activated() {
    this.$_autoShowHide();
  },
  deactivated() {
    this.hide();
  },
  beforeUnmount() {
    this.dispose();
  },
  methods: {
    show({ event = null, skipDelay = false, force = false } = {}) {
      var _a2, _b2;
      if (((_a2 = this.parentPopper) == null ? void 0 : _a2.lockedChild) && this.parentPopper.lockedChild !== this)
        return;
      this.$_pendingHide = false;
      if (force || !this.disabled) {
        if (((_b2 = this.parentPopper) == null ? void 0 : _b2.lockedChild) === this) {
          this.parentPopper.lockedChild = null;
        }
        this.$_scheduleShow(event, skipDelay);
        this.$emit("show");
        this.$_showFrameLocked = true;
        requestAnimationFrame(() => {
          this.$_showFrameLocked = false;
        });
      }
      this.$emit("update:shown", true);
    },
    hide({ event = null, skipDelay = false } = {}) {
      var _a2;
      if (this.$_hideInProgress)
        return;
      if (this.shownChildren.size > 0) {
        this.$_pendingHide = true;
        return;
      }
      if (this.hasPopperShowTriggerHover && this.$_isAimingPopper()) {
        if (this.parentPopper) {
          this.parentPopper.lockedChild = this;
          clearTimeout(this.parentPopper.lockedChildTimer);
          this.parentPopper.lockedChildTimer = setTimeout(() => {
            if (this.parentPopper.lockedChild === this) {
              this.parentPopper.lockedChild.hide({ skipDelay });
              this.parentPopper.lockedChild = null;
            }
          }, 1e3);
        }
        return;
      }
      if (((_a2 = this.parentPopper) == null ? void 0 : _a2.lockedChild) === this) {
        this.parentPopper.lockedChild = null;
      }
      this.$_pendingHide = false;
      this.$_scheduleHide(event, skipDelay);
      this.$emit("hide");
      this.$emit("update:shown", false);
    },
    init() {
      if (!this.$_isDisposed)
        return;
      this.$_isDisposed = false;
      this.isMounted = false;
      this.$_events = [];
      this.$_preventShow = false;
      this.$_referenceNode = this.referenceNode();
      this.$_targetNodes = this.targetNodes().filter((e) => e.nodeType === e.ELEMENT_NODE);
      this.$_popperNode = this.popperNode();
      this.$_innerNode = this.$_popperNode.querySelector(".v-popper__inner");
      this.$_arrowNode = this.$_popperNode.querySelector(".v-popper__arrow-container");
      this.$_swapTargetAttrs("title", "data-original-title");
      this.$_detachPopperNode();
      if (this.triggers.length) {
        this.$_addEventListeners();
      }
      if (this.shown) {
        this.show();
      }
    },
    dispose() {
      if (this.$_isDisposed)
        return;
      this.$_isDisposed = true;
      this.$_removeEventListeners();
      this.hide({ skipDelay: true });
      this.$_detachPopperNode();
      this.isMounted = false;
      this.isShown = false;
      this.$_updateParentShownChildren(false);
      this.$_swapTargetAttrs("data-original-title", "title");
      this.$emit("dispose");
    },
    async onResize() {
      if (this.isShown) {
        await this.$_computePosition();
        this.$emit("resize");
      }
    },
    async $_computePosition() {
      var _a2;
      if (this.$_isDisposed || this.positioningDisabled)
        return;
      const options2 = {
        strategy: this.strategy,
        middleware: []
      };
      if (this.distance || this.skidding) {
        options2.middleware.push(offset({
          mainAxis: this.distance,
          crossAxis: this.skidding
        }));
      }
      const isPlacementAuto = this.placement.startsWith("auto");
      if (isPlacementAuto) {
        options2.middleware.push(autoPlacement({
          alignment: (_a2 = this.placement.split("-")[1]) != null ? _a2 : ""
        }));
      } else {
        options2.placement = this.placement;
      }
      if (this.preventOverflow) {
        if (this.shift) {
          options2.middleware.push(shift({
            padding: this.overflowPadding,
            boundary: this.boundary,
            crossAxis: this.shiftCrossAxis
          }));
        }
        if (!isPlacementAuto && this.flip) {
          options2.middleware.push(flip({
            padding: this.overflowPadding,
            boundary: this.boundary
          }));
        }
      }
      options2.middleware.push(arrow({
        element: this.$_arrowNode,
        padding: this.arrowPadding
      }));
      if (this.arrowOverflow) {
        options2.middleware.push({
          name: "arrowOverflow",
          fn: ({ placement, rects, middlewareData }) => {
            let overflow;
            const { centerOffset } = middlewareData.arrow;
            if (placement.startsWith("top") || placement.startsWith("bottom")) {
              overflow = Math.abs(centerOffset) > rects.reference.width / 2;
            } else {
              overflow = Math.abs(centerOffset) > rects.reference.height / 2;
            }
            return {
              data: {
                overflow
              }
            };
          }
        });
      }
      if (this.autoMinSize || this.autoSize) {
        const autoSize = this.autoSize ? this.autoSize : this.autoMinSize ? "min" : null;
        options2.middleware.push({
          name: "autoSize",
          fn: ({ rects, placement, middlewareData }) => {
            var _a22;
            if ((_a22 = middlewareData.autoSize) == null ? void 0 : _a22.skip) {
              return {};
            }
            let width;
            let height;
            if (placement.startsWith("top") || placement.startsWith("bottom")) {
              width = rects.reference.width;
            } else {
              height = rects.reference.height;
            }
            this.$_innerNode.style[autoSize === "min" ? "minWidth" : autoSize === "max" ? "maxWidth" : "width"] = width != null ? `${width}px` : null;
            this.$_innerNode.style[autoSize === "min" ? "minHeight" : autoSize === "max" ? "maxHeight" : "height"] = height != null ? `${height}px` : null;
            return {
              data: {
                skip: true
              },
              reset: {
                rects: true
              }
            };
          }
        });
      }
      if (this.autoMaxSize || this.autoBoundaryMaxSize) {
        this.$_innerNode.style.maxWidth = null;
        this.$_innerNode.style.maxHeight = null;
        options2.middleware.push(size({
          boundary: this.boundary,
          padding: this.overflowPadding,
          apply: ({ width, height }) => {
            this.$_innerNode.style.maxWidth = width != null ? `${width}px` : null;
            this.$_innerNode.style.maxHeight = height != null ? `${height}px` : null;
          }
        }));
      }
      const data = await computePosition(this.$_referenceNode, this.$_popperNode, options2);
      Object.assign(this.result, {
        x: data.x,
        y: data.y,
        placement: data.placement,
        strategy: data.strategy,
        arrow: __spreadValues(__spreadValues({}, data.middlewareData.arrow), data.middlewareData.arrowOverflow)
      });
    },
    $_scheduleShow(event = null, skipDelay = false) {
      this.$_updateParentShownChildren(true);
      this.$_hideInProgress = false;
      clearTimeout(this.$_scheduleTimer);
      if (hidingPopper && this.instantMove && hidingPopper.instantMove && hidingPopper !== this.parentPopper) {
        hidingPopper.$_applyHide(true);
        this.$_applyShow(true);
        return;
      }
      if (skipDelay) {
        this.$_applyShow();
      } else {
        this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay("show"));
      }
    },
    $_scheduleHide(event = null, skipDelay = false) {
      if (this.shownChildren.size > 0) {
        this.$_pendingHide = true;
        return;
      }
      this.$_updateParentShownChildren(false);
      this.$_hideInProgress = true;
      clearTimeout(this.$_scheduleTimer);
      if (this.isShown) {
        hidingPopper = this;
      }
      if (skipDelay) {
        this.$_applyHide();
      } else {
        this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay("hide"));
      }
    },
    $_computeDelay(type2) {
      const delay = this.delay;
      return parseInt(delay && delay[type2] || delay || 0);
    },
    async $_applyShow(skipTransition = false) {
      clearTimeout(this.$_disposeTimer);
      clearTimeout(this.$_scheduleTimer);
      this.skipTransition = skipTransition;
      if (this.isShown) {
        return;
      }
      this.$_ensureTeleport();
      await nextFrame();
      await this.$_computePosition();
      await this.$_applyShowEffect();
      if (!this.positioningDisabled) {
        this.$_registerEventListeners([
          ...getScrollParents(this.$_referenceNode),
          ...getScrollParents(this.$_popperNode)
        ], "scroll", () => {
          this.$_computePosition();
        });
      }
    },
    async $_applyShowEffect() {
      if (this.$_hideInProgress)
        return;
      if (this.computeTransformOrigin) {
        const bounds = this.$_referenceNode.getBoundingClientRect();
        const popperWrapper = this.$_popperNode.querySelector(".v-popper__wrapper");
        const parentBounds = popperWrapper.parentNode.getBoundingClientRect();
        const x2 = bounds.x + bounds.width / 2 - (parentBounds.left + popperWrapper.offsetLeft);
        const y2 = bounds.y + bounds.height / 2 - (parentBounds.top + popperWrapper.offsetTop);
        this.result.transformOrigin = `${x2}px ${y2}px`;
      }
      this.isShown = true;
      this.$_applyAttrsToTarget({
        "aria-describedby": this.popperId,
        "data-popper-shown": ""
      });
      const showGroup = this.showGroup;
      if (showGroup) {
        let popover;
        for (let i2 = 0; i2 < shownPoppers.length; i2++) {
          popover = shownPoppers[i2];
          if (popover.showGroup !== showGroup) {
            popover.hide();
            popover.$emit("close-group");
          }
        }
      }
      shownPoppers.push(this);
      document.body.classList.add("v-popper--some-open");
      for (const theme of getAllParentThemes(this.theme)) {
        getShownPoppersByTheme(theme).push(this);
        document.body.classList.add(`v-popper--some-open--${theme}`);
      }
      this.$emit("apply-show");
      this.classes.showFrom = true;
      this.classes.showTo = false;
      this.classes.hideFrom = false;
      this.classes.hideTo = false;
      await nextFrame();
      this.classes.showFrom = false;
      this.classes.showTo = true;
      this.$_popperNode.focus();
    },
    async $_applyHide(skipTransition = false) {
      if (this.shownChildren.size > 0) {
        this.$_pendingHide = true;
        this.$_hideInProgress = false;
        return;
      }
      clearTimeout(this.$_scheduleTimer);
      if (!this.isShown) {
        return;
      }
      this.skipTransition = skipTransition;
      removeFromArray(shownPoppers, this);
      if (shownPoppers.length === 0) {
        document.body.classList.remove("v-popper--some-open");
      }
      for (const theme of getAllParentThemes(this.theme)) {
        const list3 = getShownPoppersByTheme(theme);
        removeFromArray(list3, this);
        if (list3.length === 0) {
          document.body.classList.remove(`v-popper--some-open--${theme}`);
        }
      }
      if (hidingPopper === this) {
        hidingPopper = null;
      }
      this.isShown = false;
      this.$_applyAttrsToTarget({
        "aria-describedby": void 0,
        "data-popper-shown": void 0
      });
      clearTimeout(this.$_disposeTimer);
      const disposeTime = getDefaultConfig(this.theme, "disposeTimeout");
      if (disposeTime !== null) {
        this.$_disposeTimer = setTimeout(() => {
          if (this.$_popperNode) {
            this.$_detachPopperNode();
            this.isMounted = false;
          }
        }, disposeTime);
      }
      this.$_removeEventListeners("scroll");
      this.$emit("apply-hide");
      this.classes.showFrom = false;
      this.classes.showTo = false;
      this.classes.hideFrom = true;
      this.classes.hideTo = false;
      await nextFrame();
      this.classes.hideFrom = false;
      this.classes.hideTo = true;
    },
    $_autoShowHide() {
      if (this.shown) {
        this.show();
      } else {
        this.hide();
      }
    },
    $_ensureTeleport() {
      if (this.$_isDisposed)
        return;
      let container = this.container;
      if (typeof container === "string") {
        container = window.document.querySelector(container);
      } else if (container === false) {
        container = this.$_targetNodes[0].parentNode;
      }
      if (!container) {
        throw new Error("No container for popover: " + this.container);
      }
      container.appendChild(this.$_popperNode);
      this.isMounted = true;
    },
    $_addEventListeners() {
      const handleShow = (event) => {
        if (this.isShown && !this.$_hideInProgress) {
          return;
        }
        event.usedByTooltip = true;
        !this.$_preventShow && this.show({ event });
      };
      this.$_registerTriggerListeners(this.$_targetNodes, SHOW_EVENT_MAP, this.triggers, this.showTriggers, handleShow);
      this.$_registerTriggerListeners([this.$_popperNode], SHOW_EVENT_MAP, this.popperTriggers, this.popperShowTriggers, handleShow);
      const handleHide = (event) => {
        if (event.usedByTooltip) {
          return;
        }
        this.hide({ event });
      };
      this.$_registerTriggerListeners(this.$_targetNodes, HIDE_EVENT_MAP, this.triggers, this.hideTriggers, handleHide);
      this.$_registerTriggerListeners([this.$_popperNode], HIDE_EVENT_MAP, this.popperTriggers, this.popperHideTriggers, handleHide);
    },
    $_registerEventListeners(targetNodes, eventType, handler) {
      this.$_events.push({ targetNodes, eventType, handler });
      targetNodes.forEach((node) => node.addEventListener(eventType, handler, supportsPassive ? {
        passive: true
      } : void 0));
    },
    $_registerTriggerListeners(targetNodes, eventMap, commonTriggers, customTrigger, handler) {
      let triggers = commonTriggers;
      if (customTrigger != null) {
        triggers = typeof customTrigger === "function" ? customTrigger(triggers) : customTrigger;
      }
      triggers.forEach((trigger2) => {
        const eventType = eventMap[trigger2];
        if (eventType) {
          this.$_registerEventListeners(targetNodes, eventType, handler);
        }
      });
    },
    $_removeEventListeners(filterEventType) {
      const newList = [];
      this.$_events.forEach((listener) => {
        const { targetNodes, eventType, handler } = listener;
        if (!filterEventType || filterEventType === eventType) {
          targetNodes.forEach((node) => node.removeEventListener(eventType, handler));
        } else {
          newList.push(listener);
        }
      });
      this.$_events = newList;
    },
    $_refreshListeners() {
      if (!this.$_isDisposed) {
        this.$_removeEventListeners();
        this.$_addEventListeners();
      }
    },
    $_handleGlobalClose(event, touch = false) {
      if (this.$_showFrameLocked)
        return;
      this.hide({ event });
      if (event.closePopover) {
        this.$emit("close-directive");
      } else {
        this.$emit("auto-hide");
      }
      if (touch) {
        this.$_preventShow = true;
        setTimeout(() => {
          this.$_preventShow = false;
        }, 300);
      }
    },
    $_detachPopperNode() {
      this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode);
    },
    $_swapTargetAttrs(attrFrom, attrTo) {
      for (const el2 of this.$_targetNodes) {
        const value = el2.getAttribute(attrFrom);
        if (value) {
          el2.removeAttribute(attrFrom);
          el2.setAttribute(attrTo, value);
        }
      }
    },
    $_applyAttrsToTarget(attrs) {
      for (const el2 of this.$_targetNodes) {
        for (const n in attrs) {
          const value = attrs[n];
          if (value == null) {
            el2.removeAttribute(n);
          } else {
            el2.setAttribute(n, value);
          }
        }
      }
    },
    $_updateParentShownChildren(value) {
      let parent = this.parentPopper;
      while (parent) {
        if (value) {
          parent.shownChildren.add(this.randomId);
        } else {
          parent.shownChildren.delete(this.randomId);
          if (parent.$_pendingHide) {
            parent.hide();
          }
        }
        parent = parent.parentPopper;
      }
    },
    $_isAimingPopper() {
      const referenceBounds = this.$_referenceNode.getBoundingClientRect();
      if (mouseX >= referenceBounds.left && mouseX <= referenceBounds.right && mouseY >= referenceBounds.top && mouseY <= referenceBounds.bottom) {
        const popperBounds = this.$_popperNode.getBoundingClientRect();
        const vectorX = mouseX - mousePreviousX;
        const vectorY = mouseY - mousePreviousY;
        const distance = popperBounds.left + popperBounds.width / 2 - mousePreviousX + (popperBounds.top + popperBounds.height / 2) - mousePreviousY;
        const newVectorLength = distance + popperBounds.width + popperBounds.height;
        const edgeX = mousePreviousX + vectorX * newVectorLength;
        const edgeY = mousePreviousY + vectorY * newVectorLength;
        return lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.left, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.right, popperBounds.top) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.right, popperBounds.top, popperBounds.right, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.bottom, popperBounds.right, popperBounds.bottom);
      }
      return false;
    }
  },
  render() {
    return this.$slots.default(this.slotData);
  }
});
if (typeof document !== "undefined" && typeof window !== "undefined") {
  if (isIOS) {
    document.addEventListener("touchstart", handleGlobalMousedown, supportsPassive ? {
      passive: true,
      capture: true
    } : true);
    document.addEventListener("touchend", handleGlobalTouchend, supportsPassive ? {
      passive: true,
      capture: true
    } : true);
  } else {
    window.addEventListener("mousedown", handleGlobalMousedown, true);
    window.addEventListener("click", handleGlobalClick, true);
  }
  window.addEventListener("resize", computePositionAllShownPoppers);
}
function handleGlobalMousedown(event) {
  for (let i2 = 0; i2 < shownPoppers.length; i2++) {
    const popper = shownPoppers[i2];
    try {
      const popperContent = popper.popperNode();
      popper.$_mouseDownContains = popperContent.contains(event.target);
    } catch (e) {
    }
  }
}
function handleGlobalClick(event) {
  handleGlobalClose(event);
}
function handleGlobalTouchend(event) {
  handleGlobalClose(event, true);
}
function handleGlobalClose(event, touch = false) {
  const preventClose = {};
  for (let i2 = shownPoppers.length - 1; i2 >= 0; i2--) {
    const popper = shownPoppers[i2];
    try {
      const contains2 = popper.$_containsGlobalTarget = isContainingEventTarget(popper, event);
      popper.$_pendingHide = false;
      requestAnimationFrame(() => {
        popper.$_pendingHide = false;
        if (preventClose[popper.randomId])
          return;
        if (shouldAutoHide(popper, contains2, event)) {
          popper.$_handleGlobalClose(event, touch);
          if (!event.closeAllPopover && event.closePopover && contains2) {
            let parent2 = popper.parentPopper;
            while (parent2) {
              preventClose[parent2.randomId] = true;
              parent2 = parent2.parentPopper;
            }
            return;
          }
          let parent = popper.parentPopper;
          while (parent) {
            if (shouldAutoHide(parent, parent.$_containsGlobalTarget, event)) {
              parent.$_handleGlobalClose(event, touch);
            } else {
              break;
            }
            parent = parent.parentPopper;
          }
        }
      });
    } catch (e) {
    }
  }
}
function isContainingEventTarget(popper, event) {
  const popperContent = popper.popperNode();
  return popper.$_mouseDownContains || popperContent.contains(event.target);
}
function shouldAutoHide(popper, contains2, event) {
  return event.closeAllPopover || event.closePopover && contains2 || getAutoHideResult(popper, event) && !contains2;
}
function getAutoHideResult(popper, event) {
  if (typeof popper.autoHide === "function") {
    const result = popper.autoHide(event);
    popper.lastAutoHide = result;
    return result;
  }
  return popper.autoHide;
}
function computePositionAllShownPoppers(event) {
  for (let i2 = 0; i2 < shownPoppers.length; i2++) {
    const popper = shownPoppers[i2];
    popper.$_computePosition(event);
  }
}
function hideAllPoppers() {
  for (let i2 = 0; i2 < shownPoppers.length; i2++) {
    const popper = shownPoppers[i2];
    popper.hide();
  }
}
let mousePreviousX = 0;
let mousePreviousY = 0;
let mouseX = 0;
let mouseY = 0;
if (typeof window !== "undefined") {
  window.addEventListener("mousemove", (event) => {
    mousePreviousX = mouseX;
    mousePreviousY = mouseY;
    mouseX = event.clientX;
    mouseY = event.clientY;
  }, supportsPassive ? {
    passive: true
  } : void 0);
}
function lineIntersectsLine(x1, y1, x2, y2, x3, y3, x4, y4) {
  const uA = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1));
  const uB = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1));
  return uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1;
}
var _export_sfc = (sfc, props) => {
  const target2 = sfc.__vccOpts || sfc;
  for (const [key, val] of props) {
    target2[key] = val;
  }
  return target2;
};
const _sfc_main$6$1 = {
  extends: PrivatePopper()
};
function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
  return openBlock(), createElementBlock("div", mergeProps({
    ref: "reference",
    class: "v-popper"
  }, _ctx.$attrs, {
    class: {
      "v-popper--shown": _ctx.slotData.isShown
    }
  }), [
    renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(_ctx.slotData)))
  ], 16);
}
var Popper$1 = /* @__PURE__ */ _export_sfc(_sfc_main$6$1, [["render", _sfc_render$3]]);
function getInternetExplorerVersion() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf("MSIE ");
  if (msie > 0) {
    return parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)), 10);
  }
  var trident = ua.indexOf("Trident/");
  if (trident > 0) {
    var rv = ua.indexOf("rv:");
    return parseInt(ua.substring(rv + 3, ua.indexOf(".", rv)), 10);
  }
  var edge = ua.indexOf("Edge/");
  if (edge > 0) {
    return parseInt(ua.substring(edge + 5, ua.indexOf(".", edge)), 10);
  }
  return -1;
}
let isIE;
function initCompat() {
  if (!initCompat.init) {
    initCompat.init = true;
    isIE = getInternetExplorerVersion() !== -1;
  }
}
var script = {
  name: "ResizeObserver",
  props: {
    emitOnMount: {
      type: Boolean,
      default: false
    },
    ignoreWidth: {
      type: Boolean,
      default: false
    },
    ignoreHeight: {
      type: Boolean,
      default: false
    }
  },
  emits: [
    "notify"
  ],
  mounted() {
    initCompat();
    nextTick(() => {
      this._w = this.$el.offsetWidth;
      this._h = this.$el.offsetHeight;
      if (this.emitOnMount) {
        this.emitSize();
      }
    });
    const object = document.createElement("object");
    this._resizeObject = object;
    object.setAttribute("aria-hidden", "true");
    object.setAttribute("tabindex", -1);
    object.onload = this.addResizeHandlers;
    object.type = "text/html";
    if (isIE) {
      this.$el.appendChild(object);
    }
    object.data = "about:blank";
    if (!isIE) {
      this.$el.appendChild(object);
    }
  },
  beforeUnmount() {
    this.removeResizeHandlers();
  },
  methods: {
    compareAndNotify() {
      if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) {
        this._w = this.$el.offsetWidth;
        this._h = this.$el.offsetHeight;
        this.emitSize();
      }
    },
    emitSize() {
      this.$emit("notify", {
        width: this._w,
        height: this._h
      });
    },
    addResizeHandlers() {
      this._resizeObject.contentDocument.defaultView.addEventListener("resize", this.compareAndNotify);
      this.compareAndNotify();
    },
    removeResizeHandlers() {
      if (this._resizeObject && this._resizeObject.onload) {
        if (!isIE && this._resizeObject.contentDocument) {
          this._resizeObject.contentDocument.defaultView.removeEventListener("resize", this.compareAndNotify);
        }
        this.$el.removeChild(this._resizeObject);
        this._resizeObject.onload = null;
        this._resizeObject = null;
      }
    }
  }
};
const _withId = /* @__PURE__ */ withScopeId();
pushScopeId("data-v-b329ee4c");
const _hoisted_1$2$1 = {
  class: "resize-observer",
  tabindex: "-1"
};
popScopeId();
const render$x = /* @__PURE__ */ _withId((_ctx, _cache, $props, $setup, $data, $options) => {
  return openBlock(), createBlock("div", _hoisted_1$2$1);
});
script.render = render$x;
script.__scopeId = "data-v-b329ee4c";
script.__file = "src/components/ResizeObserver.vue";
var PrivateThemeClass = (prop2 = "theme") => ({
  computed: {
    themeClass() {
      return getThemeClasses(this[prop2]);
    }
  }
});
const _sfc_main$5$1 = defineComponent({
  name: "VPopperContent",
  components: {
    ResizeObserver: script
  },
  mixins: [
    PrivateThemeClass()
  ],
  props: {
    popperId: String,
    theme: String,
    shown: Boolean,
    mounted: Boolean,
    skipTransition: Boolean,
    autoHide: Boolean,
    handleResize: Boolean,
    classes: Object,
    result: Object
  },
  emits: [
    "hide",
    "resize"
  ],
  methods: {
    toPx(value) {
      if (value != null && !isNaN(value)) {
        return `${value}px`;
      }
      return null;
    }
  }
});
const _hoisted_1$1$1 = ["id", "aria-hidden", "tabindex", "data-popper-placement"];
const _hoisted_2$1$1 = {
  ref: "inner",
  class: "v-popper__inner"
};
const _hoisted_3$W = /* @__PURE__ */ createBaseVNode("div", { class: "v-popper__arrow-outer" }, null, -1);
const _hoisted_4$z = /* @__PURE__ */ createBaseVNode("div", { class: "v-popper__arrow-inner" }, null, -1);
const _hoisted_5$k = [
  _hoisted_3$W,
  _hoisted_4$z
];
function _sfc_render$2$1(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_ResizeObserver = resolveComponent("ResizeObserver");
  return openBlock(), createElementBlock("div", {
    id: _ctx.popperId,
    ref: "popover",
    class: normalizeClass(["v-popper__popper", [
      _ctx.themeClass,
      _ctx.classes.popperClass,
      {
        "v-popper__popper--shown": _ctx.shown,
        "v-popper__popper--hidden": !_ctx.shown,
        "v-popper__popper--show-from": _ctx.classes.showFrom,
        "v-popper__popper--show-to": _ctx.classes.showTo,
        "v-popper__popper--hide-from": _ctx.classes.hideFrom,
        "v-popper__popper--hide-to": _ctx.classes.hideTo,
        "v-popper__popper--skip-transition": _ctx.skipTransition,
        "v-popper__popper--arrow-overflow": _ctx.result && _ctx.result.arrow.overflow,
        "v-popper__popper--no-positioning": !_ctx.result
      }
    ]]),
    style: normalizeStyle(_ctx.result ? {
      position: _ctx.result.strategy,
      transform: `translate3d(${Math.round(_ctx.result.x)}px,${Math.round(_ctx.result.y)}px,0)`
    } : void 0),
    "aria-hidden": _ctx.shown ? "false" : "true",
    tabindex: _ctx.autoHide ? 0 : void 0,
    "data-popper-placement": _ctx.result ? _ctx.result.placement : void 0,
    onKeyup: _cache[2] || (_cache[2] = withKeys(($event) => _ctx.autoHide && _ctx.$emit("hide"), ["esc"]))
  }, [
    createBaseVNode("div", {
      class: "v-popper__backdrop",
      onClick: _cache[0] || (_cache[0] = ($event) => _ctx.autoHide && _ctx.$emit("hide"))
    }),
    createBaseVNode("div", {
      class: "v-popper__wrapper",
      style: normalizeStyle(_ctx.result ? {
        transformOrigin: _ctx.result.transformOrigin
      } : void 0)
    }, [
      createBaseVNode("div", _hoisted_2$1$1, [
        _ctx.mounted ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
          createBaseVNode("div", null, [
            renderSlot(_ctx.$slots, "default")
          ]),
          _ctx.handleResize ? (openBlock(), createBlock(_component_ResizeObserver, {
            key: 0,
            onNotify: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("resize", $event))
          })) : createCommentVNode("", true)
        ], 64)) : createCommentVNode("", true)
      ], 512),
      createBaseVNode("div", {
        ref: "arrow",
        class: "v-popper__arrow-container",
        style: normalizeStyle(_ctx.result ? {
          left: _ctx.toPx(_ctx.result.arrow.x),
          top: _ctx.toPx(_ctx.result.arrow.y)
        } : void 0)
      }, _hoisted_5$k, 4)
    ], 4)
  ], 46, _hoisted_1$1$1);
}
var PrivatePopperContent = /* @__PURE__ */ _export_sfc(_sfc_main$5$1, [["render", _sfc_render$2$1]]);
var PrivatePopperMethods = {
  methods: {
    show(...args) {
      return this.$refs.popper.show(...args);
    },
    hide(...args) {
      return this.$refs.popper.hide(...args);
    },
    dispose(...args) {
      return this.$refs.popper.dispose(...args);
    },
    onResize(...args) {
      return this.$refs.popper.onResize(...args);
    }
  }
};
const _sfc_main$4$1 = defineComponent({
  name: "VPopperWrapper",
  components: {
    Popper: Popper$1,
    PopperContent: PrivatePopperContent
  },
  mixins: [
    PrivatePopperMethods,
    PrivateThemeClass("finalTheme")
  ],
  props: {
    theme: {
      type: String,
      default: null
    }
  },
  computed: {
    finalTheme() {
      var _a2;
      return (_a2 = this.theme) != null ? _a2 : this.$options.vPopperTheme;
    }
  },
  methods: {
    getTargetNodes() {
      return Array.from(this.$refs.popper.$el.children).filter((node) => node !== this.$refs.popperContent.$el);
    }
  }
});
function _sfc_render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
  const _component_PopperContent = resolveComponent("PopperContent");
  const _component_Popper = resolveComponent("Popper");
  return openBlock(), createBlock(_component_Popper, {
    ref: "popper",
    theme: _ctx.finalTheme,
    "target-nodes": _ctx.getTargetNodes,
    "reference-node": () => _ctx.$refs.popper.$el,
    "popper-node": () => _ctx.$refs.popperContent.$el,
    class: normalizeClass([
      _ctx.themeClass
    ])
  }, {
    default: withCtx(({
      popperId,
      isShown,
      shouldMountContent,
      skipTransition,
      autoHide,
      show,
      hide,
      handleResize,
      onResize,
      classes,
      result
    }) => [
      renderSlot(_ctx.$slots, "default", {
        shown: isShown,
        show,
        hide
      }),
      createVNode(_component_PopperContent, {
        ref: "popperContent",
        "popper-id": popperId,
        theme: _ctx.finalTheme,
        shown: isShown,
        mounted: shouldMountContent,
        "skip-transition": skipTransition,
        "auto-hide": autoHide,
        "handle-resize": handleResize,
        classes,
        result,
        onHide: hide,
        onResize
      }, {
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "popper", {
            shown: isShown,
            hide
          })
        ]),
        _: 2
      }, 1032, ["popper-id", "theme", "shown", "mounted", "skip-transition", "auto-hide", "handle-resize", "classes", "result", "onHide", "onResize"])
    ]),
    _: 3
  }, 8, ["theme", "target-nodes", "reference-node", "popper-node", "class"]);
}
var PrivatePopperWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$4$1, [["render", _sfc_render$1$1]]);
defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
  name: "VDropdown",
  vPopperTheme: "dropdown"
}));
const _sfc_main$2$1 = defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
  name: "VMenu",
  vPopperTheme: "menu"
}));
const _sfc_main$1$1 = defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
  name: "VTooltip",
  vPopperTheme: "tooltip"
}));
defineComponent({
  name: "VTooltipDirective",
  components: {
    Popper: PrivatePopper(),
    PopperContent: PrivatePopperContent
  },
  mixins: [
    PrivatePopperMethods
  ],
  inheritAttrs: false,
  props: {
    theme: {
      type: String,
      default: "tooltip"
    },
    html: {
      type: Boolean,
      default: (props) => getDefaultConfig(props.theme, "html")
    },
    content: {
      type: [String, Number, Function],
      default: null
    },
    loadingContent: {
      type: String,
      default: (props) => getDefaultConfig(props.theme, "loadingContent")
    }
  },
  data() {
    return {
      asyncContent: null
    };
  },
  computed: {
    isContentAsync() {
      return typeof this.content === "function";
    },
    loading() {
      return this.isContentAsync && this.asyncContent == null;
    },
    finalContent() {
      if (this.isContentAsync) {
        return this.loading ? this.loadingContent : this.asyncContent;
      }
      return this.content;
    }
  },
  watch: {
    content: {
      handler() {
        this.fetchContent(true);
      },
      immediate: true
    },
    async finalContent() {
      await this.$nextTick();
      this.$refs.popper.onResize();
    }
  },
  created() {
    this.$_fetchId = 0;
  },
  methods: {
    fetchContent(force) {
      if (typeof this.content === "function" && this.$_isShown && (force || !this.$_loading && this.asyncContent == null)) {
        this.asyncContent = null;
        this.$_loading = true;
        const fetchId = ++this.$_fetchId;
        const result = this.content(this);
        if (result.then) {
          result.then((res) => this.onResult(fetchId, res));
        } else {
          this.onResult(fetchId, result);
        }
      }
    },
    onResult(fetchId, result) {
      if (fetchId !== this.$_fetchId)
        return;
      this.$_loading = false;
      this.asyncContent = result;
    },
    onShow() {
      this.$_isShown = true;
      this.fetchContent();
    },
    onHide() {
      this.$_isShown = false;
    }
  }
});
const options = config;
const Menu = _sfc_main$2$1;
const Tooltip = _sfc_main$1$1;
const _hoisted_1$1e = { class: "flex min-h-screen items-center justify-center" };
const _sfc_main$Y = /* @__PURE__ */ defineComponent({
  __name: "StandardModal",
  props: {
    modelValue: { type: Boolean, default: false },
    helpLink: { default: "https://on.cypress.io" },
    helpText: { default: `${defaultMessages.links.needHelp}` },
    variant: { default: void 0 },
    noHelp: { type: Boolean, default: false },
    title: { default: "" },
    class: { default: void 0 }
  },
  emits: ["update:modelValue"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const setIsOpen = (val) => {
      emit2("update:modelValue", val);
    };
    watch(
      () => props.modelValue,
      (value) => {
        if (value) {
          hideAllPoppers();
        }
      },
      { immediate: true }
    );
    const closeModal = () => {
      setIsOpen(false);
    };
    return (_ctx, _cache) => {
      return openBlock(), createBlock(unref(Dialog), {
        open: __props.modelValue,
        class: "inset-0 z-10 fixed overflow-y-auto",
        onClose: _cache[0] || (_cache[0] = ($event) => closeModal())
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$1e, [
            renderSlot(_ctx.$slots, "overlay", { classes: "fixed inset-0" }, () => [
              createVNode(unref(DialogOverlay), { class: "bg-gray-800 opacity-90 fixed sm:inset-0" })
            ]),
            createBaseVNode("div", {
              "data-cy": "standard-modal",
              class: normalizeClass(["bg-white rounded mx-auto ring-[#9095AD40] ring-4 relative", props.class || ""])
            }, [
              createVNode(_sfc_main$$, {
                "no-help": __props.noHelp,
                "help-link": __props.helpLink,
                "help-text": __props.helpText,
                onClose: closeModal
              }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "title", {}, () => [
                    createTextVNode(toDisplayString$1(__props.title), 1)
                  ])
                ]),
                _: 3
              }, 8, ["no-help", "help-link", "help-text"]),
              _ctx.$slots.description ? (openBlock(), createBlock(unref(DialogDescription), {
                key: 0,
                class: "font-normal p-[24px] text-gray-700"
              }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "description")
                ]),
                _: 3
              })) : createCommentVNode("", true),
              createVNode(_sfc_main$_, { variant: __props.variant }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "default")
                ]),
                _: 3
              }, 8, ["variant"]),
              _ctx.$slots.footer ? (openBlock(), createBlock(StandardModalFooter, { key: 1 }, {
                default: withCtx(() => [
                  renderSlot(_ctx.$slots, "footer")
                ]),
                _: 3
              })) : createCommentVNode("", true)
            ], 2)
          ])
        ]),
        _: 3
      }, 8, ["open"]);
    };
  }
});
const _hoisted_1$1d = { class: "m-[24px]" };
const _hoisted_2$14 = { class: "font-normal text-sm text-gray-600 select-none" };
const _hoisted_3$V = { class: "font-normal text-sm text-gray-600 select-none" };
const _hoisted_4$y = {
  key: 0,
  class: "mt-[16px]"
};
const _hoisted_5$j = {
  key: 1,
  class: "flex h-full items-center justify-center"
};
const _hoisted_6$c = { class: "flex space-x-4" };
const _sfc_main$X = /* @__PURE__ */ defineComponent({
  __name: "ChooseExternalEditorModal",
  props: {
    open: { type: Boolean },
    gql: null
  },
  emits: ["selected", "close"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment ChooseExternalEditorModal on Query {
  ...ChooseExternalEditor
}`;
    gql`
mutation ChooseExternalEditorModal_SetPreferredEditorBinary ($value: String!) {
  setPreferences (value: $value, type: global) {
    localSettings {
      preferences {
        preferredEditorBinary
      }
    }
  }
}`;
    const setPreferredBinaryEditor = useMutation(ChooseExternalEditorModal_SetPreferredEditorBinaryDocument);
    const preferredEditor = ref("");
    function close() {
      preferredEditor.value = "";
      emit2("close");
    }
    async function selectEditor() {
      await setPreferredBinaryEditor.executeMutation({
        value: JSON.stringify({ preferredEditorBinary: preferredEditor.value })
      });
      emit2("selected");
    }
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_loading_x16 = __unplugin_components_0$l;
      return openBlock(), createBlock(_sfc_main$Y, {
        "model-value": props.open,
        variant: "bare",
        "help-link": "https://on.cypress.io/file-opener-preference",
        "help-text": unref(t2)("links.needHelp"),
        "data-cy": "choose-editor-modal",
        "onUpdate:modelValue": close
      }, {
        title: withCtx(() => [
          createTextVNode(toDisplayString$1(unref(t2)("globalPage.externalEditorPreferences")), 1)
        ]),
        footer: withCtx(() => {
          var _a2;
          return [
            createBaseVNode("div", _hoisted_6$c, [
              createVNode(_sfc_main$1t, {
                disabled: !((_a2 = preferredEditor.value) == null ? void 0 : _a2.length),
                onClick: selectEditor
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("globalPage.saveChanges")), 1)
                ]),
                _: 1
              }, 8, ["disabled"]),
              createVNode(_sfc_main$1t, {
                variant: "outline",
                onClick: close
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("globalPage.cancel")), 1)
                ]),
                _: 1
              })
            ])
          ];
        }),
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$1d, [
            createBaseVNode("div", null, [
              createBaseVNode("p", _hoisted_2$14, [
                renderSlot(_ctx.$slots, "description", {}, () => [
                  createBaseVNode("span", null, toDisplayString$1(unref(t2)("globalPage.externalEditorPreferencesDescription1")), 1)
                ])
              ]),
              createBaseVNode("p", _hoisted_3$V, [
                renderSlot(_ctx.$slots, "description", {}, () => [
                  createVNode(_component_i18n_t, {
                    scope: "global",
                    keypath: "globalPage.externalEditorPreferencesDescription2"
                  }, {
                    default: withCtx(() => [
                      createBaseVNode("strong", null, toDisplayString$1(unref(t2)("globalPage.settings")), 1)
                    ]),
                    _: 1
                  })
                ])
              ])
            ]),
            props.gql.localSettings ? (openBlock(), createElementBlock("div", _hoisted_4$y, [
              createVNode(_sfc_main$10, {
                gql: props.gql,
                onChoseEditor: _cache[0] || (_cache[0] = (val) => preferredEditor.value = val ?? "")
              }, null, 8, ["gql"])
            ])) : (openBlock(), createElementBlock("div", _hoisted_5$j, [
              createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
            ]))
          ])
        ]),
        _: 3
      }, 8, ["model-value", "help-text"]);
    };
  }
});
const _hoisted_1$1c = {
  key: 0,
  class: "mb-[16px] text-gray-800"
};
const _sfc_main$W = /* @__PURE__ */ defineComponent({
  __name: "GlobalPage",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
mutation GlobalPage_addProject($path: String, $open: Boolean = true) {
  addProject(path: $path, open: $open) {
    ...GlobalPage
  }
}
`;
    gql`
fragment GlobalPage on Query {
  projects {
    ...GlobalProjectCard
  }
  ...ChooseExternalEditor
}
`;
    gql`
mutation GlobalPage_RemoveProject($path: String!) {
  removeProject(path: $path) {
    ...GlobalPage
  }
}

mutation GlobalPage_OpenDirectoryInIDE ($path: String!) {
  openDirectoryInIDE(path: $path)
}

mutation GlobalPage_OpenInFinder ($path: String!) {
  openInFinder(path: $path)
}
`;
    const addProject = useMutation(GlobalPage_AddProjectDocument);
    const openDirectoryInIDE = useMutation(GlobalPage_OpenDirectoryInIdeDocument);
    const openInFinder = useMutation(GlobalPage_OpenInFinderDocument);
    function handleAddProject(path) {
      addProject.executeMutation({ path });
    }
    function handleOpenInFinder(path) {
      openInFinder.executeMutation({ path });
    }
    let projectPathToOpen;
    function editorChosen() {
      isChooseEditorOpen.value = false;
      openDirectoryInIDE.executeMutation({ path: projectPathToOpen });
    }
    function handleOpenInIDE(path) {
      if (!props.gql.localSettings.preferences.preferredEditorBinary) {
        projectPathToOpen = path;
        isChooseEditorOpen.value = true;
      } else {
        openDirectoryInIDE.executeMutation({ path });
      }
    }
    const removeProject = useMutation(GlobalPage_RemoveProjectDocument);
    function handleRemoveProject(path) {
      removeProject.executeMutation({ path });
    }
    function matchedGlobalProjects(project) {
      return project.__typename === "GlobalProject" && project.title.toLowerCase().includes(match3.value.toLowerCase());
    }
    const filteredProjects = computed(() => {
      return (props.gql.projects || []).filter(matchedGlobalProjects);
    });
    const match3 = ref("");
    const isChooseEditorOpen = ref(false);
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      var _a2, _b2, _c, _d;
      return openBlock(), createElementBlock(Fragment, null, [
        ((_b2 = (_a2 = props.gql) == null ? void 0 : _a2.projects) == null ? void 0 : _b2.length) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
          createVNode(_sfc_main$13, {
            modelValue: match3.value,
            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => match3.value = $event),
            "project-count": (_c = unref(filteredProjects)) == null ? void 0 : _c.length,
            onAddProject: handleAddProject
          }, null, 8, ["modelValue", "project-count"]),
          unref(filteredProjects).length ? (openBlock(), createElementBlock("h2", _hoisted_1$1c, toDisplayString$1(unref(t2)("globalPage.recentProjectsHeader")), 1)) : createCommentVNode("", true),
          createBaseVNode("div", {
            class: normalizeClass({ "md:grid md:grid-cols-2 md:gap-[24px] mb-0": ((_d = unref(filteredProjects)) == null ? void 0 : _d.length) > 1 })
          }, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(unref(filteredProjects), (project) => {
              return openBlock(), createBlock(_sfc_main$17, {
                key: project.id,
                gql: project,
                class: "mb-[24px] md:mb-0",
                onRemoveProject: handleRemoveProject,
                onOpenInFinder: handleOpenInFinder,
                onOpenInIDE: handleOpenInIDE
              }, null, 8, ["gql"]);
            }), 128))
          ], 2)
        ], 64)) : (openBlock(), createBlock(_sfc_main$12, {
          key: 1,
          onAddProject: handleAddProject
        })),
        createVNode(_sfc_main$X, {
          open: isChooseEditorOpen.value,
          gql: props.gql,
          onClose: _cache[1] || (_cache[1] = ($event) => isChooseEditorOpen.value = false),
          onSelected: editorChosen
        }, null, 8, ["open", "gql"])
      ], 64);
    };
  }
});
const _hoisted_1$1b = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$13 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6 12L10 8L6 4",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$U = [
  _hoisted_2$13
];
function render$w(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1b, _hoisted_3$U);
}
const __unplugin_components_0$c = { name: "cy-chevron-right-small_x16", render: render$w };
const _hoisted_1$1a = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$12 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3H11M11 3L9 5M11 3L9 1",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$T = [
  _hoisted_2$12
];
function render$v(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$1a, _hoisted_3$T);
}
const RestartIcon = { name: "cy-restart_x16", render: render$v };
const _hoisted_1$19 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$11 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 14V2C2 1.44772 2.44772 1 3 1H13C13.5523 1 14 1.44772 14 2V14C14 14.5523 13.5523 15 13 15H3C2.44772 15 2 14.5523 2 14Z",
  fill: "#2E3247",
  class: "icon-light"
}, null, -1);
const _hoisted_3$S = /* @__PURE__ */ createBaseVNode("path", {
  d: "M5 8H8M5 5H11M5 11H10M13 1L3 1C2.44772 1 2 1.44772 2 2V14C2 14.5523 2.44772 15 3 15H13C13.5523 15 14 14.5523 14 14V2C14 1.44772 13.5523 1 13 1Z",
  stroke: "currentColor",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$x = [
  _hoisted_2$11,
  _hoisted_3$S
];
function render$u(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$19, _hoisted_4$x);
}
const __unplugin_components_1$3 = { name: "cy-document-text_x16", render: render$u };
const information_for_contributors$8 = [
  "This file has been converted from https://github.com/atom/language-css/blob/master/grammars/css.cson",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$8 = "https://github.com/atom/language-css/commit/033087e8caa1b87ca91ee5b211de118b6b3c311d";
const name$b = "css";
const scopeName$a = "source.css";
const patterns$a = [
  {
    include: "#comment-block"
  },
  {
    include: "#escapes"
  },
  {
    include: "#combinators"
  },
  {
    include: "#selector"
  },
  {
    include: "#at-rules"
  },
  {
    include: "#rule-list"
  }
];
const repository$a = {
  "at-rules": {
    patterns: [
      {
        begin: "\\A(?:\\xEF\\xBB\\xBF)?(?i:(?=\\s*@charset\\b))",
        end: ";|(?=$)",
        endCaptures: {
          "0": {
            name: "punctuation.terminator.rule.css"
          }
        },
        name: "meta.at-rule.charset.css",
        patterns: [
          {
            captures: {
              "1": {
                name: "invalid.illegal.not-lowercase.charset.css"
              },
              "2": {
                name: "invalid.illegal.leading-whitespace.charset.css"
              },
              "3": {
                name: "invalid.illegal.no-whitespace.charset.css"
              },
              "4": {
                name: "invalid.illegal.whitespace.charset.css"
              },
              "5": {
                name: "invalid.illegal.not-double-quoted.charset.css"
              },
              "6": {
                name: "invalid.illegal.unclosed-string.charset.css"
              },
              "7": {
                name: "invalid.illegal.unexpected-characters.charset.css"
              }
            },
            match: '(?x)        # Possible errors:\n\\G\n((?!@charset)@\\w+)   # Not lowercase (@charset is case-sensitive)\n|\n\\G(\\s+)             # Preceding whitespace\n|\n(@charset\\S[^;]*)    # No whitespace after @charset\n|\n(?<=@charset)         # Before quoted charset name\n(\\x20{2,}|\\t+)      # More than one space used, or a tab\n|\n(?<=@charset\\x20)    # Beginning of charset name\n([^";]+)              # Not double-quoted\n|\n("[^"]+$)             # Unclosed quote\n|\n(?<=")                # After charset name\n([^;]+)               # Unexpected junk instead of semicolon'
          },
          {
            captures: {
              "1": {
                name: "keyword.control.at-rule.charset.css"
              },
              "2": {
                name: "punctuation.definition.keyword.css"
              }
            },
            match: "((@)charset)(?=\\s)"
          },
          {
            begin: '"',
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.css"
              }
            },
            end: '"|$',
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.css"
              }
            },
            name: "string.quoted.double.css",
            patterns: [
              {
                begin: '(?:\\G|^)(?=(?:[^"])+$)',
                end: "$",
                name: "invalid.illegal.unclosed.string.css"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)((@)import)(?:\\s+|$|(?=['"]|/\\*))`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.import.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: ";",
        endCaptures: {
          "0": {
            name: "punctuation.terminator.rule.css"
          }
        },
        name: "meta.at-rule.import.css",
        patterns: [
          {
            begin: "\\G\\s*(?=/\\*)",
            end: "(?<=\\*/)\\s*",
            patterns: [
              {
                include: "#comment-block"
              }
            ]
          },
          {
            include: "#string"
          },
          {
            include: "#url"
          },
          {
            include: "#media-query-list"
          }
        ]
      },
      {
        begin: "(?i)((@)font-face)(?=\\s*|{|/\\*|$)",
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.font-face.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: "(?!\\G)",
        name: "meta.at-rule.font-face.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          },
          {
            include: "#rule-list"
          }
        ]
      },
      {
        begin: "(?i)(@)page(?=[\\s:{]|/\\*|$)",
        captures: {
          "0": {
            name: "keyword.control.at-rule.page.css"
          },
          "1": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: "(?=\\s*($|[:{;]))",
        name: "meta.at-rule.page.css",
        patterns: [
          {
            include: "#rule-list"
          }
        ]
      },
      {
        begin: "(?i)(?=@media(\\s|\\(|/\\*|$))",
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)media",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.media.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.media.header.css",
            patterns: [
              {
                include: "#media-query-list"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.media.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.media.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.media.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)(?=@counter-style([\\s'"{;]|/\\*|$))`,
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)counter-style",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.counter-style.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*{)",
            name: "meta.at-rule.counter-style.header.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                captures: {
                  "0": {
                    patterns: [
                      {
                        include: "#escapes"
                      }
                    ]
                  }
                },
                match: "(?x)\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
                name: "variable.parameter.style-name.css"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.property-list.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.property-list.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.counter-style.body.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                include: "#rule-list-innards"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)(?=@document([\\s'"{;]|/\\*|$))`,
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)document",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.document.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.document.header.css",
            patterns: [
              {
                begin: "(?i)(?<![\\w-])(url-prefix|domain|regexp)(\\()",
                beginCaptures: {
                  "1": {
                    name: "support.function.document-rule.css"
                  },
                  "2": {
                    name: "punctuation.section.function.begin.bracket.round.css"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "punctuation.section.function.end.bracket.round.css"
                  }
                },
                name: "meta.function.document-rule.css",
                patterns: [
                  {
                    include: "#string"
                  },
                  {
                    include: "#comment-block"
                  },
                  {
                    include: "#escapes"
                  },
                  {
                    match: `[^'")\\s]+`,
                    name: "variable.parameter.document-rule.css"
                  }
                ]
              },
              {
                include: "#url"
              },
              {
                include: "#commas"
              },
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.document.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.document.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.document.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\s'"{;]|/\\*|$))`,
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.keyframes.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*{)",
            name: "meta.at-rule.keyframes.header.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                captures: {
                  "0": {
                    patterns: [
                      {
                        include: "#escapes"
                      }
                    ]
                  }
                },
                match: "(?x)\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
                name: "variable.parameter.keyframe-list.css"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.keyframes.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.keyframes.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.keyframes.body.css",
            patterns: [
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              },
              {
                captures: {
                  "1": {
                    name: "entity.other.keyframe-offset.css"
                  },
                  "2": {
                    name: "entity.other.keyframe-offset.percentage.css"
                  }
                },
                match: "(?xi)\n(?<![\\w-]) (from|to) (?![\\w-])         # Keywords for 0% | 100%\n|\n([-+]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)%)     # Percentile value"
              },
              {
                include: "#rule-list"
              }
            ]
          }
        ]
      },
      {
        begin: "(?i)(?=@supports(\\s|\\(|/\\*|$))",
        end: "(?<=})(?!\\G)|(?=;)",
        patterns: [
          {
            begin: "(?i)\\G(@)supports",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.supports.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.supports.header.css",
            patterns: [
              {
                include: "#feature-query-operators"
              },
              {
                include: "#feature-query"
              },
              {
                include: "#comment-block"
              },
              {
                include: "#escapes"
              }
            ]
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.supports.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.supports.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.supports.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      },
      {
        begin: `(?i)((@)(-(ms|o)-)?viewport)(?=[\\s'"{;]|/\\*|$)`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.viewport.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: "(?=\\s*[@{;])",
        name: "meta.at-rule.viewport.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          }
        ]
      },
      {
        begin: `(?i)((@)font-feature-values)(?=[\\s'"{;]|/\\*|$)\\s*`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.font-feature-values.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        contentName: "variable.parameter.font-name.css",
        end: "(?=\\s*[@{;])",
        name: "meta.at-rule.font-features.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          }
        ]
      },
      {
        include: "#font-features"
      },
      {
        begin: `(?i)((@)namespace)(?=[\\s'";]|/\\*|$)`,
        beginCaptures: {
          "1": {
            name: "keyword.control.at-rule.namespace.css"
          },
          "2": {
            name: "punctuation.definition.keyword.css"
          }
        },
        end: ";|(?=[@{])",
        endCaptures: {
          "0": {
            name: "punctuation.terminator.rule.css"
          }
        },
        name: "meta.at-rule.namespace.css",
        patterns: [
          {
            include: "#url"
          },
          {
            captures: {
              "1": {
                patterns: [
                  {
                    include: "#comment-block"
                  }
                ]
              },
              "2": {
                name: "entity.name.function.namespace-prefix.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?xi)\n(?:\\G|^|(?<=\\s))\n(?=\n  (?<=\\s|^)                             # Starts with whitespace\n  (?:[-a-zA-Z_]|[^\\x00-\\x7F])          # Then a valid identifier character\n  |\n  \\s*                                   # Possible adjoining whitespace\n  /\\*(?:[^*]|\\*[^/])*\\*/              # Injected comment\n)\n(.*?)                                    # Grouped to embed #comment-block\n(\n  (?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n  (?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n    |\\\\(?:[0-9a-fA-F]{1,6}|.)\n  )*\n)"
          },
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        begin: "(?i)(?=@[\\w-]+[^;]+;s*$)",
        end: "(?<=;)(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)[\\w-]+",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: ";",
            endCaptures: {
              "0": {
                name: "punctuation.terminator.rule.css"
              }
            },
            name: "meta.at-rule.header.css"
          }
        ]
      },
      {
        begin: "(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))",
        end: "(?<=})(?!\\G)",
        patterns: [
          {
            begin: "(?i)\\G(@)[\\w-]+",
            beginCaptures: {
              "0": {
                name: "keyword.control.at-rule.css"
              },
              "1": {
                name: "punctuation.definition.keyword.css"
              }
            },
            end: "(?=\\s*[{;])",
            name: "meta.at-rule.header.css"
          },
          {
            begin: "{",
            beginCaptures: {
              "0": {
                name: "punctuation.section.begin.bracket.curly.css"
              }
            },
            end: "}",
            endCaptures: {
              "0": {
                name: "punctuation.section.end.bracket.curly.css"
              }
            },
            name: "meta.at-rule.body.css",
            patterns: [
              {
                include: "$self"
              }
            ]
          }
        ]
      }
    ]
  },
  "color-keywords": {
    patterns: [
      {
        match: "(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])",
        name: "support.constant.color.w3c-standard-color-name.css"
      },
      {
        match: "(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])",
        name: "support.constant.color.w3c-extended-color-name.css"
      },
      {
        match: "(?i)(?<![\\w-])currentColor(?![\\w-])",
        name: "support.constant.color.current.css"
      },
      {
        match: "(?xi) (?<![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])",
        name: "invalid.deprecated.color.system.css"
      }
    ]
  },
  combinators: {
    patterns: [
      {
        match: "/deep/|>>>",
        name: "invalid.deprecated.combinator.css"
      },
      {
        match: ">>|>|\\+|~",
        name: "keyword.operator.combinator.css"
      }
    ]
  },
  commas: {
    match: ",",
    name: "punctuation.separator.list.comma.css"
  },
  "comment-block": {
    begin: "/\\*",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.comment.begin.css"
      }
    },
    end: "\\*/",
    endCaptures: {
      "0": {
        name: "punctuation.definition.comment.end.css"
      }
    },
    name: "comment.block.css"
  },
  escapes: {
    patterns: [
      {
        match: "\\\\[0-9a-fA-F]{1,6}",
        name: "constant.character.escape.codepoint.css"
      },
      {
        begin: "\\\\$\\s*",
        end: "^(?<!\\G)",
        name: "constant.character.escape.newline.css"
      },
      {
        match: "\\\\.",
        name: "constant.character.escape.css"
      }
    ]
  },
  "feature-query": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.condition.begin.bracket.round.css"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.condition.end.bracket.round.css"
      }
    },
    name: "meta.feature-query.css",
    patterns: [
      {
        include: "#feature-query-operators"
      },
      {
        include: "#feature-query"
      }
    ]
  },
  "feature-query-operators": {
    patterns: [
      {
        match: "(?i)(?<=[\\s()]|^|\\*/)(and|not|or)(?=[\\s()]|/\\*|$)",
        name: "keyword.operator.logical.feature.$1.css"
      },
      {
        include: "#rule-list-innards"
      }
    ]
  },
  "font-features": {
    begin: `(?xi)
((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))
(?=[\\s@'"{;]|/\\*|$)`,
    beginCaptures: {
      "1": {
        name: "keyword.control.at-rule.${3:/downcase}.css"
      },
      "2": {
        name: "punctuation.definition.keyword.css"
      }
    },
    end: "(?<=})",
    name: "meta.at-rule.${3:/downcase}.css",
    patterns: [
      {
        begin: "{",
        beginCaptures: {
          "0": {
            name: "punctuation.section.property-list.begin.bracket.curly.css"
          }
        },
        end: "}",
        endCaptures: {
          "0": {
            name: "punctuation.section.property-list.end.bracket.curly.css"
          }
        },
        name: "meta.property-list.font-feature.css",
        patterns: [
          {
            captures: {
              "0": {
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?x)\n(?: [-a-zA-Z_]    | [^\\x00-\\x7F] )   # First letter\n(?: [-a-zA-Z0-9_] | [^\\x00-\\x7F]     # Remainder of identifier\n  | \\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
            name: "variable.font-feature.css"
          },
          {
            include: "#rule-list-innards"
          }
        ]
      }
    ]
  },
  functions: {
    patterns: [
      {
        begin: "(?i)(?<![\\w-])(calc)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.calc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.calc.css",
        patterns: [
          {
            match: "[*/]|(?<=\\s|^)[-+](?=\\s|$)",
            name: "keyword.operator.arithmetic.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(rgba?|hsla?)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.misc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.color.css",
        patterns: [
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: '(?xi) (?<![\\w-])\n(\n  (?:-webkit-|-moz-|-o-)?    # Accept prefixed/historical variants\n  (?:repeating-)?            # "Repeating"-type gradient\n  (?:linear|radial|conic)    # Shape\n  -gradient\n)\n(\\()',
        beginCaptures: {
          "1": {
            name: "support.function.gradient.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.gradient.css",
        patterns: [
          {
            match: "(?i)(?<![\\w-])(from|to|at)(?![\\w-])",
            name: "keyword.operator.gradient.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(-webkit-gradient)(\\()",
        beginCaptures: {
          "1": {
            name: "invalid.deprecated.gradient.function.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.gradient.invalid.deprecated.gradient.css",
        patterns: [
          {
            begin: "(?i)(?<![\\w-])(from|to|color-stop)(\\()",
            beginCaptures: {
              "1": {
                name: "invalid.deprecated.function.css"
              },
              "2": {
                name: "punctuation.section.function.begin.bracket.round.css"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "punctuation.section.function.end.bracket.round.css"
              }
            },
            patterns: [
              {
                include: "#property-values"
              }
            ]
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?xi) (?<![\\w-])\n(annotation|attr|blur|brightness|character-variant|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.misc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.misc.css",
        patterns: [
          {
            match: `(?i)(?<=[,\\s"]|\\*/|^)\\d+x(?=[\\s,"')]|/\\*|$)`,
            name: "constant.numeric.other.density.css"
          },
          {
            include: "#property-values"
          },
          {
            match: `[^'"),\\s]+`,
            name: "variable.parameter.misc.css"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(circle|ellipse|inset|polygon|rect)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.shape.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.shape.css",
        patterns: [
          {
            match: "(?i)(?<=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)",
            name: "keyword.operator.shape.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)(?<![\\w-])(cubic-bezier|steps)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.timing-function.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.timing-function.css",
        patterns: [
          {
            match: "(?i)(?<![\\w-])(start|end)(?=\\s*\\)|$)",
            name: "support.constant.step-direction.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?xi) (?<![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.transform.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#property-values"
          }
        ]
      },
      {
        include: "#url"
      },
      {
        begin: "(?i)(?<![\\w-])(var)(\\()",
        beginCaptures: {
          "1": {
            name: "support.function.misc.css"
          },
          "2": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        name: "meta.function.variable.css",
        patterns: [
          {
            name: "variable.argument.css",
            match: "(?x)\n--\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"
          },
          {
            include: "#property-values"
          }
        ]
      }
    ]
  },
  "functional-pseudo-classes": {
    patterns: [
      {
        begin: "(?i)((:)dir)(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#escapes"
          },
          {
            match: "(?i)(?<![\\w-])(ltr|rtl)(?![\\w-])",
            name: "support.constant.text-direction.css"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        begin: "(?i)((:)lang)(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            match: "(?<=[(,\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\s])",
            name: "support.constant.language-range.css"
          },
          {
            begin: '"',
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.css"
              }
            },
            end: '"',
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.css"
              }
            },
            name: "string.quoted.double.css",
            patterns: [
              {
                include: "#escapes"
              },
              {
                match: '(?<=["\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=["\\s])',
                name: "support.constant.language-range.css"
              }
            ]
          },
          {
            begin: "'",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.css"
              }
            },
            end: "'",
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.css"
              }
            },
            name: "string.quoted.single.css",
            patterns: [
              {
                include: "#escapes"
              },
              {
                match: "(?<=['\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\s])",
                name: "support.constant.language-range.css"
              }
            ]
          },
          {
            include: "#commas"
          }
        ]
      },
      {
        begin: "(?i)((:)(?:not|has|matches))(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#selector-innards"
          }
        ]
      },
      {
        begin: "(?i)((:)nth-(?:last-)?(?:child|of-type))(\\()",
        beginCaptures: {
          "1": {
            name: "entity.other.attribute-name.pseudo-class.css"
          },
          "2": {
            name: "punctuation.definition.entity.css"
          },
          "3": {
            name: "punctuation.section.function.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.section.function.end.bracket.round.css"
          }
        },
        patterns: [
          {
            match: "(?i)[+-]?(\\d+n?|n)(\\s*[+-]\\s*\\d+)?",
            name: "constant.numeric.css"
          },
          {
            match: "(?i)even|odd",
            name: "support.constant.parity.css"
          }
        ]
      }
    ]
  },
  "media-features": {
    captures: {
      "1": {
        name: "support.type.property-name.media.css"
      },
      "2": {
        name: "support.type.property-name.media.css"
      },
      "3": {
        name: "support.type.vendored.property-name.media.css"
      }
    },
    match: "(?xi)\n(?<=^|\\s|\\(|\\*/)           # Preceded by whitespace, bracket or comment\n(?:\n  # Standardised features\n  (\n    (?:min-|max-)?            # Range features\n    (?: height\n      | width\n      | aspect-ratio\n      | color\n      | color-index\n      | monochrome\n      | resolution\n    )\n    | grid                    # Discrete features\n    | scan\n    | orientation\n    | display-mode\n    | hover\n  )\n  |\n  # Deprecated features\n  (\n    (?:min-|max-)?            # Deprecated in Media Queries 4\n    device-\n    (?: height\n      | width\n      | aspect-ratio\n    )\n  )\n  |\n  # Vendor extensions\n  (\n    (?:\n      # Spec-compliant syntax\n      [-_]\n      (?: webkit              # Webkit/Blink\n        | apple|khtml         # Webkit aliases\n        | epub                # ePub3\n        | moz                 # Gecko\n        | ms                  # Microsoft\n        | o                   # Presto (pre-Opera 15)\n        | xv|ah|rim|atsc|     # Less common vendors\n          hp|tc|wap|ro\n      )\n      |\n      # Non-standard prefixes\n      (?: mso                 # Microsoft Office\n        | prince              # YesLogic\n      )\n    )\n    -\n    [\\w-]+                   # Feature name\n    (?=                       # Terminates correctly\n      \\s*                    # Possible whitespace\n      (?:                     # Possible injected comment\n        /\\*\n        (?:[^*]|\\*[^/])*\n        \\*/\n      )?\n      \\s*\n      [:)]                    # Ends with a colon or closed bracket\n    )\n  )\n)\n(?=\\s|$|[><:=]|\\)|/\\*)     # Terminates cleanly"
  },
  "media-feature-keywords": {
    match: "(?xi)\n(?<=^|\\s|:|\\*/)\n(?: portrait                  # Orientation\n  | landscape\n  | progressive               # Scan types\n  | interlace\n  | fullscreen                # Display modes\n  | standalone\n  | minimal-ui\n  | browser\n  | hover\n)\n(?=\\s|\\)|$)",
    name: "support.constant.property-value.css"
  },
  "media-query": {
    begin: "\\G",
    end: "(?=\\s*[{;])",
    patterns: [
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      },
      {
        include: "#media-types"
      },
      {
        match: "(?i)(?<=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)",
        name: "keyword.operator.logical.$1.media.css"
      },
      {
        match: "(?i)(?<=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)",
        name: "keyword.operator.logical.and.media.css"
      },
      {
        match: ",(?:(?:\\s*,)+|(?=\\s*[;){]))",
        name: "invalid.illegal.comma.css"
      },
      {
        include: "#commas"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.parameters.begin.bracket.round.css"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.parameters.end.bracket.round.css"
          }
        },
        patterns: [
          {
            include: "#media-features"
          },
          {
            include: "#media-feature-keywords"
          },
          {
            match: ":",
            name: "punctuation.separator.key-value.css"
          },
          {
            match: ">=|<=|=|<|>",
            name: "keyword.operator.comparison.css"
          },
          {
            captures: {
              "1": {
                name: "constant.numeric.css"
              },
              "2": {
                name: "keyword.operator.arithmetic.css"
              },
              "3": {
                name: "constant.numeric.css"
              }
            },
            match: "(\\d+)\\s*(/)\\s*(\\d+)",
            name: "meta.ratio.css"
          },
          {
            include: "#numeric-values"
          },
          {
            include: "#comment-block"
          }
        ]
      }
    ]
  },
  "media-query-list": {
    begin: "(?=\\s*[^{;])",
    end: "(?=\\s*[{;])",
    patterns: [
      {
        include: "#media-query"
      }
    ]
  },
  "media-types": {
    captures: {
      "1": {
        name: "support.constant.media.css"
      },
      "2": {
        name: "invalid.deprecated.constant.media.css"
      }
    },
    match: "(?xi)\n(?<=^|\\s|,|\\*/)\n(?:\n  # Valid media types\n  (all|print|screen|speech)\n  |\n  # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\n  (aural|braille|embossed|handheld|projection|tty|tv)\n)\n(?=$|[{,\\s;]|/\\*)"
  },
  "numeric-values": {
    patterns: [
      {
        captures: {
          "1": {
            name: "punctuation.definition.constant.css"
          }
        },
        match: "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
        name: "constant.other.color.rgb-value.hex.css"
      },
      {
        captures: {
          "1": {
            name: "keyword.other.unit.percentage.css"
          },
          "2": {
            name: "keyword.other.unit.${2:/downcase}.css"
          }
        },
        match: "(?xi) (?<![\\w-])\n[-+]?                               # Sign indicator\n\n(?:                                 # Numerals\n    [0-9]+ (?:\\.[0-9]+)?           # Integer/float with leading digits\n  | \\.[0-9]+                       # Float without leading digits\n)\n\n(?:                                 # Scientific notation\n  (?<=[0-9])                        # Exponent must follow a digit\n  E                                 # Exponent indicator\n  [-+]?                             # Possible sign indicator\n  [0-9]+                            # Exponent value\n)?\n\n(?:                                 # Possible unit for data-type:\n  (%)                               # - Percentage\n  | ( deg|grad|rad|turn             # - Angle\n    | Hz|kHz                        # - Frequency\n    | ch|cm|em|ex|fr|in|mm|mozmm|   # - Length\n      pc|pt|px|q|rem|vh|vmax|vmin|\n      vw\n    | dpi|dpcm|dppx                 # - Resolution\n    | s|ms                          # - Time\n    )\n  \\b                               # Boundary checking intentionally lax to\n)?                                  # facilitate embedding in CSS-like grammars",
        name: "constant.numeric.css"
      }
    ]
  },
  "property-keywords": {
    patterns: [
      {
        match: "(?xi) (?<![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow-root|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)\n(?![\\w-])",
        name: "support.constant.property-value.css"
      },
      {
        match: "(?xi) (?<![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])",
        name: "support.constant.property-value.list-style-type.css"
      },
      {
        match: "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",
        name: "support.constant.vendored.property-value.css"
      },
      {
        match: "(?<![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\w-])",
        name: "support.constant.font-name.css"
      }
    ]
  },
  "property-names": {
    patterns: [
      {
        match: "(?xi) (?<![\\w-])\n(?:\n  # Standard CSS\n  additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration\n  | animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backdrop-filter\n  | backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image\n  | background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border\n  | border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color\n  | border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\n  | border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image\n  | border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\n  | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color\n  | border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width\n  | border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius\n  | border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style\n  | border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side\n  | caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|column-count|column-fill|column-gap\n  | column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|content|counter-increment\n  | counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis\n  | flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family\n  | font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch\n  | font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures\n  | font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical\n  | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start\n  | grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows\n  | hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align\n  | inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation\n  | justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style\n  | list-style-image|list-style-position|list-style-type|margin|margin-block-end|margin-block-start|margin-bottom|margin-inline-end|margin-inline-start\n  | margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset\n  | mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode\n  | mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width\n  | max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position\n  | offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans\n  | outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline\n  | overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]\n  | pad|padding|padding-block-end|padding-block-start|padding-bottom|padding-inline-end|padding-inline-start|padding-left\n  | padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin\n  | place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align\n  | ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start\n  | scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right\n  | scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom\n  | scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right\n  | scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type\n  | scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size\n  | speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit\n  | stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright\n  | text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style\n  | text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation\n  | text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-position|top|touch-action|transform\n  | transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function\n  | translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change\n  | word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\n\n  # SVG attributes\n  | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\n  | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\n  | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\n  | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\n  | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\n\n  # Not listed on MDN; presumably deprecated\n  | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\n  | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\n  | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\n  | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\n  | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\n  | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\n  | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\n  | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\n  | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\n  | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\n  | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\n  | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\n  | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\n  | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\n  | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\n  | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\n  | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\n  | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\n  | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\n  | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\n  | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\n  | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\n  | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\n)\n(?![\\w-])",
        name: "support.type.property-name.css"
      },
      {
        match: "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",
        name: "support.type.vendored.property-name.css"
      }
    ]
  },
  "property-values": {
    patterns: [
      {
        include: "#commas"
      },
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      },
      {
        include: "#functions"
      },
      {
        include: "#property-keywords"
      },
      {
        include: "#unicode-range"
      },
      {
        include: "#numeric-values"
      },
      {
        include: "#color-keywords"
      },
      {
        include: "#string"
      },
      {
        match: "!\\s*important(?![\\w-])",
        name: "keyword.other.important.css"
      }
    ]
  },
  "pseudo-classes": {
    captures: {
      "1": {
        name: "punctuation.definition.entity.css"
      },
      "2": {
        name: "invalid.illegal.colon.css"
      }
    },
    match: "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n  | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover\n  | in-range|indeterminate|invalid|left|link|optional|out-of-range\n  | read-only|read-write|required|right|root|scope|target|unresolved\n  | valid|visited\n)(?![\\w-]|\\s*[;}])",
    name: "entity.other.attribute-name.pseudo-class.css"
  },
  "pseudo-elements": {
    captures: {
      "1": {
        name: "punctuation.definition.entity.css"
      },
      "2": {
        name: "punctuation.definition.entity.css"
      }
    },
    match: "(?xi)\n(?:\n  (::?)                       # Elements using both : and :: notation\n  (?: after\n    | before\n    | first-letter\n    | first-line\n    | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n            |ms|o|rim|ro|tc|wap|webkit|xv)\n        | (?:mso|prince))\n      -[a-z-]+\n  )\n  |\n  (::)                        # Double-colon only\n  (?: backdrop\n    | content\n    | grammar-error\n    | marker\n    | placeholder\n    | selection\n    | shadow\n    | spelling-error\n  )\n)\n(?![\\w-]|\\s*[;}])",
    name: "entity.other.attribute-name.pseudo-element.css"
  },
  "rule-list": {
    begin: "{",
    beginCaptures: {
      "0": {
        name: "punctuation.section.property-list.begin.bracket.curly.css"
      }
    },
    end: "}",
    endCaptures: {
      "0": {
        name: "punctuation.section.property-list.end.bracket.curly.css"
      }
    },
    name: "meta.property-list.css",
    patterns: [
      {
        include: "#rule-list-innards"
      }
    ]
  },
  "rule-list-innards": {
    patterns: [
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      },
      {
        include: "#font-features"
      },
      {
        match: "(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_]    | [^\\x00-\\x7F])     # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F]      # Remainder of identifier\n  |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
        name: "variable.css"
      },
      {
        begin: "(?<![-a-zA-Z])(?=[-a-zA-Z])",
        end: "$|(?![-a-zA-Z])",
        name: "meta.property-name.css",
        patterns: [
          {
            include: "#property-names"
          }
        ]
      },
      {
        begin: "(:)\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.separator.key-value.css"
          }
        },
        end: "\\s*(;)|\\s*(?=}|\\))",
        endCaptures: {
          "1": {
            name: "punctuation.terminator.rule.css"
          }
        },
        contentName: "meta.property-value.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#property-values"
          }
        ]
      },
      {
        match: ";",
        name: "punctuation.terminator.rule.css"
      }
    ]
  },
  selector: {
    begin: "(?x)\n(?=\n  (?:\\|)?                    # Possible anonymous namespace prefix\n  (?:\n    [-\\[:.*\\#a-zA-Z_]       # Valid selector character\n    |\n    [^\\x00-\\x7F]            # Which can include non-ASCII symbols\n    |\n    \\\\                      # Or an escape sequence\n    (?:[0-9a-fA-F]{1,6}|.)\n  )\n)",
    end: "(?=\\s*[/@{)])",
    name: "meta.selector.css",
    patterns: [
      {
        include: "#selector-innards"
      }
    ]
  },
  "selector-innards": {
    patterns: [
      {
        include: "#comment-block"
      },
      {
        include: "#commas"
      },
      {
        include: "#escapes"
      },
      {
        include: "#combinators"
      },
      {
        captures: {
          "1": {
            name: "entity.other.namespace-prefix.css"
          },
          "2": {
            name: "punctuation.separator.css"
          }
        },
        match: "(?x)\n(?:^|(?<=[\\s,(};]))         # Follows whitespace, comma, semicolon, or bracket\n(?!\n  [-\\w*]+\n  \\|\n  (?!\n      [-\\[:.*\\#a-zA-Z_]    # Make sure there's a selector to match\n    | [^\\x00-\\x7F]\n  )\n)\n(\n  (?: [-a-zA-Z_]    | [^\\x00-\\x7F] )   # First letter\n  (?: [-a-zA-Z0-9_] | [^\\x00-\\x7F]     # Remainder of identifier\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)\n  )*\n  |\n  \\*     # Universal namespace\n)?\n(\\|)     # Namespace separator"
      },
      {
        include: "#tag-names"
      },
      {
        match: "\\*",
        name: "entity.name.tag.wildcard.css"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.css"
          },
          "2": {
            patterns: [
              {
                include: "#escapes"
              }
            ]
          }
        },
        match: "(?x) (?<![@\\w-])\n([.\\#])\n# Invalid identifier\n(\n  (?:\n    # Starts with ASCII digits, with possible hyphen preceding it\n    -?[0-9]\n    |\n    # Consists of a hyphen only\n    -                                      # Terminated by either:\n    (?= $                                  # - End-of-line\n      | [\\s,.\\#)\\[:{>+~|]               # - Followed by another selector\n      | /\\*                               # - Followed by a block comment\n    )\n    |\n    # Name contains unescaped ASCII symbol\n    (?:                                    # Check for acceptable preceding characters\n        [-a-zA-Z_0-9]|[^\\x00-\\x7F]       # - Valid selector character\n      | \\\\(?:[0-9a-fA-F]{1,6}|.)         # - Escape sequence\n    )*\n    (?:                                    # Invalid punctuation\n      [!\"'%&(*;<?@^`|\\]}]                 # - NOTE: We exempt `)` from the list of checked\n      |                                    #   symbols to avoid matching `:not(.invalid)`\n      / (?!\\*)                            # - Avoid invalidating the start of a comment\n    )+\n  )\n  # Mark remainder of selector invalid\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]         # - Otherwise valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)           # - Escape sequence\n  )*\n)",
        name: "invalid.illegal.bad-identifier.css"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.css"
          },
          "2": {
            patterns: [
              {
                include: "#escapes"
              }
            ]
          }
        },
        match: "(?x)\n(\\.)                                  # Valid class-name\n(\n  (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F]     # Valid identifier characters\n    | \\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\n  )+\n)                                      # Followed by either:\n(?= $                                  # - End of the line\n  | [\\s,.\\#)\\[:{>+~|]               # - Another selector\n  | /\\*                               # - A block comment\n)",
        name: "entity.other.attribute-name.class.css"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.css"
          },
          "2": {
            patterns: [
              {
                include: "#escapes"
              }
            ]
          }
        },
        match: "(?x)\n(\\#)\n(\n  -?\n  (?![0-9])\n  (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n)\n(?=$|[\\s,.\\#)\\[:{>+~|]|/\\*)",
        name: "entity.other.attribute-name.id.css"
      },
      {
        begin: "\\[",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.entity.begin.bracket.square.css"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.entity.end.bracket.square.css"
          }
        },
        name: "meta.attribute-selector.css",
        patterns: [
          {
            include: "#comment-block"
          },
          {
            include: "#string"
          },
          {
            captures: {
              "1": {
                name: "storage.modifier.ignore-case.css"
              }
            },
            match: `(?<=["'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)`
          },
          {
            captures: {
              "1": {
                name: "string.unquoted.attribute-value.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: `(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\"'\\s\\]]|\\\\.)+)`
          },
          {
            include: "#escapes"
          },
          {
            match: "[~|^$*]?=",
            name: "keyword.operator.pattern.css"
          },
          {
            match: "\\|",
            name: "punctuation.separator.css"
          },
          {
            captures: {
              "1": {
                name: "entity.other.namespace-prefix.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n  \\| (?!\\s|=|$|\\])\n  (?: -?(?!\\d)\n   |   [\\\\\\w-]\n   |   [^\\x00-\\x7F]\n   )\n)"
          },
          {
            captures: {
              "1": {
                name: "entity.other.attribute-name.css",
                patterns: [
                  {
                    include: "#escapes"
                  }
                ]
              }
            },
            match: "(?x)\n(-?(?!\\d)(?>[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)"
          }
        ]
      },
      {
        include: "#pseudo-classes"
      },
      {
        include: "#pseudo-elements"
      },
      {
        include: "#functional-pseudo-classes"
      },
      {
        match: "(?x) (?<![@\\w-])\n(?=            # Custom element names must:\n  [a-z]        # - start with a lowercase ASCII letter,\n  \\w* -       # - contain at least one dash\n)\n(?:\n  (?![A-Z])    # No uppercase ASCII letters are allowed\n  [\\w-]       # Allow any other word character or dash\n)+\n(?![(\\w-])",
        name: "entity.name.tag.custom.css"
      }
    ]
  },
  string: {
    patterns: [
      {
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.css"
          }
        },
        end: '"|(?<!\\\\)(?=$|\\n)',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.css"
          }
        },
        name: "string.quoted.double.css",
        patterns: [
          {
            begin: '(?:\\G|^)(?=(?:[^\\\\"]|\\\\.)+$)',
            end: "$",
            name: "invalid.illegal.unclosed.string.css",
            patterns: [
              {
                include: "#escapes"
              }
            ]
          },
          {
            include: "#escapes"
          }
        ]
      },
      {
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.css"
          }
        },
        end: "'|(?<!\\\\)(?=$|\\n)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.css"
          }
        },
        name: "string.quoted.single.css",
        patterns: [
          {
            begin: "(?:\\G|^)(?=(?:[^\\\\']|\\\\.)+$)",
            end: "$",
            name: "invalid.illegal.unclosed.string.css",
            patterns: [
              {
                include: "#escapes"
              }
            ]
          },
          {
            include: "#escapes"
          }
        ]
      }
    ]
  },
  "tag-names": {
    match: "(?xi) (?<![\\w:-])\n(?:\n    # HTML\n    a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\n  | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\n  | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\n  | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\n  | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\n  | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\n  | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\n  | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\n  | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\n  | track|tt|u|ul|var|video|wbr|xmp\n\n  # SVG\n  | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\n  | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\n  | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\n  | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\n  | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\n  | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\n  | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\n  | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\n  | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\n  | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\n\n  # MathML\n  | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\n  | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\n  | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\n  | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\n)\n(?=[+~>\\s,.\\#|){\\[]|/\\*|:[^\\s]|$)",
    name: "entity.name.tag.css"
  },
  "unicode-range": {
    captures: {
      "0": {
        name: "constant.other.unicode-range.css"
      },
      "1": {
        name: "punctuation.separator.dash.unicode-range.css"
      }
    },
    match: "(?<![\\w-])[Uu]\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\w-])"
  },
  url: {
    begin: "(?i)(?<![\\w@-])(url)(\\()",
    beginCaptures: {
      "1": {
        name: "support.function.url.css"
      },
      "2": {
        name: "punctuation.section.function.begin.bracket.round.css"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.section.function.end.bracket.round.css"
      }
    },
    name: "meta.function.url.css",
    patterns: [
      {
        match: `[^'")\\s]+`,
        name: "variable.parameter.url.css"
      },
      {
        include: "#string"
      },
      {
        include: "#comment-block"
      },
      {
        include: "#escapes"
      }
    ]
  }
};
const css_tmLanguage = {
  information_for_contributors: information_for_contributors$8,
  version: version$8,
  name: name$b,
  scopeName: scopeName$a,
  patterns: patterns$a,
  repository: repository$a
};
const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: css_tmLanguage,
  information_for_contributors: information_for_contributors$8,
  name: name$b,
  patterns: patterns$a,
  repository: repository$a,
  scopeName: scopeName$a,
  version: version$8
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$7 = [
  "This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$7 = "https://github.com/textmate/html.tmbundle/commit/0c3d5ee54de3a993f747f54186b73a4d2d3c44a2";
const name$a = "html";
const scopeName$9 = "text.html.basic";
const injections = {
  "R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)": {
    comment: "Uses R: to ensure this matches after any other injections.",
    patterns: [
      {
        match: "<",
        name: "invalid.illegal.bad-angle-bracket.html"
      }
    ]
  }
};
const patterns$9 = [
  {
    include: "#xml-processing"
  },
  {
    include: "#comment"
  },
  {
    include: "#doctype"
  },
  {
    include: "#cdata"
  },
  {
    include: "#tags-valid"
  },
  {
    include: "#tags-invalid"
  },
  {
    include: "#entities"
  }
];
const repository$9 = {
  attribute: {
    patterns: [
      {
        begin: "(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 attributes, not event handlers",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        begin: "style(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 style attribute",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.style.html",
        patterns: [
          {
            begin: "=",
            beginCaptures: {
              "0": {
                name: "punctuation.separator.key-value.html"
              }
            },
            end: "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
            patterns: [
              {
                begin: "(?=[^\\s=<>`/]|/(?!>))",
                end: "(?!\\G)",
                name: "meta.embedded.line.css",
                patterns: [
                  {
                    captures: {
                      "0": {
                        name: "source.css"
                      }
                    },
                    match: "([^\\s\"'=<>`/]|/(?!>))+",
                    name: "string.unquoted.html"
                  },
                  {
                    begin: '"',
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.css",
                    end: '(")',
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.css-ignored-vscode"
                      }
                    },
                    name: "string.quoted.double.html",
                    patterns: [
                      {
                        include: "#entities"
                      }
                    ]
                  },
                  {
                    begin: "'",
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.css",
                    end: "(')",
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.css-ignored-vscode"
                      }
                    },
                    name: "string.quoted.single.html",
                    patterns: [
                      {
                        include: "#entities"
                      }
                    ]
                  }
                ]
              },
              {
                match: "=",
                name: "invalid.illegal.unexpected-equals-sign.html"
              }
            ]
          }
        ]
      },
      {
        begin: "on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 attributes, event handlers",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.event-handler.$1.html",
        patterns: [
          {
            begin: "=",
            beginCaptures: {
              "0": {
                name: "punctuation.separator.key-value.html"
              }
            },
            end: "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
            patterns: [
              {
                begin: "(?=[^\\s=<>`/]|/(?!>))",
                end: "(?!\\G)",
                name: "meta.embedded.line.js",
                patterns: [
                  {
                    captures: {
                      "0": {
                        name: "source.js"
                      },
                      "1": {
                        patterns: [
                          {
                            include: "source.js"
                          }
                        ]
                      }
                    },
                    match: "(([^\\s\"'=<>`/]|/(?!>))+)",
                    name: "string.unquoted.html"
                  },
                  {
                    begin: '"',
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.js",
                    end: '(")',
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.js-ignored-vscode"
                      }
                    },
                    name: "string.quoted.double.html",
                    patterns: [
                      {
                        captures: {
                          "0": {
                            patterns: [
                              {
                                include: "source.js"
                              }
                            ]
                          }
                        },
                        match: '([^\\n"/]|/(?![/*]))+'
                      },
                      {
                        begin: "//",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.js"
                          }
                        },
                        end: '(?=")|\\n',
                        name: "comment.line.double-slash.js"
                      },
                      {
                        begin: "/\\*",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.begin.js"
                          }
                        },
                        end: '(?=")|\\*/',
                        endCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.end.js"
                          }
                        },
                        name: "comment.block.js"
                      }
                    ]
                  },
                  {
                    begin: "'",
                    beginCaptures: {
                      "0": {
                        name: "punctuation.definition.string.begin.html"
                      }
                    },
                    contentName: "source.js",
                    end: "(')",
                    endCaptures: {
                      "0": {
                        name: "punctuation.definition.string.end.html"
                      },
                      "1": {
                        name: "source.js-ignored-vscode"
                      }
                    },
                    name: "string.quoted.single.html",
                    patterns: [
                      {
                        captures: {
                          "0": {
                            patterns: [
                              {
                                include: "source.js"
                              }
                            ]
                          }
                        },
                        match: "([^\\n'/]|/(?![/*]))+"
                      },
                      {
                        begin: "//",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.js"
                          }
                        },
                        end: "(?=')|\\n",
                        name: "comment.line.double-slash.js"
                      },
                      {
                        begin: "/\\*",
                        beginCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.begin.js"
                          }
                        },
                        end: "(?=')|\\*/",
                        endCaptures: {
                          "0": {
                            name: "punctuation.definition.comment.end.js"
                          }
                        },
                        name: "comment.block.js"
                      }
                    ]
                  }
                ]
              },
              {
                match: "=",
                name: "invalid.illegal.unexpected-equals-sign.html"
              }
            ]
          }
        ]
      },
      {
        begin: "(data-[a-z\\-]+)(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "HTML5 attributes, data-*",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.data-x.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        begin: "(align|bgcolor|border)(?![\\w:-])",
        beginCaptures: {
          "0": {
            name: "invalid.deprecated.entity.other.attribute-name.html"
          }
        },
        comment: "HTML attributes, deprecated",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        begin: `([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,
        beginCaptures: {
          "0": {
            name: "entity.other.attribute-name.html"
          }
        },
        comment: "Anything else that is valid",
        end: "(?=\\s*+[^=\\s])",
        name: "meta.attribute.unrecognized.$1.html",
        patterns: [
          {
            include: "#attribute-interior"
          }
        ]
      },
      {
        match: "[^\\s>]+",
        name: "invalid.illegal.character-not-allowed-here.html"
      }
    ]
  },
  "attribute-interior": {
    patterns: [
      {
        begin: "=",
        beginCaptures: {
          "0": {
            name: "punctuation.separator.key-value.html"
          }
        },
        end: "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
        patterns: [
          {
            match: "([^\\s\"'=<>`/]|/(?!>))+",
            name: "string.unquoted.html"
          },
          {
            begin: '"',
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.html"
              }
            },
            end: '"',
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.html"
              }
            },
            name: "string.quoted.double.html",
            patterns: [
              {
                include: "#entities"
              }
            ]
          },
          {
            begin: "'",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.html"
              }
            },
            end: "'",
            endCaptures: {
              "0": {
                name: "punctuation.definition.string.end.html"
              }
            },
            name: "string.quoted.single.html",
            patterns: [
              {
                include: "#entities"
              }
            ]
          },
          {
            match: "=",
            name: "invalid.illegal.unexpected-equals-sign.html"
          }
        ]
      }
    ]
  },
  cdata: {
    begin: "<!\\[CDATA\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.tag.begin.html"
      }
    },
    contentName: "string.other.inline-data.html",
    end: "]]>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    name: "meta.tag.metadata.cdata.html"
  },
  comment: {
    begin: "<!--",
    captures: {
      "0": {
        name: "punctuation.definition.comment.html"
      }
    },
    end: "-->",
    name: "comment.block.html",
    patterns: [
      {
        match: "\\G-?>",
        name: "invalid.illegal.characters-not-allowed-here.html"
      },
      {
        match: "<!--(?!>)|<!-(?=-->)",
        name: "invalid.illegal.characters-not-allowed-here.html"
      },
      {
        match: "--!>",
        name: "invalid.illegal.characters-not-allowed-here.html"
      }
    ]
  },
  "core-minus-invalid": {
    comment: "This should be the root pattern array includes minus #tags-invalid",
    patterns: [
      {
        include: "#xml-processing"
      },
      {
        include: "#comment"
      },
      {
        include: "#doctype"
      },
      {
        include: "#cdata"
      },
      {
        include: "#tags-valid"
      },
      {
        include: "#entities"
      }
    ]
  },
  doctype: {
    begin: "<!(?=(?i:DOCTYPE\\s))",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.tag.begin.html"
      }
    },
    end: ">",
    endCaptures: {
      "0": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    name: "meta.tag.metadata.doctype.html",
    patterns: [
      {
        match: "\\G(?i:DOCTYPE)",
        name: "entity.name.tag.html"
      },
      {
        begin: '"',
        end: '"',
        name: "string.quoted.double.html"
      },
      {
        match: "[^\\s>]+",
        name: "entity.other.attribute-name.html"
      }
    ]
  },
  entities: {
    patterns: [
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "912": {
            name: "punctuation.definition.entity.html"
          }
        },
        comment: "Yes this is a bit ridiculous, there are quite a lot of these",
        match: "(?x)\n						(&)	(?=[a-zA-Z])\n						(\n							(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))\n						  | (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))\n						  | (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))\n						  | (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))\n						  | (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr)))\n						  | (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr))\n						  | (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve))\n						  | (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))\n						  | (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))\n						  | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))\n						  | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))\n						  | (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))\n						  | (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))\n						  | (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute))\n						  | (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))\n						  | (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))\n						  | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))\n						  | (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr)))\n						  | (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))\n						  | (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot))\n						  | (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))\n						  | (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))\n						  | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))\n						  | (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map))\n						  | (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))\n						  | (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute))\n						)\n						(;)\n					",
        name: "constant.character.entity.named.$2.html"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        },
        match: "(&)#[0-9]+(;)",
        name: "constant.character.entity.numeric.decimal.html"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        },
        match: "(&)#[xX][0-9a-fA-F]+(;)",
        name: "constant.character.entity.numeric.hexadecimal.html"
      },
      {
        match: "&(?=[a-zA-Z0-9]+;)",
        name: "invalid.illegal.ambiguous-ampersand.html"
      }
    ]
  },
  math: {
    patterns: [
      {
        begin: `(?i)(<)(math)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
        beginCaptures: {
          "0": {
            name: "meta.tag.structure.$2.start.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          "5": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?i)(</)(\\2)\\s*(>)",
        endCaptures: {
          "0": {
            name: "meta.tag.structure.$2.end.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.element.structure.$2.html",
        patterns: [
          {
            begin: "(?<!>)\\G",
            end: ">",
            endCaptures: {
              "0": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.tag.structure.start.html",
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          {
            include: "#tags"
          }
        ]
      }
    ],
    repository: {
      attribute: {
        patterns: [
          {
            begin: "(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\w:-])",
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            begin: `([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            comment: "Anything else that is valid",
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.unrecognized.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            match: "[^\\s>]+",
            name: "invalid.illegal.character-not-allowed-here.html"
          }
        ]
      },
      tags: {
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#cdata"
          },
          {
            captures: {
              "0": {
                name: "meta.tag.structure.math.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.structure.math.$2.html"
          },
          {
            begin: `(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.structure.math.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.structure.math.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.structure.math.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.structure.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.inline.math.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.inline.math.$2.html"
          },
          {
            begin: `(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.inline.math.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.inline.math.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.inline.math.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.inline.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.object.math.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.object.math.$2.html"
          },
          {
            begin: `(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.object.math.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.object.math.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.object.math.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.object.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.other.invalid.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.other.invalid.html"
          },
          {
            begin: `(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.other.invalid.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.other.invalid.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.other.invalid.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.other.invalid.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            include: "#tags-invalid"
          }
        ]
      }
    }
  },
  svg: {
    patterns: [
      {
        begin: `(?i)(<)(svg)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
        beginCaptures: {
          "0": {
            name: "meta.tag.structure.$2.start.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          "5": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?i)(</)(\\2)\\s*(>)",
        endCaptures: {
          "0": {
            name: "meta.tag.structure.$2.end.html"
          },
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.element.structure.$2.html",
        patterns: [
          {
            begin: "(?<!>)\\G",
            end: ">",
            endCaptures: {
              "0": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.tag.structure.start.html",
            patterns: [
              {
                include: "#attribute"
              }
            ]
          },
          {
            include: "#tags"
          }
        ]
      }
    ],
    repository: {
      attribute: {
        patterns: [
          {
            begin: "(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\w:-])",
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            begin: `([^\\x{0020}"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)`,
            beginCaptures: {
              "0": {
                name: "entity.other.attribute-name.html"
              }
            },
            comment: "Anything else that is valid",
            end: "(?=\\s*+[^=\\s])",
            name: "meta.attribute.unrecognized.$1.html",
            patterns: [
              {
                include: "#attribute-interior"
              }
            ]
          },
          {
            match: "[^\\s>]+",
            name: "invalid.illegal.character-not-allowed-here.html"
          }
        ]
      },
      tags: {
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#cdata"
          },
          {
            captures: {
              "0": {
                name: "meta.tag.metadata.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.metadata.svg.$2.html"
          },
          {
            begin: `(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.metadata.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.metadata.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.metadata.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.metadata.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.structure.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.structure.svg.$2.html"
          },
          {
            begin: `(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.structure.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.structure.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.structure.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.structure.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.inline.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.inline.svg.$2.html"
          },
          {
            begin: `(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.inline.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.inline.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.inline.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.inline.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.object.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.object.svg.$2.html"
          },
          {
            begin: `(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.object.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.object.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.object.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.object.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.other.svg.$2.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.deprecated.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.other.svg.$2.html"
          },
          {
            begin: `(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.other.svg.$2.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.deprecated.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.other.svg.$2.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.deprecated.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.other.svg.$2.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.other.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            captures: {
              "0": {
                name: "meta.tag.other.invalid.void.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            match: `(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(/>))`,
            name: "meta.element.other.invalid.html"
          },
          {
            begin: `(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^"'>]|"[^"]*"|'[^']*')*)(>))?`,
            beginCaptures: {
              "0": {
                name: "meta.tag.other.invalid.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              "6": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            end: "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
            endCaptures: {
              "0": {
                name: "meta.tag.other.invalid.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "invalid.illegal.unrecognized-tag.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              },
              "5": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.element.other.invalid.html",
            patterns: [
              {
                begin: "(?<!>)\\G",
                end: "(?=/>)|>",
                endCaptures: {
                  "0": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                name: "meta.tag.other.invalid.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                include: "#tags"
              }
            ]
          },
          {
            include: "#tags-invalid"
          }
        ]
      }
    }
  },
  "tags-invalid": {
    patterns: [
      {
        begin: "(</?)((\\w[^\\s>]*))(?<!/)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.illegal.unrecognized-tag.html"
          }
        },
        end: "((?: ?/)?>)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.other.$2.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      }
    ]
  },
  "tags-valid": {
    patterns: [
      {
        begin: "(^[ \\t]+)?(?=<(?i:style)\\b(?!-))",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.leading.html"
          }
        },
        end: "(?!\\G)([ \\t]*$\\n?)?",
        endCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.trailing.html"
          }
        },
        patterns: [
          {
            begin: "(?i)(<)(style)(?=\\s|/?>)",
            beginCaptures: {
              "0": {
                name: "meta.tag.metadata.style.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              }
            },
            end: "(?i)((<)/)(style)\\s*(>)",
            endCaptures: {
              "0": {
                name: "meta.tag.metadata.style.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "source.css-ignored-vscode"
              },
              "3": {
                name: "entity.name.tag.html"
              },
              "4": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.embedded.block.html",
            patterns: [
              {
                begin: "\\G",
                captures: {
                  "1": {
                    name: "punctuation.definition.tag.end.html"
                  }
                },
                end: "(>)",
                name: "meta.tag.metadata.style.start.html",
                patterns: [
                  {
                    include: "#attribute"
                  }
                ]
              },
              {
                begin: "(?!\\G)",
                end: "(?=</(?i:style))",
                name: "source.css",
                patterns: [
                  {
                    include: "source.css"
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        begin: "(^[ \\t]+)?(?=<(?i:script)\\b(?!-))",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.leading.html"
          }
        },
        end: "(?!\\G)([ \\t]*$\\n?)?",
        endCaptures: {
          "1": {
            name: "punctuation.whitespace.embedded.trailing.html"
          }
        },
        patterns: [
          {
            begin: "(<)((?i:script))\\b",
            beginCaptures: {
              "0": {
                name: "meta.tag.metadata.script.start.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              }
            },
            end: "(/)((?i:script))(>)",
            endCaptures: {
              "0": {
                name: "meta.tag.metadata.script.end.html"
              },
              "1": {
                name: "punctuation.definition.tag.begin.html"
              },
              "2": {
                name: "entity.name.tag.html"
              },
              "3": {
                name: "punctuation.definition.tag.end.html"
              }
            },
            name: "meta.embedded.block.html",
            patterns: [
              {
                begin: "\\G",
                end: "(?=/)",
                patterns: [
                  {
                    begin: "(>)",
                    beginCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.start.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.end.html"
                      }
                    },
                    end: "((<))(?=/(?i:script))",
                    endCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.end.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.begin.html"
                      },
                      "2": {
                        name: "source.js-ignored-vscode"
                      }
                    },
                    patterns: [
                      {
                        begin: "\\G",
                        end: "(?=</(?i:script))",
                        name: "source.js",
                        patterns: [
                          {
                            begin: "(^[ \\t]+)?(?=//)",
                            beginCaptures: {
                              "1": {
                                name: "punctuation.whitespace.comment.leading.js"
                              }
                            },
                            end: "(?!\\G)",
                            patterns: [
                              {
                                begin: "//",
                                beginCaptures: {
                                  "0": {
                                    name: "punctuation.definition.comment.js"
                                  }
                                },
                                end: "(?=<\/script)|\\n",
                                name: "comment.line.double-slash.js"
                              }
                            ]
                          },
                          {
                            begin: "/\\*",
                            captures: {
                              "0": {
                                name: "punctuation.definition.comment.js"
                              }
                            },
                            end: "\\*/|(?=<\/script)",
                            name: "comment.block.js"
                          },
                          {
                            include: "source.js"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    begin: "\\G",
                    end: `(?ix:
												(?=>											# Tag without type attribute
												  | type(?=[\\s=])
												  	(?!\\s*=\\s*
														(
															''								# Empty
														  | ""									#   Values
														  | ('|"|)
															(
																text/							# Text mime-types
																(
																	javascript(1\\.[0-5])?
																  | x-javascript
																  | jscript
																  | livescript
																  | (x-)?ecmascript
																  | babel						# Javascript variant currently
																  								#   recognized as such
															  	)
															  | application/					# Application mime-types
															  	(
																	(x-)?javascript
																  | (x-)?ecmascript
																)
															  | module
														  	)
															[\\s"'>]
														)
													)
												)
											)`,
                    name: "meta.tag.metadata.script.start.html",
                    patterns: [
                      {
                        include: "#attribute"
                      }
                    ]
                  },
                  {
                    begin: `(?ix:
												(?=
													type\\s*=\\s*
													('|"|)
													text/
													(
														x-handlebars
													  | (x-(handlebars-)?|ng-)?template
													  | html
													)
													[\\s"'>]
												)
											)`,
                    end: "((<))(?=/(?i:script))",
                    endCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.end.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.begin.html"
                      },
                      "2": {
                        name: "text.html.basic"
                      }
                    },
                    patterns: [
                      {
                        begin: "\\G",
                        end: "(>)",
                        endCaptures: {
                          "1": {
                            name: "punctuation.definition.tag.end.html"
                          }
                        },
                        name: "meta.tag.metadata.script.start.html",
                        patterns: [
                          {
                            include: "#attribute"
                          }
                        ]
                      },
                      {
                        begin: "(?!\\G)",
                        end: "(?=</(?i:script))",
                        name: "text.html.basic",
                        patterns: [
                          {
                            include: "text.html.basic"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    begin: "(?=(?i:type))",
                    end: "(<)(?=/(?i:script))",
                    endCaptures: {
                      "0": {
                        name: "meta.tag.metadata.script.end.html"
                      },
                      "1": {
                        name: "punctuation.definition.tag.begin.html"
                      }
                    },
                    patterns: [
                      {
                        begin: "\\G",
                        end: "(>)",
                        endCaptures: {
                          "1": {
                            name: "punctuation.definition.tag.end.html"
                          }
                        },
                        name: "meta.tag.metadata.script.start.html",
                        patterns: [
                          {
                            include: "#attribute"
                          }
                        ]
                      },
                      {
                        begin: "(?!\\G)",
                        end: "(?=</(?i:script))",
                        name: "source.unknown"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        begin: "(?i)(<)(base|link|meta)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(noscript|title)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(noscript|title)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(col|hr|input)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(area|br|wbr)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(embed|img|param|source|track)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((basefont|isindex))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.metadata.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((center|frameset|noembed|noframes))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((center|frameset|noembed|noframes))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.structure.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.inline.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((frame))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.void.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((applet))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((applet))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.deprecated.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.object.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.illegal.no-longer-supported.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.other.$2.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          },
          "3": {
            name: "invalid.illegal.no-longer-supported.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.other.$2.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        include: "#math"
      },
      {
        include: "#svg"
      },
      {
        begin: "(<)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: "/?>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.custom.start.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      },
      {
        begin: "(</)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.html"
          },
          "2": {
            name: "entity.name.tag.html"
          }
        },
        end: ">",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        name: "meta.tag.custom.end.html",
        patterns: [
          {
            include: "#attribute"
          }
        ]
      }
    ]
  },
  "xml-processing": {
    begin: "(<\\?)(xml)",
    captures: {
      "1": {
        name: "punctuation.definition.tag.html"
      },
      "2": {
        name: "entity.name.tag.html"
      }
    },
    end: "(\\?>)",
    name: "meta.tag.metadata.processing.xml.html",
    patterns: [
      {
        include: "#attribute"
      }
    ]
  }
};
const html_tmLanguage = {
  information_for_contributors: information_for_contributors$7,
  version: version$7,
  name: name$a,
  scopeName: scopeName$9,
  injections,
  patterns: patterns$9,
  repository: repository$9
};
const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: html_tmLanguage,
  information_for_contributors: information_for_contributors$7,
  injections,
  name: name$a,
  patterns: patterns$9,
  repository: repository$9,
  scopeName: scopeName$9,
  version: version$7
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$6 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$6 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$9 = "javascript";
const scopeName$8 = "source.js";
const patterns$8 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$8 = {
  shebang: {
    name: "comment.line.shebang.js",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.js"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.js"
          },
          "2": {
            name: "entity.name.label.js"
          }
        }
      },
      {
        name: "keyword.control.loop.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.js"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.js"
          },
          "2": {
            name: "punctuation.separator.label.js"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js"
          },
          "2": {
            name: "punctuation.separator.label.js"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#jsx"
      },
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.js"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.js",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js"
              },
              "2": {
                name: "storage.modifier.js"
              },
              "3": {
                name: "storage.type.js"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.js",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.type.js"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js"
              },
              "2": {
                name: "storage.modifier.js"
              },
              "3": {
                name: "storage.type.js"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js entity.name.function.js"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.constant.js"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.readwrite.js"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.constant.js entity.name.function.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js variable.other.constant.js"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.js"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "meta.definition.variable.js variable.other.readwrite.js"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "meta.definition.variable.js variable.other.constant.js"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "entity.name.function.js variable.language.this.js"
          },
          "4": {
            name: "entity.name.function.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "4": {
            name: "variable.parameter.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.js",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.js"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.js"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.js",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.js"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.js"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "variable.parameter.js"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.js",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.js entity.name.function.js"
          },
          "2": {
            name: "keyword.operator.optional.js"
          },
          "3": {
            name: "keyword.operator.definiteassignment.js"
          }
        }
      },
      {
        name: "meta.definition.property.js variable.object.property.js",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.js",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.async.js"
      },
      "4": {
        name: "storage.type.function.js"
      },
      "5": {
        name: "keyword.generator.asterisk.js"
      },
      "6": {
        name: "meta.definition.function.js entity.name.function.js"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js"
      },
      "2": {
        name: "storage.type.function.js"
      },
      "3": {
        name: "keyword.generator.asterisk.js"
      },
      "4": {
        name: "meta.definition.function.js entity.name.function.js"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.js entity.name.function.js",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.js",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.js",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.modifier.js"
          },
          "4": {
            name: "storage.modifier.async.js"
          },
          "5": {
            name: "storage.type.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.modifier.js"
          },
          "4": {
            name: "storage.modifier.async.js"
          },
          "5": {
            name: "keyword.operator.new.js"
          },
          "6": {
            name: "keyword.generator.asterisk.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "storage.modifier.js"
          },
          "4": {
            name: "storage.modifier.async.js"
          },
          "5": {
            name: "storage.type.property.js"
          },
          "6": {
            name: "keyword.generator.asterisk.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.js",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js"
      },
      "2": {
        name: "storage.type.property.js"
      },
      "3": {
        name: "keyword.generator.asterisk.js"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          },
          "2": {
            name: "storage.type.property.js"
          },
          "3": {
            name: "keyword.generator.asterisk.js"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.js entity.name.function.js",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.js",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.js"
          },
          "2": {
            name: "variable.parameter.js"
          }
        }
      },
      {
        name: "meta.arrow.js",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.js",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.js",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      },
      "2": {
        name: "meta.brace.square.js"
      },
      "3": {
        name: "variable.parameter.js"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js"
      },
      "2": {
        name: "keyword.operator.optional.js"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.js",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "meta.brace.square.js"
      },
      "4": {
        name: "entity.name.type.js"
      },
      "5": {
        name: "keyword.operator.expression.in.js"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js"
      },
      "2": {
        name: "keyword.operator.type.modifier.js"
      },
      "3": {
        name: "keyword.operator.optional.js"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.js"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.js",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.js"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.js"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.js"
      },
      "4": {
        name: "storage.type.class.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      },
      "2": {
        name: "storage.type.class.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.js"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.js"
      },
      "4": {
        name: "storage.type.interface.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.js"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.js"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.modifier.js"
      },
      "4": {
        name: "storage.type.enum.js"
      },
      "5": {
        name: "entity.name.type.enum.js"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.js"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.js",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.type.namespace.js"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "storage.type.type.js"
      },
      "4": {
        name: "entity.name.type.alias.js"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          },
          "2": {
            name: "keyword.control.intrinsic.js"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "keyword.control.import.js"
          },
          "4": {
            name: "keyword.control.type.js"
          },
          "5": {
            name: "variable.other.readwrite.alias.js"
          },
          "6": {
            name: "keyword.operator.assignment.js"
          },
          "7": {
            name: "keyword.control.require.js"
          },
          "8": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "storage.modifier.js"
          },
          "3": {
            name: "keyword.control.import.js"
          },
          "4": {
            name: "keyword.control.type.js"
          },
          "5": {
            name: "variable.other.readwrite.alias.js"
          },
          "6": {
            name: "keyword.operator.assignment.js"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.js"
              },
              "2": {
                name: "punctuation.accessor.js"
              },
              "3": {
                name: "punctuation.accessor.optional.js"
              }
            }
          },
          {
            name: "variable.other.readwrite.js",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js"
      },
      "2": {
        name: "storage.modifier.js"
      },
      "3": {
        name: "keyword.control.import.js"
      },
      "4": {
        name: "keyword.control.type.js"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.js"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "keyword.control.as.js"
          },
          "3": {
            name: "storage.type.namespace.js"
          },
          "4": {
            name: "entity.name.type.module.js"
          }
        }
      },
      {
        name: "meta.export.default.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "keyword.control.type.js"
          },
          "3": {
            name: "keyword.operator.assignment.js"
          },
          "4": {
            name: "keyword.control.default.js"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js"
          },
          "2": {
            name: "keyword.control.type.js"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.js",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.js"
          },
          "2": {
            name: "constant.language.import-export-all.js"
          },
          "3": {
            name: "variable.other.readwrite.js"
          },
          "4": {
            name: "keyword.control.as.js"
          },
          "5": {
            name: "keyword.control.default.js"
          },
          "6": {
            name: "variable.other.readwrite.alias.js"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.js",
        match: "\\*"
      },
      {
        name: "keyword.control.default.js",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.js"
          },
          "2": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.js",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.js",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.js"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.js punctuation.definition.section.case-statement.js"
              },
              "2": {
                name: "meta.block.js punctuation.definition.block.js"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.js punctuation.definition.block.js"
              }
            },
            contentName: "meta.block.js",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.js punctuation.definition.section.case-statement.js"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.js"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.js",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.js"
              },
              "2": {
                name: "meta.brace.round.js"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.js",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.js"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.js"
              },
              "2": {
                name: "keyword.other.js"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.js",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.js meta.object-literal.key.js",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.js meta.object-literal.key.js",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.js meta.object-literal.key.js",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.js",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js"
          },
          "1": {
            name: "constant.numeric.decimal.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.js"
          },
          "1": {
            name: "entity.name.function.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.js"
          },
          "2": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        name: "meta.object.member.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.js punctuation.separator.key-value.js"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.js"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.js"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js"
              },
              "2": {
                name: "meta.brace.round.js"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.js"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.js"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.js",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.js",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.js",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.js punctuation.accessor.optional.js",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.js keyword.operator.definiteassignment.js",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.js",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.js",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.js"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.js"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "entity.name.function.js variable.language.this.js"
          },
          "4": {
            name: "entity.name.function.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "4": {
            name: "variable.parameter.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        include: "#jsx"
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.js"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.js"
          },
          "2": {
            name: "keyword.generator.asterisk.js"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.js"
          },
          "2": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.js",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.js",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.js",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.js",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.js",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.js",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.js"
          },
          "2": {
            name: "keyword.operator.assignment.compound.js"
          },
          "3": {
            name: "keyword.operator.arithmetic.js"
          }
        }
      },
      {
        name: "keyword.operator.logical.js",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.js",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.js",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.js",
        match: "--"
      },
      {
        name: "keyword.operator.increment.js",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.js",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.js"
          },
          "2": {
            name: "keyword.operator.arithmetic.js"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.js"
          },
          "2": {
            name: "keyword.operator.arithmetic.js"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.js"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.js",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.js",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      },
      {
        name: "constant.numeric.binary.js",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      },
      {
        name: "constant.numeric.octal.js",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.js"
          },
          "1": {
            name: "meta.delimiter.decimal.period.js"
          },
          "2": {
            name: "storage.type.numeric.bigint.js"
          },
          "3": {
            name: "meta.delimiter.decimal.period.js"
          },
          "4": {
            name: "storage.type.numeric.bigint.js"
          },
          "5": {
            name: "meta.delimiter.decimal.period.js"
          },
          "6": {
            name: "storage.type.numeric.bigint.js"
          },
          "7": {
            name: "storage.type.numeric.bigint.js"
          },
          "8": {
            name: "meta.delimiter.decimal.period.js"
          },
          "9": {
            name: "storage.type.numeric.bigint.js"
          },
          "10": {
            name: "meta.delimiter.decimal.period.js"
          },
          "11": {
            name: "storage.type.numeric.bigint.js"
          },
          "12": {
            name: "meta.delimiter.decimal.period.js"
          },
          "13": {
            name: "storage.type.numeric.bigint.js"
          },
          "14": {
            name: "storage.type.numeric.bigint.js"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.js",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.js",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.function.math.js"
          },
          "5": {
            name: "support.constant.property.math.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.function.json.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.variable.property.importmeta.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "support.variable.property.target.js"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "support.variable.property.js"
          },
          "4": {
            name: "support.constant.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.js"
          },
          "2": {
            name: "support.type.object.module.js"
          },
          "3": {
            name: "punctuation.accessor.js"
          },
          "4": {
            name: "punctuation.accessor.optional.js"
          },
          "5": {
            name: "support.type.object.module.js"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "entity.name.function.js"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "variable.other.constant.property.js"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "variable.other.property.js"
          }
        }
      },
      {
        name: "variable.other.constant.js",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.js",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.js",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js"
          },
          "2": {
            name: "punctuation.accessor.optional.js"
          },
          "3": {
            name: "variable.other.constant.object.property.js"
          },
          "4": {
            name: "variable.other.object.property.js"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.js"
          },
          "2": {
            name: "variable.other.object.js"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.js",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.js",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.js",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.js",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.js"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.js meta.return.type.arrow.js",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.js",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.js"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.js",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.js",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.js"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.js"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.js"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.js"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.js",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.js",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.js"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.js",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js"
          },
          "2": {
            name: "keyword.operator.optional.js"
          },
          "3": {
            name: "punctuation.separator.label.js"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.js",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.js"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.js"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.js",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "entity.name.function.js variable.language.this.js"
          },
          "4": {
            name: "entity.name.function.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.operator.rest.js"
          },
          "3": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "4": {
            name: "variable.parameter.js"
          },
          "5": {
            name: "keyword.operator.optional.js"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.js",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.js storage.modifier.js"
          },
          "2": {
            name: "meta.type.constructor.js keyword.control.new.js"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.js",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js"
          },
          "2": {
            name: "keyword.control.new.js"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.js",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.js",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.js"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.js",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.js",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js"
          },
          "2": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "3": {
            name: "variable.parameter.js"
          },
          "4": {
            name: "keyword.operator.expression.is.js"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js"
          },
          "2": {
            name: "variable.parameter.js variable.language.this.js"
          },
          "3": {
            name: "variable.parameter.js"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.js",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          },
          "4": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.end.js"
          }
        },
        contentName: "meta.type.parameters.js",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.js"
          },
          "2": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js punctuation.definition.typeparameters.end.js"
          }
        },
        contentName: "meta.type.parameters.js",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.js"
          },
          "2": {
            name: "punctuation.accessor.js"
          },
          "3": {
            name: "punctuation.accessor.optional.js"
          }
        }
      },
      {
        name: "entity.name.type.js",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.js",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.js",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.js"
      },
      "2": {
        name: "punctuation.accessor.optional.js"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.js",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js"
      },
      "2": {
        name: "invalid.illegal.newline.js"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.js",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js"
      },
      "2": {
        name: "invalid.illegal.newline.js"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.js",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.js",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.js",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.js",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.js"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.js",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.js"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.js",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.js"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js"
          },
          "2": {
            name: "keyword.other.js"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.js",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.js"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js"
          },
          "2": {
            name: "keyword.other.js"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.js",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.js"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.js",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.js"
          },
          "2": {
            name: "storage.type.internaldeclaration.js"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.js"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.js"
          },
          "2": {
            name: "comment.line.double-slash.js"
          },
          "3": {
            name: "punctuation.definition.comment.js"
          },
          "4": {
            name: "storage.type.internaldeclaration.js"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.js"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.js"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.js"
      },
      "2": {
        name: "comment.line.double-slash.js"
      },
      "3": {
        name: "punctuation.definition.comment.js"
      },
      "4": {
        name: "storage.type.internaldeclaration.js"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.js"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.js"
  },
  directives: {
    name: "comment.line.triple-slash.directive.js",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.js"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.js",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.js"
          },
          "2": {
            name: "entity.name.tag.directive.js"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.js"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.js",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.js",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.js"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.js"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  jsx: {
    patterns: [
      {
        include: "#jsx-tag-without-attributes-in-expression"
      },
      {
        include: "#jsx-tag-in-expression"
      }
    ]
  },
  "jsx-tag-without-attributes-in-expression": {
    begin: "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      }
    ]
  },
  "jsx-tag-without-attributes": {
    name: "meta.tag.without-attributes.js",
    begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    end: "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js"
      },
      "2": {
        name: "entity.name.tag.namespace.js"
      },
      "3": {
        name: "punctuation.separator.namespace.js"
      },
      "4": {
        name: "entity.name.tag.js"
      },
      "5": {
        name: "support.class.component.js"
      },
      "6": {
        name: "punctuation.definition.tag.end.js"
      }
    },
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js"
      },
      "2": {
        name: "entity.name.tag.namespace.js"
      },
      "3": {
        name: "punctuation.separator.namespace.js"
      },
      "4": {
        name: "entity.name.tag.js"
      },
      "5": {
        name: "support.class.component.js"
      },
      "6": {
        name: "punctuation.definition.tag.end.js"
      }
    },
    contentName: "meta.jsx.children.js",
    patterns: [
      {
        include: "#jsx-children"
      }
    ]
  },
  "jsx-tag-in-expression": {
    begin: "(?x)\n  (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n  (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n  (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    patterns: [
      {
        include: "#jsx-tag"
      }
    ]
  },
  "jsx-tag": {
    name: "meta.tag.js",
    begin: "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.js"
      },
      "2": {
        name: "punctuation.definition.tag.begin.js"
      },
      "3": {
        name: "entity.name.tag.namespace.js"
      },
      "4": {
        name: "punctuation.separator.namespace.js"
      },
      "5": {
        name: "entity.name.tag.js"
      },
      "6": {
        name: "support.class.component.js"
      },
      "7": {
        name: "punctuation.definition.tag.end.js"
      }
    },
    patterns: [
      {
        begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.js"
          },
          "2": {
            name: "entity.name.tag.namespace.js"
          },
          "3": {
            name: "punctuation.separator.namespace.js"
          },
          "4": {
            name: "entity.name.tag.js"
          },
          "5": {
            name: "support.class.component.js"
          }
        },
        end: "(?=[/]?>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#jsx-tag-attributes"
          }
        ]
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.js"
          }
        },
        end: "(?=</)",
        contentName: "meta.jsx.children.js",
        patterns: [
          {
            include: "#jsx-children"
          }
        ]
      }
    ]
  },
  "jsx-children": {
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      },
      {
        include: "#jsx-tag"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-evaluated-code": {
    contentName: "meta.embedded.expression.js",
    begin: "\\{",
    end: "\\}",
    beginCaptures: {
      "0": {
        name: "punctuation.section.embedded.begin.js"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.section.embedded.end.js"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "jsx-entities": {
    patterns: [
      {
        name: "constant.character.entity.js",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.js"
          },
          "3": {
            name: "punctuation.definition.entity.js"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.js",
        match: "&"
      }
    ]
  },
  "jsx-tag-attributes": {
    name: "meta.tag.attributes.js",
    begin: "\\s+",
    end: "(?=[/]?>)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#jsx-tag-attribute-name"
      },
      {
        include: "#jsx-tag-attribute-assignment"
      },
      {
        include: "#jsx-string-double-quoted"
      },
      {
        include: "#jsx-string-single-quoted"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-tag-attributes-illegal"
      }
    ]
  },
  "jsx-tag-attribute-name": {
    match: "(?x)\n  \\s*\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n  ([_$[:alpha:]][-_$[:alnum:]]*)\n  (?=\\s|=|/?>|/\\*|//)",
    captures: {
      "1": {
        name: "entity.other.attribute-name.namespace.js"
      },
      "2": {
        name: "punctuation.separator.namespace.js"
      },
      "3": {
        name: "entity.other.attribute-name.js"
      }
    }
  },
  "jsx-tag-attribute-assignment": {
    name: "keyword.operator.assignment.js",
    match: `=(?=\\s*(?:'|"|{|/\\*|//|\\n))`
  },
  "jsx-string-double-quoted": {
    name: "string.quoted.double.js",
    begin: '"',
    end: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-string-single-quoted": {
    name: "string.quoted.single.js",
    begin: "'",
    end: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-tag-attributes-illegal": {
    name: "invalid.illegal.attribute.js",
    match: "\\S+"
  }
};
const javascript_tmLanguage = {
  information_for_contributors: information_for_contributors$6,
  version: version$6,
  name: name$9,
  scopeName: scopeName$8,
  patterns: patterns$8,
  repository: repository$8
};
const __vite_glob_0_2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: javascript_tmLanguage,
  information_for_contributors: information_for_contributors$6,
  name: name$9,
  patterns: patterns$8,
  repository: repository$8,
  scopeName: scopeName$8,
  version: version$6
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$5 = [
  "This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$5 = "https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70";
const name$8 = "json";
const scopeName$7 = "source.json";
const patterns$7 = [
  {
    include: "#value"
  }
];
const repository$7 = {
  array: {
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.array.begin.json"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.array.end.json"
      }
    },
    name: "meta.structure.array.json",
    patterns: [
      {
        include: "#value"
      },
      {
        match: ",",
        name: "punctuation.separator.array.json"
      },
      {
        match: "[^\\s\\]]",
        name: "invalid.illegal.expected-array-separator.json"
      }
    ]
  },
  comments: {
    patterns: [
      {
        begin: "/\\*\\*(?!/)",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json"
          }
        },
        end: "\\*/",
        name: "comment.block.documentation.json"
      },
      {
        begin: "/\\*",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json"
          }
        },
        end: "\\*/",
        name: "comment.block.json"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.comment.json"
          }
        },
        match: "(//).*$\\n?",
        name: "comment.line.double-slash.js"
      }
    ]
  },
  constant: {
    match: "\\b(?:true|false|null)\\b",
    name: "constant.language.json"
  },
  number: {
    match: "(?x)        # turn on extended mode\n  -?        # an optional minus\n  (?:\n    0       # a zero\n    |       # ...or...\n    [1-9]   # a 1-9 character\n    \\d*     # followed by zero or more digits\n  )\n  (?:\n    (?:\n      \\.    # a period\n      \\d+   # followed by one or more digits\n    )?\n    (?:\n      [eE]  # an e character\n      [+-]? # followed by an option +/-\n      \\d+   # followed by one or more digits\n    )?      # make exponent optional\n  )?        # make decimal portion optional",
    name: "constant.numeric.json"
  },
  object: {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.begin.json"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.end.json"
      }
    },
    name: "meta.structure.dictionary.json",
    patterns: [
      {
        comment: "the JSON object key",
        include: "#objectkey"
      },
      {
        include: "#comments"
      },
      {
        begin: ":",
        beginCaptures: {
          "0": {
            name: "punctuation.separator.dictionary.key-value.json"
          }
        },
        end: "(,)|(?=\\})",
        endCaptures: {
          "1": {
            name: "punctuation.separator.dictionary.pair.json"
          }
        },
        name: "meta.structure.dictionary.value.json",
        patterns: [
          {
            comment: "the JSON object value",
            include: "#value"
          },
          {
            match: "[^\\s,]",
            name: "invalid.illegal.expected-dictionary-separator.json"
          }
        ]
      },
      {
        match: "[^\\s\\}]",
        name: "invalid.illegal.expected-dictionary-separator.json"
      }
    ]
  },
  string: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.json"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.json"
      }
    },
    name: "string.quoted.double.json",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  objectkey: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.begin.json"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.end.json"
      }
    },
    name: "string.json support.type.property-name.json",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  stringcontent: {
    patterns: [
      {
        match: '(?x)                # turn on extended mode\n  \\\\                # a literal backslash\n  (?:               # ...followed by...\n    ["\\\\/bfnrt]     # one of these characters\n    |               # ...or...\n    u               # a u\n    [0-9a-fA-F]{4}) # and four hex digits',
        name: "constant.character.escape.json"
      },
      {
        match: "\\\\.",
        name: "invalid.illegal.unrecognized-string-escape.json"
      }
    ]
  },
  value: {
    patterns: [
      {
        include: "#constant"
      },
      {
        include: "#number"
      },
      {
        include: "#string"
      },
      {
        include: "#array"
      },
      {
        include: "#object"
      },
      {
        include: "#comments"
      }
    ]
  }
};
const json_tmLanguage = {
  information_for_contributors: information_for_contributors$5,
  version: version$5,
  name: name$8,
  scopeName: scopeName$7,
  patterns: patterns$7,
  repository: repository$7
};
const __vite_glob_0_3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: json_tmLanguage,
  information_for_contributors: information_for_contributors$5,
  name: name$8,
  patterns: patterns$7,
  repository: repository$7,
  scopeName: scopeName$7,
  version: version$5
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$4 = [
  "This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$4 = "https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70";
const name$7 = "jsonc";
const scopeName$6 = "source.json.comments";
const patterns$6 = [
  {
    include: "#value"
  }
];
const repository$6 = {
  array: {
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.array.begin.json.comments"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.array.end.json.comments"
      }
    },
    name: "meta.structure.array.json.comments",
    patterns: [
      {
        include: "#value"
      },
      {
        match: ",",
        name: "punctuation.separator.array.json.comments"
      },
      {
        match: "[^\\s\\]]",
        name: "invalid.illegal.expected-array-separator.json.comments"
      }
    ]
  },
  comments: {
    patterns: [
      {
        begin: "/\\*\\*(?!/)",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json.comments"
          }
        },
        end: "\\*/",
        name: "comment.block.documentation.json.comments"
      },
      {
        begin: "/\\*",
        captures: {
          "0": {
            name: "punctuation.definition.comment.json.comments"
          }
        },
        end: "\\*/",
        name: "comment.block.json.comments"
      },
      {
        captures: {
          "1": {
            name: "punctuation.definition.comment.json.comments"
          }
        },
        match: "(//).*$\\n?",
        name: "comment.line.double-slash.js"
      }
    ]
  },
  constant: {
    match: "\\b(?:true|false|null)\\b",
    name: "constant.language.json.comments"
  },
  number: {
    match: "(?x)        # turn on extended mode\n  -?        # an optional minus\n  (?:\n    0       # a zero\n    |       # ...or...\n    [1-9]   # a 1-9 character\n    \\d*     # followed by zero or more digits\n  )\n  (?:\n    (?:\n      \\.    # a period\n      \\d+   # followed by one or more digits\n    )?\n    (?:\n      [eE]  # an e character\n      [+-]? # followed by an option +/-\n      \\d+   # followed by one or more digits\n    )?      # make exponent optional\n  )?        # make decimal portion optional",
    name: "constant.numeric.json.comments"
  },
  object: {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.begin.json.comments"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.dictionary.end.json.comments"
      }
    },
    name: "meta.structure.dictionary.json.comments",
    patterns: [
      {
        comment: "the JSON object key",
        include: "#objectkey"
      },
      {
        include: "#comments"
      },
      {
        begin: ":",
        beginCaptures: {
          "0": {
            name: "punctuation.separator.dictionary.key-value.json.comments"
          }
        },
        end: "(,)|(?=\\})",
        endCaptures: {
          "1": {
            name: "punctuation.separator.dictionary.pair.json.comments"
          }
        },
        name: "meta.structure.dictionary.value.json.comments",
        patterns: [
          {
            comment: "the JSON object value",
            include: "#value"
          },
          {
            match: "[^\\s,]",
            name: "invalid.illegal.expected-dictionary-separator.json.comments"
          }
        ]
      },
      {
        match: "[^\\s\\}]",
        name: "invalid.illegal.expected-dictionary-separator.json.comments"
      }
    ]
  },
  string: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.json.comments"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.json.comments"
      }
    },
    name: "string.quoted.double.json.comments",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  objectkey: {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.begin.json.comments"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.support.type.property-name.end.json.comments"
      }
    },
    name: "string.json.comments support.type.property-name.json.comments",
    patterns: [
      {
        include: "#stringcontent"
      }
    ]
  },
  stringcontent: {
    patterns: [
      {
        match: '(?x)                # turn on extended mode\n  \\\\                # a literal backslash\n  (?:               # ...followed by...\n    ["\\\\/bfnrt]     # one of these characters\n    |               # ...or...\n    u               # a u\n    [0-9a-fA-F]{4}) # and four hex digits',
        name: "constant.character.escape.json.comments"
      },
      {
        match: "\\\\.",
        name: "invalid.illegal.unrecognized-string-escape.json.comments"
      }
    ]
  },
  value: {
    patterns: [
      {
        include: "#constant"
      },
      {
        include: "#number"
      },
      {
        include: "#string"
      },
      {
        include: "#array"
      },
      {
        include: "#object"
      },
      {
        include: "#comments"
      }
    ]
  }
};
const jsonc_tmLanguage = {
  information_for_contributors: information_for_contributors$4,
  version: version$4,
  name: name$7,
  scopeName: scopeName$6,
  patterns: patterns$6,
  repository: repository$6
};
const __vite_glob_0_4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: jsonc_tmLanguage,
  information_for_contributors: information_for_contributors$4,
  name: name$7,
  patterns: patterns$6,
  repository: repository$6,
  scopeName: scopeName$6,
  version: version$4
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$3 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$3 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$6 = "jsx";
const scopeName$5 = "source.js.jsx";
const patterns$5 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$5 = {
  shebang: {
    name: "comment.line.shebang.js.jsx",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.js.jsx"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.js.jsx"
          },
          "2": {
            name: "entity.name.label.js.jsx"
          }
        }
      },
      {
        name: "keyword.control.loop.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.js.jsx"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.js.jsx"
          },
          "2": {
            name: "punctuation.separator.label.js.jsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js.jsx"
          },
          "2": {
            name: "punctuation.separator.label.js.jsx"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#jsx"
      },
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.js.jsx"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.js.jsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js.jsx"
              },
              "2": {
                name: "storage.modifier.js.jsx"
              },
              "3": {
                name: "storage.type.js.jsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js.jsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.js.jsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.type.js.jsx"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.js.jsx"
              },
              "2": {
                name: "storage.modifier.js.jsx"
              },
              "3": {
                name: "storage.type.js.jsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.js.jsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx entity.name.function.js.jsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.js.jsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.js.jsx"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "entity.name.function.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "variable.parameter.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.js.jsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js.jsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.js.jsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.js.jsx"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.js.jsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.js.jsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.js.jsx"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.js.jsx"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "variable.parameter.js.jsx"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.js.jsx"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.js.jsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.js.jsx"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.js.jsx",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.js.jsx entity.name.function.js.jsx"
          },
          "2": {
            name: "keyword.operator.optional.js.jsx"
          },
          "3": {
            name: "keyword.operator.definiteassignment.js.jsx"
          }
        }
      },
      {
        name: "meta.definition.property.js.jsx variable.object.property.js.jsx",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js.jsx",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.js.jsx",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.async.js.jsx"
      },
      "4": {
        name: "storage.type.function.js.jsx"
      },
      "5": {
        name: "keyword.generator.asterisk.js.jsx"
      },
      "6": {
        name: "meta.definition.function.js.jsx entity.name.function.js.jsx"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js.jsx"
      },
      "2": {
        name: "storage.type.function.js.jsx"
      },
      "3": {
        name: "keyword.generator.asterisk.js.jsx"
      },
      "4": {
        name: "meta.definition.function.js.jsx entity.name.function.js.jsx"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.js.jsx entity.name.function.js.jsx",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.js.jsx",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.modifier.js.jsx"
          },
          "4": {
            name: "storage.modifier.async.js.jsx"
          },
          "5": {
            name: "storage.type.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.modifier.js.jsx"
          },
          "4": {
            name: "storage.modifier.async.js.jsx"
          },
          "5": {
            name: "keyword.operator.new.js.jsx"
          },
          "6": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "storage.modifier.js.jsx"
          },
          "4": {
            name: "storage.modifier.async.js.jsx"
          },
          "5": {
            name: "storage.type.property.js.jsx"
          },
          "6": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.js.jsx",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.js.jsx"
      },
      "2": {
        name: "storage.type.property.js.jsx"
      },
      "3": {
        name: "keyword.generator.asterisk.js.jsx"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          },
          "2": {
            name: "storage.type.property.js.jsx"
          },
          "3": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.js.jsx entity.name.function.js.jsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.js.jsx",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.js.jsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          },
          "2": {
            name: "variable.parameter.js.jsx"
          }
        }
      },
      {
        name: "meta.arrow.js.jsx",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.js.jsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js.jsx"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.js.jsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      },
      "2": {
        name: "meta.brace.square.js.jsx"
      },
      "3": {
        name: "variable.parameter.js.jsx"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js.jsx"
      },
      "2": {
        name: "keyword.operator.optional.js.jsx"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.js.jsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "meta.brace.square.js.jsx"
      },
      "4": {
        name: "entity.name.type.js.jsx"
      },
      "5": {
        name: "keyword.operator.expression.in.js.jsx"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.js.jsx"
      },
      "2": {
        name: "keyword.operator.type.modifier.js.jsx"
      },
      "3": {
        name: "keyword.operator.optional.js.jsx"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.js.jsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.js.jsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js.jsx",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.js.jsx"
      },
      "4": {
        name: "storage.type.class.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      },
      "2": {
        name: "storage.type.class.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.js.jsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.js.jsx"
      },
      "4": {
        name: "storage.type.interface.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.js.jsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.js.jsx"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.js.jsx"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.modifier.js.jsx"
      },
      "4": {
        name: "storage.type.enum.js.jsx"
      },
      "5": {
        name: "entity.name.type.enum.js.jsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js.jsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.js.jsx"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.js.jsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.type.namespace.js.jsx"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "storage.type.type.js.jsx"
      },
      "4": {
        name: "entity.name.type.alias.js.jsx"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          },
          "2": {
            name: "keyword.control.intrinsic.js.jsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "keyword.control.import.js.jsx"
          },
          "4": {
            name: "keyword.control.type.js.jsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.js.jsx"
          },
          "6": {
            name: "keyword.operator.assignment.js.jsx"
          },
          "7": {
            name: "keyword.control.require.js.jsx"
          },
          "8": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          },
          "3": {
            name: "keyword.control.import.js.jsx"
          },
          "4": {
            name: "keyword.control.type.js.jsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.js.jsx"
          },
          "6": {
            name: "keyword.operator.assignment.js.jsx"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.js.jsx"
              },
              "2": {
                name: "punctuation.accessor.js.jsx"
              },
              "3": {
                name: "punctuation.accessor.optional.js.jsx"
              }
            }
          },
          {
            name: "variable.other.readwrite.js.jsx",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.js.jsx"
      },
      "2": {
        name: "storage.modifier.js.jsx"
      },
      "3": {
        name: "keyword.control.import.js.jsx"
      },
      "4": {
        name: "keyword.control.type.js.jsx"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.js.jsx"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "keyword.control.as.js.jsx"
          },
          "3": {
            name: "storage.type.namespace.js.jsx"
          },
          "4": {
            name: "entity.name.type.module.js.jsx"
          }
        }
      },
      {
        name: "meta.export.default.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "keyword.control.type.js.jsx"
          },
          "3": {
            name: "keyword.operator.assignment.js.jsx"
          },
          "4": {
            name: "keyword.control.default.js.jsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.js.jsx"
          },
          "2": {
            name: "keyword.control.type.js.jsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.js.jsx",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.js.jsx"
          },
          "2": {
            name: "constant.language.import-export-all.js.jsx"
          },
          "3": {
            name: "variable.other.readwrite.js.jsx"
          },
          "4": {
            name: "keyword.control.as.js.jsx"
          },
          "5": {
            name: "keyword.control.default.js.jsx"
          },
          "6": {
            name: "variable.other.readwrite.alias.js.jsx"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.js.jsx",
        match: "\\*"
      },
      {
        name: "keyword.control.default.js.jsx",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.js.jsx"
          },
          "2": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.js.jsx",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.js.jsx"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.js.jsx",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.js.jsx"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"
              },
              "2": {
                name: "meta.block.js.jsx punctuation.definition.block.js.jsx"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.js.jsx punctuation.definition.block.js.jsx"
              }
            },
            contentName: "meta.block.js.jsx",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.js.jsx"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.js.jsx",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.js.jsx"
              },
              "2": {
                name: "meta.brace.round.js.jsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js.jsx"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.js.jsx",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.js.jsx"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.js.jsx"
              },
              "2": {
                name: "keyword.other.js.jsx"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.js.jsx",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.js.jsx",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js.jsx"
          },
          "1": {
            name: "constant.numeric.decimal.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.js.jsx"
          },
          "1": {
            name: "entity.name.function.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js.jsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        name: "meta.object.member.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.js.jsx",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js.jsx"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.js.jsx"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.js.jsx"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js.jsx"
              },
              "2": {
                name: "meta.brace.round.js.jsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js.jsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.js.jsx"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.js.jsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.js.jsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.js.jsx"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.js.jsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.js.jsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.js.jsx",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.js.jsx punctuation.accessor.optional.js.jsx",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.js.jsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.js.jsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.js.jsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.js.jsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.js.jsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.js.jsx"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "entity.name.function.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "variable.parameter.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.js.jsx",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        include: "#jsx"
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.js.jsx"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.js.jsx"
          },
          "2": {
            name: "keyword.generator.asterisk.js.jsx"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          },
          "2": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.js.jsx"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.js.jsx",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.js.jsx",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.js.jsx",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.js.jsx",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.js.jsx",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.js.jsx",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.js.jsx"
          },
          "2": {
            name: "keyword.operator.assignment.compound.js.jsx"
          },
          "3": {
            name: "keyword.operator.arithmetic.js.jsx"
          }
        }
      },
      {
        name: "keyword.operator.logical.js.jsx",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.js.jsx",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.js.jsx",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.js.jsx",
        match: "--"
      },
      {
        name: "keyword.operator.increment.js.jsx",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.js.jsx",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.js.jsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.js.jsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.js.jsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.js.jsx"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.js.jsx"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.js.jsx",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.js.jsx",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      },
      {
        name: "constant.numeric.binary.js.jsx",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      },
      {
        name: "constant.numeric.octal.js.jsx",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.js.jsx"
          },
          "1": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "2": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "3": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "4": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "5": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "6": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "7": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "8": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "9": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "10": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "11": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "12": {
            name: "meta.delimiter.decimal.period.js.jsx"
          },
          "13": {
            name: "storage.type.numeric.bigint.js.jsx"
          },
          "14": {
            name: "storage.type.numeric.bigint.js.jsx"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.js.jsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.js.jsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.function.math.js.jsx"
          },
          "5": {
            name: "support.constant.property.math.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.function.json.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.variable.property.importmeta.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "support.variable.property.target.js.jsx"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "support.variable.property.js.jsx"
          },
          "4": {
            name: "support.constant.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.js.jsx"
          },
          "2": {
            name: "support.type.object.module.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.js.jsx"
          },
          "4": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "5": {
            name: "support.type.object.module.js.jsx"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "variable.other.constant.property.js.jsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "variable.other.property.js.jsx"
          }
        }
      },
      {
        name: "variable.other.constant.js.jsx",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.js.jsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.js.jsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "3": {
            name: "variable.other.constant.object.property.js.jsx"
          },
          "4": {
            name: "variable.other.object.property.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.js.jsx"
          },
          "2": {
            name: "variable.other.object.js.jsx"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js.jsx",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.js.jsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.js.jsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.js.jsx",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.js.jsx",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.js.jsx"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.js.jsx",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.js.jsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.js.jsx meta.return.type.arrow.js.jsx",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.js.jsx",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.js.jsx"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.js.jsx",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.js.jsx",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.js.jsx"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.js.jsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.js.jsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.js.jsx",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.js.jsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.js.jsx"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.js.jsx",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.js.jsx"
          },
          "2": {
            name: "keyword.operator.optional.js.jsx"
          },
          "3": {
            name: "punctuation.separator.label.js.jsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.js.jsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.js.jsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.js.jsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.js.jsx"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.js.jsx"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.js.jsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.js.jsx"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "entity.name.function.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "entity.name.function.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.operator.rest.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "4": {
            name: "variable.parameter.js.jsx"
          },
          "5": {
            name: "keyword.operator.optional.js.jsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.js.jsx",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.js.jsx storage.modifier.js.jsx"
          },
          "2": {
            name: "meta.type.constructor.js.jsx keyword.control.new.js.jsx"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.js.jsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.js.jsx"
          },
          "2": {
            name: "keyword.control.new.js.jsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.js.jsx",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.js.jsx",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.js.jsx"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.js.jsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.js.jsx"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js.jsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.js.jsx"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.js.jsx",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js.jsx"
          },
          "2": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx"
          },
          "4": {
            name: "keyword.operator.expression.is.js.jsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.js.jsx"
          },
          "2": {
            name: "variable.parameter.js.jsx variable.language.this.js.jsx"
          },
          "3": {
            name: "variable.parameter.js.jsx"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.js.jsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          },
          "4": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"
          }
        },
        contentName: "meta.type.parameters.js.jsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.js.jsx"
          },
          "2": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"
          }
        },
        contentName: "meta.type.parameters.js.jsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.js.jsx"
          },
          "2": {
            name: "punctuation.accessor.js.jsx"
          },
          "3": {
            name: "punctuation.accessor.optional.js.jsx"
          }
        }
      },
      {
        name: "entity.name.type.js.jsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.js.jsx",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.js.jsx",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.js.jsx"
      },
      "2": {
        name: "punctuation.accessor.optional.js.jsx"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.js.jsx",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js.jsx"
      },
      "2": {
        name: "invalid.illegal.newline.js.jsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.js.jsx",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.js.jsx"
      },
      "2": {
        name: "invalid.illegal.newline.js.jsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.js.jsx",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js.jsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js.jsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js.jsx"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.js.jsx",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.js.jsx",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js.jsx"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.js.jsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.js.jsx"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.js.jsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.js.jsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.js.jsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.js.jsx"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.js.jsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.js.jsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.js.jsx"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.js.jsx",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.js.jsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js.jsx"
          },
          "2": {
            name: "keyword.other.js.jsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.js.jsx",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.js.jsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.js.jsx"
          },
          "2": {
            name: "keyword.other.js.jsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.js.jsx",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.js.jsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js.jsx"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.js.jsx",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.js.jsx"
          },
          "2": {
            name: "storage.type.internaldeclaration.js.jsx"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.js.jsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.js.jsx"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.js.jsx"
          },
          "2": {
            name: "comment.line.double-slash.js.jsx"
          },
          "3": {
            name: "punctuation.definition.comment.js.jsx"
          },
          "4": {
            name: "storage.type.internaldeclaration.js.jsx"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.js.jsx"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.js.jsx"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.js.jsx"
      },
      "2": {
        name: "comment.line.double-slash.js.jsx"
      },
      "3": {
        name: "punctuation.definition.comment.js.jsx"
      },
      "4": {
        name: "storage.type.internaldeclaration.js.jsx"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.js.jsx"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.js.jsx"
  },
  directives: {
    name: "comment.line.triple-slash.directive.js.jsx",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.js.jsx"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.js.jsx",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.js.jsx"
          },
          "2": {
            name: "entity.name.tag.directive.js.jsx"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.js.jsx"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.js.jsx",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.js.jsx",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.js.jsx"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.js.jsx"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  jsx: {
    patterns: [
      {
        include: "#jsx-tag-without-attributes-in-expression"
      },
      {
        include: "#jsx-tag-in-expression"
      }
    ]
  },
  "jsx-tag-without-attributes-in-expression": {
    begin: "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      }
    ]
  },
  "jsx-tag-without-attributes": {
    name: "meta.tag.without-attributes.js.jsx",
    begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    end: "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js.jsx"
      },
      "2": {
        name: "entity.name.tag.namespace.js.jsx"
      },
      "3": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "4": {
        name: "entity.name.tag.js.jsx"
      },
      "5": {
        name: "support.class.component.js.jsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.js.jsx"
      }
    },
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.js.jsx"
      },
      "2": {
        name: "entity.name.tag.namespace.js.jsx"
      },
      "3": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "4": {
        name: "entity.name.tag.js.jsx"
      },
      "5": {
        name: "support.class.component.js.jsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.js.jsx"
      }
    },
    contentName: "meta.jsx.children.js.jsx",
    patterns: [
      {
        include: "#jsx-children"
      }
    ]
  },
  "jsx-tag-in-expression": {
    begin: "(?x)\n  (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n  (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n  (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    patterns: [
      {
        include: "#jsx-tag"
      }
    ]
  },
  "jsx-tag": {
    name: "meta.tag.js.jsx",
    begin: "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.js.jsx"
      },
      "2": {
        name: "punctuation.definition.tag.begin.js.jsx"
      },
      "3": {
        name: "entity.name.tag.namespace.js.jsx"
      },
      "4": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "5": {
        name: "entity.name.tag.js.jsx"
      },
      "6": {
        name: "support.class.component.js.jsx"
      },
      "7": {
        name: "punctuation.definition.tag.end.js.jsx"
      }
    },
    patterns: [
      {
        begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.js.jsx"
          },
          "2": {
            name: "entity.name.tag.namespace.js.jsx"
          },
          "3": {
            name: "punctuation.separator.namespace.js.jsx"
          },
          "4": {
            name: "entity.name.tag.js.jsx"
          },
          "5": {
            name: "support.class.component.js.jsx"
          }
        },
        end: "(?=[/]?>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#jsx-tag-attributes"
          }
        ]
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.js.jsx"
          }
        },
        end: "(?=</)",
        contentName: "meta.jsx.children.js.jsx",
        patterns: [
          {
            include: "#jsx-children"
          }
        ]
      }
    ]
  },
  "jsx-children": {
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      },
      {
        include: "#jsx-tag"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-evaluated-code": {
    contentName: "meta.embedded.expression.js.jsx",
    begin: "\\{",
    end: "\\}",
    beginCaptures: {
      "0": {
        name: "punctuation.section.embedded.begin.js.jsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.section.embedded.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "jsx-entities": {
    patterns: [
      {
        name: "constant.character.entity.js.jsx",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.js.jsx"
          },
          "3": {
            name: "punctuation.definition.entity.js.jsx"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.js.jsx",
        match: "&"
      }
    ]
  },
  "jsx-tag-attributes": {
    name: "meta.tag.attributes.js.jsx",
    begin: "\\s+",
    end: "(?=[/]?>)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#jsx-tag-attribute-name"
      },
      {
        include: "#jsx-tag-attribute-assignment"
      },
      {
        include: "#jsx-string-double-quoted"
      },
      {
        include: "#jsx-string-single-quoted"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-tag-attributes-illegal"
      }
    ]
  },
  "jsx-tag-attribute-name": {
    match: "(?x)\n  \\s*\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n  ([_$[:alpha:]][-_$[:alnum:]]*)\n  (?=\\s|=|/?>|/\\*|//)",
    captures: {
      "1": {
        name: "entity.other.attribute-name.namespace.js.jsx"
      },
      "2": {
        name: "punctuation.separator.namespace.js.jsx"
      },
      "3": {
        name: "entity.other.attribute-name.js.jsx"
      }
    }
  },
  "jsx-tag-attribute-assignment": {
    name: "keyword.operator.assignment.js.jsx",
    match: `=(?=\\s*(?:'|"|{|/\\*|//|\\n))`
  },
  "jsx-string-double-quoted": {
    name: "string.quoted.double.js.jsx",
    begin: '"',
    end: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-string-single-quoted": {
    name: "string.quoted.single.js.jsx",
    begin: "'",
    end: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.js.jsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.js.jsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-tag-attributes-illegal": {
    name: "invalid.illegal.attribute.js.jsx",
    match: "\\S+"
  }
};
const jsx_tmLanguage = {
  information_for_contributors: information_for_contributors$3,
  version: version$3,
  name: name$6,
  scopeName: scopeName$5,
  patterns: patterns$5,
  repository: repository$5
};
const __vite_glob_0_5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: jsx_tmLanguage,
  information_for_contributors: information_for_contributors$3,
  name: name$6,
  patterns: patterns$5,
  repository: repository$5,
  scopeName: scopeName$5,
  version: version$3
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$2 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$2 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$5 = "tsx";
const scopeName$4 = "source.tsx";
const patterns$4 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$4 = {
  shebang: {
    name: "comment.line.shebang.tsx",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.tsx"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.tsx"
          },
          "2": {
            name: "entity.name.label.tsx"
          }
        }
      },
      {
        name: "keyword.control.loop.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.tsx"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.tsx"
          },
          "2": {
            name: "punctuation.separator.label.tsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.tsx"
          },
          "2": {
            name: "punctuation.separator.label.tsx"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#jsx"
      },
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.tsx"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.tsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.tsx"
              },
              "2": {
                name: "storage.modifier.tsx"
              },
              "3": {
                name: "storage.type.tsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.tsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.tsx",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.type.tsx"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.tsx"
              },
              "2": {
                name: "storage.modifier.tsx"
              },
              "3": {
                name: "storage.type.tsx"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.tsx"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx entity.name.function.tsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.constant.tsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.readwrite.tsx"
          },
          "2": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.tsx variable.other.constant.tsx"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.tsx",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.tsx"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "meta.definition.variable.tsx variable.other.readwrite.tsx"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "meta.definition.variable.tsx variable.other.constant.tsx"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "entity.name.function.tsx variable.language.this.tsx"
          },
          "4": {
            name: "entity.name.function.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "4": {
            name: "variable.parameter.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.tsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.tsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.tsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.tsx"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.tsx",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.tsx"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.tsx"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.tsx"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "variable.parameter.tsx"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.tsx"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.tsx"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.tsx"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.tsx",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.tsx entity.name.function.tsx"
          },
          "2": {
            name: "keyword.operator.optional.tsx"
          },
          "3": {
            name: "keyword.operator.definiteassignment.tsx"
          }
        }
      },
      {
        name: "meta.definition.property.tsx variable.object.property.tsx",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.tsx",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.tsx",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.async.tsx"
      },
      "4": {
        name: "storage.type.function.tsx"
      },
      "5": {
        name: "keyword.generator.asterisk.tsx"
      },
      "6": {
        name: "meta.definition.function.tsx entity.name.function.tsx"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.tsx"
      },
      "2": {
        name: "storage.type.function.tsx"
      },
      "3": {
        name: "keyword.generator.asterisk.tsx"
      },
      "4": {
        name: "meta.definition.function.tsx entity.name.function.tsx"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.tsx entity.name.function.tsx",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.tsx",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.tsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.modifier.tsx"
          },
          "4": {
            name: "storage.modifier.async.tsx"
          },
          "5": {
            name: "storage.type.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.tsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.modifier.tsx"
          },
          "4": {
            name: "storage.modifier.async.tsx"
          },
          "5": {
            name: "keyword.operator.new.tsx"
          },
          "6": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.tsx",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "storage.modifier.tsx"
          },
          "4": {
            name: "storage.modifier.async.tsx"
          },
          "5": {
            name: "storage.type.property.tsx"
          },
          "6": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.tsx",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.tsx"
      },
      "2": {
        name: "storage.type.property.tsx"
      },
      "3": {
        name: "keyword.generator.asterisk.tsx"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          },
          "2": {
            name: "storage.type.property.tsx"
          },
          "3": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.tsx entity.name.function.tsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.tsx",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.tsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.tsx"
          },
          "2": {
            name: "variable.parameter.tsx"
          }
        }
      },
      {
        name: "meta.arrow.tsx",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.tsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.tsx"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.tsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      },
      "2": {
        name: "meta.brace.square.tsx"
      },
      "3": {
        name: "variable.parameter.tsx"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.tsx"
      },
      "2": {
        name: "keyword.operator.optional.tsx"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.tsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "meta.brace.square.tsx"
      },
      "4": {
        name: "entity.name.type.tsx"
      },
      "5": {
        name: "keyword.operator.expression.in.tsx"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.tsx"
      },
      "2": {
        name: "keyword.operator.type.modifier.tsx"
      },
      "3": {
        name: "keyword.operator.optional.tsx"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.tsx"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.tsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.tsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.tsx"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.tsx",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.tsx"
      },
      "4": {
        name: "storage.type.class.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      },
      "2": {
        name: "storage.type.class.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.tsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.tsx"
      },
      "4": {
        name: "storage.type.interface.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.tsx"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.tsx"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.tsx"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.modifier.tsx"
      },
      "4": {
        name: "storage.type.enum.tsx"
      },
      "5": {
        name: "entity.name.type.enum.tsx"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.tsx"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.tsx"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.tsx",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.type.namespace.tsx"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "storage.type.type.tsx"
      },
      "4": {
        name: "entity.name.type.alias.tsx"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          },
          "2": {
            name: "keyword.control.intrinsic.tsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "keyword.control.import.tsx"
          },
          "4": {
            name: "keyword.control.type.tsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.tsx"
          },
          "6": {
            name: "keyword.operator.assignment.tsx"
          },
          "7": {
            name: "keyword.control.require.tsx"
          },
          "8": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          },
          "3": {
            name: "keyword.control.import.tsx"
          },
          "4": {
            name: "keyword.control.type.tsx"
          },
          "5": {
            name: "variable.other.readwrite.alias.tsx"
          },
          "6": {
            name: "keyword.operator.assignment.tsx"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.tsx"
              },
              "2": {
                name: "punctuation.accessor.tsx"
              },
              "3": {
                name: "punctuation.accessor.optional.tsx"
              }
            }
          },
          {
            name: "variable.other.readwrite.tsx",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.tsx"
      },
      "2": {
        name: "storage.modifier.tsx"
      },
      "3": {
        name: "keyword.control.import.tsx"
      },
      "4": {
        name: "keyword.control.type.tsx"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.tsx"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "keyword.control.as.tsx"
          },
          "3": {
            name: "storage.type.namespace.tsx"
          },
          "4": {
            name: "entity.name.type.module.tsx"
          }
        }
      },
      {
        name: "meta.export.default.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "keyword.control.type.tsx"
          },
          "3": {
            name: "keyword.operator.assignment.tsx"
          },
          "4": {
            name: "keyword.control.default.tsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.tsx"
          },
          "2": {
            name: "keyword.control.type.tsx"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.tsx",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.tsx"
          },
          "2": {
            name: "constant.language.import-export-all.tsx"
          },
          "3": {
            name: "variable.other.readwrite.tsx"
          },
          "4": {
            name: "keyword.control.as.tsx"
          },
          "5": {
            name: "keyword.control.default.tsx"
          },
          "6": {
            name: "variable.other.readwrite.alias.tsx"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.tsx",
        match: "\\*"
      },
      {
        name: "keyword.control.default.tsx",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.tsx"
          },
          "2": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.tsx",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.tsx"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.tsx",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.tsx"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"
              },
              "2": {
                name: "meta.block.tsx punctuation.definition.block.tsx"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.tsx punctuation.definition.block.tsx"
              }
            },
            contentName: "meta.block.tsx",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.tsx"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.tsx",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.tsx"
              },
              "2": {
                name: "meta.brace.round.tsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.tsx"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.tsx",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.tsx"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.tsx"
              },
              "2": {
                name: "keyword.other.tsx"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.tsx",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.tsx meta.object-literal.key.tsx",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.tsx meta.object-literal.key.tsx",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.tsx meta.object-literal.key.tsx",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.tsx",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.tsx"
          },
          "1": {
            name: "constant.numeric.decimal.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.tsx"
          },
          "1": {
            name: "entity.name.function.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.tsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        name: "meta.object.member.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.tsx"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.tsx",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.tsx punctuation.separator.key-value.tsx"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.tsx"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.tsx"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.tsx"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.tsx"
              },
              "2": {
                name: "meta.brace.round.tsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.tsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.tsx"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.tsx"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.tsx"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.tsx"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.tsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.tsx",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.tsx",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.tsx punctuation.accessor.optional.tsx",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.tsx keyword.operator.definiteassignment.tsx",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.tsx",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.tsx",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.tsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.tsx"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.tsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.tsx"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "entity.name.function.tsx variable.language.this.tsx"
          },
          "4": {
            name: "entity.name.function.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "4": {
            name: "variable.parameter.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.tsx",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        include: "#jsx"
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.tsx"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.tsx"
          },
          "2": {
            name: "keyword.generator.asterisk.tsx"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.tsx"
          },
          "2": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.tsx"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.tsx",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.tsx",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.tsx",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.tsx",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.tsx",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.tsx",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.tsx"
          },
          "2": {
            name: "keyword.operator.assignment.compound.tsx"
          },
          "3": {
            name: "keyword.operator.arithmetic.tsx"
          }
        }
      },
      {
        name: "keyword.operator.logical.tsx",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.tsx",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.tsx",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.tsx",
        match: "--"
      },
      {
        name: "keyword.operator.increment.tsx",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.tsx",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.tsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.tsx"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.tsx"
          },
          "2": {
            name: "keyword.operator.arithmetic.tsx"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.tsx"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.tsx",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.tsx",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      },
      {
        name: "constant.numeric.binary.tsx",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      },
      {
        name: "constant.numeric.octal.tsx",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.tsx"
          },
          "1": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "2": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "3": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "4": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "5": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "6": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "7": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "8": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "9": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "10": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "11": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "12": {
            name: "meta.delimiter.decimal.period.tsx"
          },
          "13": {
            name: "storage.type.numeric.bigint.tsx"
          },
          "14": {
            name: "storage.type.numeric.bigint.tsx"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.tsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.tsx",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.function.math.tsx"
          },
          "5": {
            name: "support.constant.property.math.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.function.json.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.variable.property.importmeta.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "support.variable.property.target.tsx"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "support.variable.property.tsx"
          },
          "4": {
            name: "support.constant.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.tsx"
          },
          "2": {
            name: "support.type.object.module.tsx"
          },
          "3": {
            name: "punctuation.accessor.tsx"
          },
          "4": {
            name: "punctuation.accessor.optional.tsx"
          },
          "5": {
            name: "support.type.object.module.tsx"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n(\n  [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>]                                                              # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "entity.name.function.tsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "variable.other.constant.property.tsx"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "variable.other.property.tsx"
          }
        }
      },
      {
        name: "variable.other.constant.tsx",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.tsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.tsx",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.tsx"
          },
          "2": {
            name: "punctuation.accessor.optional.tsx"
          },
          "3": {
            name: "variable.other.constant.object.property.tsx"
          },
          "4": {
            name: "variable.other.object.property.tsx"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.tsx"
          },
          "2": {
            name: "variable.other.object.tsx"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.tsx",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.tsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.tsx",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.tsx",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.tsx",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.tsx"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.tsx",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.tsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.tsx meta.return.type.arrow.tsx",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.tsx",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.tsx"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.tsx",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.tsx",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.tsx"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.tsx"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.tsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.tsx",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.tsx",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.tsx"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.tsx"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.tsx",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.tsx"
          },
          "2": {
            name: "keyword.operator.optional.tsx"
          },
          "3": {
            name: "punctuation.separator.label.tsx"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.tsx",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.tsx"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.tsx"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.tsx"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.tsx"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.tsx",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.tsx"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "entity.name.function.tsx variable.language.this.tsx"
          },
          "4": {
            name: "entity.name.function.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.operator.rest.tsx"
          },
          "3": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "4": {
            name: "variable.parameter.tsx"
          },
          "5": {
            name: "keyword.operator.optional.tsx"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.tsx",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.tsx storage.modifier.tsx"
          },
          "2": {
            name: "meta.type.constructor.tsx keyword.control.new.tsx"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.tsx",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.tsx"
          },
          "2": {
            name: "keyword.control.new.tsx"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.tsx",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.tsx",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.tsx"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.tsx",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.tsx"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.tsx"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.tsx"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.tsx",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.tsx"
          },
          "2": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "3": {
            name: "variable.parameter.tsx"
          },
          "4": {
            name: "keyword.operator.expression.is.tsx"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.tsx"
          },
          "2": {
            name: "variable.parameter.tsx variable.language.this.tsx"
          },
          "3": {
            name: "variable.parameter.tsx"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.tsx",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          },
          "4": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"
          }
        },
        contentName: "meta.type.parameters.tsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.tsx"
          },
          "2": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"
          }
        },
        contentName: "meta.type.parameters.tsx",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.tsx"
          },
          "2": {
            name: "punctuation.accessor.tsx"
          },
          "3": {
            name: "punctuation.accessor.optional.tsx"
          }
        }
      },
      {
        name: "entity.name.type.tsx",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.tsx",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.tsx",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.tsx"
      },
      "2": {
        name: "punctuation.accessor.optional.tsx"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.tsx",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.tsx"
      },
      "2": {
        name: "invalid.illegal.newline.tsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.tsx",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.tsx"
      },
      "2": {
        name: "invalid.illegal.newline.tsx"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.tsx",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.tsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.tsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.tsx"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.tsx",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.tsx",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.tsx"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.tsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.tsx"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.tsx",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.tsx"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.tsx"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.tsx"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.tsx",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.tsx"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.tsx"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.tsx"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.tsx",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.tsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.tsx"
          },
          "2": {
            name: "keyword.other.tsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.tsx",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.tsx"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.tsx"
          },
          "2": {
            name: "keyword.other.tsx"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.tsx",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.tsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.tsx"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.tsx",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.tsx"
          },
          "2": {
            name: "storage.type.internaldeclaration.tsx"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.tsx"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.tsx"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.tsx"
          },
          "2": {
            name: "comment.line.double-slash.tsx"
          },
          "3": {
            name: "punctuation.definition.comment.tsx"
          },
          "4": {
            name: "storage.type.internaldeclaration.tsx"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.tsx"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.tsx"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.tsx"
      },
      "2": {
        name: "comment.line.double-slash.tsx"
      },
      "3": {
        name: "punctuation.definition.comment.tsx"
      },
      "4": {
        name: "storage.type.internaldeclaration.tsx"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.tsx"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.tsx"
  },
  directives: {
    name: "comment.line.triple-slash.directive.tsx",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.tsx"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.tsx",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.tsx"
          },
          "2": {
            name: "entity.name.tag.directive.tsx"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.tsx"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.tsx",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.tsx",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.tsx"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.tsx"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  jsx: {
    patterns: [
      {
        include: "#jsx-tag-without-attributes-in-expression"
      },
      {
        include: "#jsx-tag-in-expression"
      }
    ]
  },
  "jsx-tag-without-attributes-in-expression": {
    begin: "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      }
    ]
  },
  "jsx-tag-without-attributes": {
    name: "meta.tag.without-attributes.tsx",
    begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    end: "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.tsx"
      },
      "2": {
        name: "entity.name.tag.namespace.tsx"
      },
      "3": {
        name: "punctuation.separator.namespace.tsx"
      },
      "4": {
        name: "entity.name.tag.tsx"
      },
      "5": {
        name: "support.class.component.tsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.tsx"
      }
    },
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.tsx"
      },
      "2": {
        name: "entity.name.tag.namespace.tsx"
      },
      "3": {
        name: "punctuation.separator.namespace.tsx"
      },
      "4": {
        name: "entity.name.tag.tsx"
      },
      "5": {
        name: "support.class.component.tsx"
      },
      "6": {
        name: "punctuation.definition.tag.end.tsx"
      }
    },
    contentName: "meta.jsx.children.tsx",
    patterns: [
      {
        include: "#jsx-children"
      }
    ]
  },
  "jsx-tag-in-expression": {
    begin: "(?x)\n  (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n  (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n  (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    patterns: [
      {
        include: "#jsx-tag"
      }
    ]
  },
  "jsx-tag": {
    name: "meta.tag.tsx",
    begin: "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
    end: "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.tsx"
      },
      "2": {
        name: "punctuation.definition.tag.begin.tsx"
      },
      "3": {
        name: "entity.name.tag.namespace.tsx"
      },
      "4": {
        name: "punctuation.separator.namespace.tsx"
      },
      "5": {
        name: "entity.name.tag.tsx"
      },
      "6": {
        name: "support.class.component.tsx"
      },
      "7": {
        name: "punctuation.definition.tag.end.tsx"
      }
    },
    patterns: [
      {
        begin: "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.begin.tsx"
          },
          "2": {
            name: "entity.name.tag.namespace.tsx"
          },
          "3": {
            name: "punctuation.separator.namespace.tsx"
          },
          "4": {
            name: "entity.name.tag.tsx"
          },
          "5": {
            name: "support.class.component.tsx"
          }
        },
        end: "(?=[/]?>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#jsx-tag-attributes"
          }
        ]
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.tsx"
          }
        },
        end: "(?=</)",
        contentName: "meta.jsx.children.tsx",
        patterns: [
          {
            include: "#jsx-children"
          }
        ]
      }
    ]
  },
  "jsx-children": {
    patterns: [
      {
        include: "#jsx-tag-without-attributes"
      },
      {
        include: "#jsx-tag"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-evaluated-code": {
    contentName: "meta.embedded.expression.tsx",
    begin: "\\{",
    end: "\\}",
    beginCaptures: {
      "0": {
        name: "punctuation.section.embedded.begin.tsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.section.embedded.end.tsx"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "jsx-entities": {
    patterns: [
      {
        name: "constant.character.entity.tsx",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.tsx"
          },
          "3": {
            name: "punctuation.definition.entity.tsx"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.tsx",
        match: "&"
      }
    ]
  },
  "jsx-tag-attributes": {
    name: "meta.tag.attributes.tsx",
    begin: "\\s+",
    end: "(?=[/]?>)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#jsx-tag-attribute-name"
      },
      {
        include: "#jsx-tag-attribute-assignment"
      },
      {
        include: "#jsx-string-double-quoted"
      },
      {
        include: "#jsx-string-single-quoted"
      },
      {
        include: "#jsx-evaluated-code"
      },
      {
        include: "#jsx-tag-attributes-illegal"
      }
    ]
  },
  "jsx-tag-attribute-name": {
    match: "(?x)\n  \\s*\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n  ([_$[:alpha:]][-_$[:alnum:]]*)\n  (?=\\s|=|/?>|/\\*|//)",
    captures: {
      "1": {
        name: "entity.other.attribute-name.namespace.tsx"
      },
      "2": {
        name: "punctuation.separator.namespace.tsx"
      },
      "3": {
        name: "entity.other.attribute-name.tsx"
      }
    }
  },
  "jsx-tag-attribute-assignment": {
    name: "keyword.operator.assignment.tsx",
    match: `=(?=\\s*(?:'|"|{|/\\*|//|\\n))`
  },
  "jsx-string-double-quoted": {
    name: "string.quoted.double.tsx",
    begin: '"',
    end: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.tsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-string-single-quoted": {
    name: "string.quoted.single.tsx",
    begin: "'",
    end: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.tsx"
      }
    },
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.tsx"
      }
    },
    patterns: [
      {
        include: "#jsx-entities"
      }
    ]
  },
  "jsx-tag-attributes-illegal": {
    name: "invalid.illegal.attribute.tsx",
    match: "\\S+"
  }
};
const tsx_tmLanguage = {
  information_for_contributors: information_for_contributors$2,
  version: version$2,
  name: name$5,
  scopeName: scopeName$4,
  patterns: patterns$4,
  repository: repository$4
};
const __vite_glob_0_6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: tsx_tmLanguage,
  information_for_contributors: information_for_contributors$2,
  name: name$5,
  patterns: patterns$4,
  repository: repository$4,
  scopeName: scopeName$4,
  version: version$2
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors$1 = [
  "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScript.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version$1 = "https://github.com/microsoft/TypeScript-TmLanguage/commit/33d8371c344f0b54746586313a939f742f9bcd3a";
const name$4 = "typescript";
const scopeName$3 = "source.ts";
const patterns$3 = [
  {
    include: "#directives"
  },
  {
    include: "#statements"
  },
  {
    include: "#shebang"
  }
];
const repository$3 = {
  shebang: {
    name: "comment.line.shebang.ts",
    match: "\\A(#!).*(?=$)",
    captures: {
      "1": {
        name: "punctuation.definition.comment.ts"
      }
    }
  },
  statements: {
    patterns: [
      {
        include: "#declaration"
      },
      {
        include: "#control-statement"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#label"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  declaration: {
    patterns: [
      {
        include: "#decorator"
      },
      {
        include: "#var-expr"
      },
      {
        include: "#function-declaration"
      },
      {
        include: "#class-declaration"
      },
      {
        include: "#interface-declaration"
      },
      {
        include: "#enum-declaration"
      },
      {
        include: "#namespace-declaration"
      },
      {
        include: "#type-alias-declaration"
      },
      {
        include: "#import-equals-declaration"
      },
      {
        include: "#import-declaration"
      },
      {
        include: "#export-declaration"
      },
      {
        name: "storage.modifier.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "control-statement": {
    patterns: [
      {
        include: "#switch-statement"
      },
      {
        include: "#for-loop"
      },
      {
        name: "keyword.control.trycatch.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.control.loop.ts"
          },
          "2": {
            name: "entity.name.label.ts"
          }
        }
      },
      {
        name: "keyword.control.loop.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "0": {
            name: "keyword.control.flow.ts"
          }
        },
        end: "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "keyword.control.switch.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#if-statement"
      },
      {
        name: "keyword.control.conditional.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.with.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.control.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.other.debugger.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  label: {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
        beginCaptures: {
          "1": {
            name: "entity.name.label.ts"
          },
          "2": {
            name: "punctuation.separator.label.ts"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#decl-block"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.ts"
          },
          "2": {
            name: "punctuation.separator.label.ts"
          }
        }
      }
    ]
  },
  expression: {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  expressionWithoutIdentifiers: {
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#regex"
      },
      {
        include: "#comment"
      },
      {
        include: "#function-expression"
      },
      {
        include: "#class-expression"
      },
      {
        include: "#arrow-function"
      },
      {
        include: "#paren-expression-possibly-arrow"
      },
      {
        include: "#cast"
      },
      {
        include: "#ternary-expression"
      },
      {
        include: "#new-expr"
      },
      {
        include: "#instanceof-expr"
      },
      {
        include: "#object-literal"
      },
      {
        include: "#expression-operators"
      },
      {
        include: "#function-call"
      },
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#paren-expression"
      }
    ]
  },
  expressionPunctuations: {
    patterns: [
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-accessor"
      }
    ]
  },
  decorator: {
    name: "meta.decorator.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
    beginCaptures: {
      "0": {
        name: "punctuation.decorator.ts"
      }
    },
    end: "(?=\\s)",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "var-expr": {
    patterns: [
      {
        name: "meta.var.expr.ts",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.ts"
              },
              "2": {
                name: "storage.modifier.ts"
              },
              "3": {
                name: "storage.type.ts"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-variable"
          },
          {
            include: "#var-single-variable"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.ts"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-variable"
              },
              {
                include: "#var-single-variable"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      },
      {
        name: "meta.var.expr.ts",
        begin: "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.type.ts"
          }
        },
        end: "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
        patterns: [
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
            beginCaptures: {
              "1": {
                name: "keyword.control.export.ts"
              },
              "2": {
                name: "storage.modifier.ts"
              },
              "3": {
                name: "storage.type.ts"
              }
            },
            end: "(?=\\S)"
          },
          {
            include: "#destructuring-const"
          },
          {
            include: "#var-single-const"
          },
          {
            include: "#variable-initializer"
          },
          {
            include: "#comment"
          },
          {
            begin: "(,)\\s*((?!\\S)|(?=\\/\\/))",
            beginCaptures: {
              "1": {
                name: "punctuation.separator.comma.ts"
              }
            },
            end: "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
            patterns: [
              {
                include: "#single-line-comment-consuming-line-ending"
              },
              {
                include: "#comment"
              },
              {
                include: "#destructuring-const"
              },
              {
                include: "#var-single-const"
              },
              {
                include: "#punctuation-comma"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "var-single-variable": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts entity.name.function.ts"
          },
          "2": {
            name: "keyword.operator.definiteassignment.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.constant.ts"
          },
          "2": {
            name: "keyword.operator.definiteassignment.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.readwrite.ts"
          },
          "2": {
            name: "keyword.operator.definiteassignment.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-const": {
    patterns: [
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      },
      {
        name: "meta.var-single-variable.expr.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)",
        beginCaptures: {
          "1": {
            name: "meta.definition.variable.ts variable.other.constant.ts"
          }
        },
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#var-single-variable-type-annotation"
          }
        ]
      }
    ]
  },
  "var-single-variable-type-annotation": {
    patterns: [
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#comment"
      }
    ]
  },
  "destructuring-variable": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "destructuring-const": {
    patterns: [
      {
        name: "meta.object-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#object-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      },
      {
        name: "meta.array-binding-pattern-variable.ts",
        begin: "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
        end: "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#array-binding-pattern-const"
          },
          {
            include: "#type-annotation"
          },
          {
            include: "#comment"
          }
        ]
      }
    ]
  },
  "object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element"
          }
        ]
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#binding-element-const"
          }
        ]
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "object-binding-element-propertyName": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
    end: "(:)",
    endCaptures: {
      "0": {
        name: "punctuation.destructuring.ts"
      }
    },
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "variable.object.property.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern"
      },
      {
        include: "#array-binding-pattern"
      },
      {
        include: "#destructuring-variable-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "binding-element-const": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#object-binding-pattern-const"
      },
      {
        include: "#array-binding-pattern-const"
      },
      {
        include: "#destructuring-variable-rest-const"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-variable-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "meta.definition.variable.ts variable.other.readwrite.ts"
      }
    }
  },
  "destructuring-variable-rest-const": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "meta.definition.variable.ts variable.other.constant.ts"
      }
    }
  },
  "object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    patterns: [
      {
        include: "#object-binding-element"
      }
    ]
  },
  "object-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    patterns: [
      {
        include: "#object-binding-element-const"
      }
    ]
  },
  "array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    patterns: [
      {
        include: "#binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "array-binding-pattern-const": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    patterns: [
      {
        include: "#binding-element-const"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-name": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "entity.name.function.ts variable.language.this.ts"
          },
          "4": {
            name: "entity.name.function.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "4": {
            name: "variable.parameter.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      }
    ]
  },
  "destructuring-parameter": {
    patterns: [
      {
        name: "meta.parameter.object-binding-pattern.ts",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.ts"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.object.ts"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.object.ts"
          }
        },
        patterns: [
          {
            include: "#parameter-object-binding-element"
          }
        ]
      },
      {
        name: "meta.paramter.array-binding-pattern.ts",
        begin: "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.rest.ts"
          },
          "2": {
            name: "punctuation.definition.binding-pattern.array.ts"
          }
        },
        end: "\\]",
        endCaptures: {
          "0": {
            name: "punctuation.definition.binding-pattern.array.ts"
          }
        },
        patterns: [
          {
            include: "#parameter-binding-element"
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "parameter-object-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#object-binding-element-propertyName"
          },
          {
            include: "#parameter-binding-element"
          }
        ]
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "parameter-binding-element": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#regex"
      },
      {
        include: "#parameter-object-binding-pattern"
      },
      {
        include: "#parameter-array-binding-pattern"
      },
      {
        include: "#destructuring-parameter-rest"
      },
      {
        include: "#variable-initializer"
      }
    ]
  },
  "destructuring-parameter-rest": {
    match: "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
    captures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "variable.parameter.ts"
      }
    }
  },
  "parameter-object-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\{)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.object.ts"
      }
    },
    patterns: [
      {
        include: "#parameter-object-binding-element"
      }
    ]
  },
  "parameter-array-binding-pattern": {
    begin: "(?:(\\.\\.\\.)\\s*)?(\\[)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.rest.ts"
      },
      "2": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.binding-pattern.array.ts"
      }
    },
    patterns: [
      {
        include: "#parameter-binding-element"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "field-declaration": {
    name: "meta.field.declaration.ts",
    begin: "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      }
    },
    end: "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
    patterns: [
      {
        include: "#variable-initializer"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#comment"
      },
      {
        match: "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "meta.definition.property.ts entity.name.function.ts"
          },
          "2": {
            name: "keyword.operator.optional.ts"
          },
          "3": {
            name: "keyword.operator.definiteassignment.ts"
          }
        }
      },
      {
        name: "meta.definition.property.ts variable.object.property.ts",
        match: "\\#?[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.ts",
        match: "\\?"
      },
      {
        name: "keyword.operator.definiteassignment.ts",
        match: "\\!"
      }
    ]
  },
  "variable-initializer": {
    patterns: [
      {
        begin: "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        begin: "(?<!=|!)(=)(?!=)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "function-declaration": {
    name: "meta.function.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.async.ts"
      },
      "4": {
        name: "storage.type.function.ts"
      },
      "5": {
        name: "keyword.generator.asterisk.ts"
      },
      "6": {
        name: "meta.definition.function.ts entity.name.function.ts"
      }
    },
    end: "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-expression": {
    name: "meta.function.expression.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.ts"
      },
      "2": {
        name: "storage.type.function.ts"
      },
      "3": {
        name: "keyword.generator.asterisk.ts"
      },
      "4": {
        name: "meta.definition.function.ts entity.name.function.ts"
      }
    },
    end: "(?=;)|(?<=\\})",
    patterns: [
      {
        include: "#function-name"
      },
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#function-body"
      }
    ]
  },
  "function-name": {
    name: "meta.definition.function.ts entity.name.function.ts",
    match: "[_$[:alpha:]][_$[:alnum:]]*"
  },
  "function-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#function-parameters"
      },
      {
        include: "#return-type"
      },
      {
        include: "#type-function-return-type"
      },
      {
        include: "#decl-block"
      },
      {
        name: "keyword.generator.asterisk.ts",
        match: "\\*"
      }
    ]
  },
  "method-declaration": {
    patterns: [
      {
        name: "meta.method.declaration.ts",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.modifier.ts"
          },
          "4": {
            name: "storage.modifier.async.ts"
          },
          "5": {
            name: "storage.type.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.ts",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.modifier.ts"
          },
          "4": {
            name: "storage.modifier.async.ts"
          },
          "5": {
            name: "keyword.operator.new.ts"
          },
          "6": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.method.declaration.ts",
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "storage.modifier.ts"
          },
          "4": {
            name: "storage.modifier.async.ts"
          },
          "5": {
            name: "storage.type.property.ts"
          },
          "6": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#method-declaration-name"
          },
          {
            include: "#function-body"
          }
        ]
      }
    ]
  },
  "object-literal-method-declaration": {
    name: "meta.method.declaration.ts",
    begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.async.ts"
      },
      "2": {
        name: "storage.type.property.ts"
      },
      "3": {
        name: "keyword.generator.asterisk.ts"
      }
    },
    end: "(?=\\}|;|,)|(?<=\\})",
    patterns: [
      {
        include: "#method-declaration-name"
      },
      {
        include: "#function-body"
      },
      {
        begin: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          },
          "2": {
            name: "storage.type.property.ts"
          },
          "3": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        end: "(?=\\(|\\<)",
        patterns: [
          {
            include: "#method-declaration-name"
          }
        ]
      }
    ]
  },
  "method-declaration-name": {
    begin: "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
    end: "(?=\\(|\\<)",
    patterns: [
      {
        include: "#string"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#numeric-literal"
      },
      {
        name: "meta.definition.method.ts entity.name.function.ts",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      },
      {
        name: "keyword.operator.optional.ts",
        match: "\\?"
      }
    ]
  },
  "arrow-function": {
    patterns: [
      {
        name: "meta.arrow.ts",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
        captures: {
          "1": {
            name: "storage.modifier.async.ts"
          },
          "2": {
            name: "variable.parameter.ts"
          }
        }
      },
      {
        name: "meta.arrow.ts",
        begin: "(?x) (?:\n  (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n  (?=\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  )\n)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          }
        },
        end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          },
          {
            include: "#function-parameters"
          },
          {
            include: "#arrow-return-type"
          },
          {
            include: "#possibly-arrow-return-type"
          }
        ]
      },
      {
        name: "meta.arrow.ts",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.ts"
          }
        },
        end: "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#decl-block"
          },
          {
            include: "#expression"
          }
        ]
      }
    ]
  },
  "indexer-declaration": {
    name: "meta.indexer.declaration.ts",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      },
      "2": {
        name: "meta.brace.square.ts"
      },
      "3": {
        name: "variable.parameter.ts"
      }
    },
    end: "(\\])\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.ts"
      },
      "2": {
        name: "keyword.operator.optional.ts"
      }
    },
    patterns: [
      {
        include: "#type-annotation"
      }
    ]
  },
  "indexer-mapped-type-declaration": {
    name: "meta.indexer.mappedtype.declaration.ts",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.modifier.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "meta.brace.square.ts"
      },
      "4": {
        name: "entity.name.type.ts"
      },
      "5": {
        name: "keyword.operator.expression.in.ts"
      }
    },
    end: "(\\])([+-])?\\s*(\\?\\s*)?|$",
    endCaptures: {
      "1": {
        name: "meta.brace.square.ts"
      },
      "2": {
        name: "keyword.operator.type.modifier.ts"
      },
      "3": {
        name: "keyword.operator.optional.ts"
      }
    },
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        captures: {
          "1": {
            name: "keyword.control.as.ts"
          }
        }
      },
      {
        include: "#type"
      }
    ]
  },
  "function-parameters": {
    name: "meta.parameters.ts",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.parameters.begin.ts"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "punctuation.definition.parameters.end.ts"
      }
    },
    patterns: [
      {
        include: "#function-parameters-body"
      }
    ]
  },
  "function-parameters-body": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        include: "#parameter-name"
      },
      {
        include: "#parameter-type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.ts",
        match: ","
      }
    ]
  },
  "class-declaration": {
    name: "meta.class.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.ts"
      },
      "4": {
        name: "storage.type.class.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-expression": {
    name: "meta.class.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      },
      "2": {
        name: "storage.type.class.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#class-declaration-or-expression-patterns"
      }
    ]
  },
  "class-declaration-or-expression-patterns": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.class.ts"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "interface-declaration": {
    name: "meta.interface.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.ts"
      },
      "4": {
        name: "storage.type.interface.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        match: "[_$[:alpha:]][_$[:alnum:]]*",
        captures: {
          "0": {
            name: "entity.name.type.interface.ts"
          }
        }
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#class-or-interface-body"
      }
    ]
  },
  "class-or-interface-heritage": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "storage.modifier.ts"
      }
    },
    end: "(?=\\{)",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#class-or-interface-heritage"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
        captures: {
          "1": {
            name: "entity.name.type.module.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          }
        }
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "entity.other.inherited-class.ts"
          }
        }
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "class-or-interface-body": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#decorator"
      },
      {
        begin: "(?<=:)\\s*",
        end: "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#string"
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        include: "#access-modifier"
      },
      {
        include: "#property-accessor"
      },
      {
        include: "#async-modifier"
      },
      {
        include: "#after-operator-block-as-object-literal"
      },
      {
        include: "#decl-block"
      },
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      }
    ]
  },
  "access-modifier": {
    name: "storage.modifier.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "property-accessor": {
    name: "storage.type.property.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "async-modifier": {
    name: "storage.modifier.async.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "enum-declaration": {
    name: "meta.enum.declaration.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.modifier.ts"
      },
      "4": {
        name: "storage.type.enum.ts"
      },
      "5": {
        name: "entity.name.type.enum.ts"
      }
    },
    end: "(?<=\\})",
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.ts"
          }
        },
        end: "\\}",
        endCaptures: {
          "0": {
            name: "punctuation.definition.block.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "([_$[:alpha:]][_$[:alnum:]]*)",
            beginCaptures: {
              "0": {
                name: "variable.other.enummember.ts"
              }
            },
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            begin: "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
            end: "(?=,|\\}|$)",
            patterns: [
              {
                include: "#string"
              },
              {
                include: "#array-literal"
              },
              {
                include: "#comment"
              },
              {
                include: "#variable-initializer"
              }
            ]
          },
          {
            include: "#punctuation-comma"
          }
        ]
      }
    ]
  },
  "namespace-declaration": {
    name: "meta.namespace.declaration.ts",
    begin: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.type.namespace.ts"
      }
    },
    end: "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        name: "entity.name.type.module.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        include: "#decl-block"
      }
    ]
  },
  "type-alias-declaration": {
    name: "meta.type.declaration.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "storage.type.type.ts"
      },
      "4": {
        name: "entity.name.type.alias.ts"
      }
    },
    end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-parameters"
      },
      {
        begin: "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          },
          "2": {
            name: "keyword.control.intrinsic.ts"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        begin: "(=)\\s*",
        beginCaptures: {
          "1": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "import-equals-declaration": {
    patterns: [
      {
        name: "meta.import-equals.external.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "keyword.control.import.ts"
          },
          "4": {
            name: "keyword.control.type.ts"
          },
          "5": {
            name: "variable.other.readwrite.alias.ts"
          },
          "6": {
            name: "keyword.operator.assignment.ts"
          },
          "7": {
            name: "keyword.control.require.ts"
          },
          "8": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.import-equals.internal.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "keyword.control.import.ts"
          },
          "4": {
            name: "keyword.control.type.ts"
          },
          "5": {
            name: "variable.other.readwrite.alias.ts"
          },
          "6": {
            name: "keyword.operator.assignment.ts"
          }
        },
        end: "(?=;|$|^)",
        patterns: [
          {
            include: "#single-line-comment-consuming-line-ending"
          },
          {
            include: "#comment"
          },
          {
            match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
            captures: {
              "1": {
                name: "entity.name.type.module.ts"
              },
              "2": {
                name: "punctuation.accessor.ts"
              },
              "3": {
                name: "punctuation.accessor.optional.ts"
              }
            }
          },
          {
            name: "variable.other.readwrite.ts",
            match: "([_$[:alpha:]][_$[:alnum:]]*)"
          }
        ]
      }
    ]
  },
  "import-declaration": {
    name: "meta.import.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.control.export.ts"
      },
      "2": {
        name: "storage.modifier.ts"
      },
      "3": {
        name: "keyword.control.import.ts"
      },
      "4": {
        name: "keyword.control.type.ts"
      }
    },
    end: "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
    patterns: [
      {
        include: "#single-line-comment-consuming-line-ending"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        begin: `(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*["'])`,
        end: "\\bfrom\\b",
        endCaptures: {
          "0": {
            name: "keyword.control.from.ts"
          }
        },
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      },
      {
        include: "#import-export-declaration"
      }
    ]
  },
  "export-declaration": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "keyword.control.as.ts"
          },
          "3": {
            name: "storage.type.namespace.ts"
          },
          "4": {
            name: "entity.name.type.module.ts"
          }
        }
      },
      {
        name: "meta.export.default.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "keyword.control.type.ts"
          },
          "3": {
            name: "keyword.operator.assignment.ts"
          },
          "4": {
            name: "keyword.control.default.ts"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#interface-declaration"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.export.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b)))",
        beginCaptures: {
          "1": {
            name: "keyword.control.export.ts"
          },
          "2": {
            name: "keyword.control.type.ts"
          }
        },
        end: "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
        patterns: [
          {
            include: "#import-export-declaration"
          }
        ]
      }
    ]
  },
  "import-export-declaration": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#import-export-block"
      },
      {
        name: "keyword.control.from.ts",
        match: "\\bfrom\\b"
      },
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-block": {
    name: "meta.block.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#import-export-clause"
      }
    ]
  },
  "import-export-clause": {
    patterns: [
      {
        include: "#comment"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
        captures: {
          "1": {
            name: "keyword.control.default.ts"
          },
          "2": {
            name: "constant.language.import-export-all.ts"
          },
          "3": {
            name: "variable.other.readwrite.ts"
          },
          "4": {
            name: "keyword.control.as.ts"
          },
          "5": {
            name: "keyword.control.default.ts"
          },
          "6": {
            name: "variable.other.readwrite.alias.ts"
          }
        }
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "constant.language.import-export-all.ts",
        match: "\\*"
      },
      {
        name: "keyword.control.default.ts",
        match: "\\b(default)\\b"
      },
      {
        name: "variable.other.readwrite.alias.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "switch-statement": {
    name: "switch-statement.expr.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "switch-expression.expr.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
        beginCaptures: {
          "1": {
            name: "keyword.control.switch.ts"
          },
          "2": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "switch-block.expr.ts",
        begin: "\\{",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.block.ts"
          }
        },
        end: "(?=\\})",
        patterns: [
          {
            name: "case-clause.expr.ts",
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
            beginCaptures: {
              "1": {
                name: "keyword.control.switch.ts"
              }
            },
            end: "(?=:)",
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            begin: "(:)\\s*(\\{)",
            beginCaptures: {
              "1": {
                name: "case-clause.expr.ts punctuation.definition.section.case-statement.ts"
              },
              "2": {
                name: "meta.block.ts punctuation.definition.block.ts"
              }
            },
            end: "\\}",
            endCaptures: {
              "0": {
                name: "meta.block.ts punctuation.definition.block.ts"
              }
            },
            contentName: "meta.block.ts",
            patterns: [
              {
                include: "#statements"
              }
            ]
          },
          {
            match: "(:)",
            captures: {
              "0": {
                name: "case-clause.expr.ts punctuation.definition.section.case-statement.ts"
              }
            }
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "for-loop": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
    beginCaptures: {
      "0": {
        name: "keyword.control.loop.ts"
      }
    },
    end: "(?<=\\))",
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "keyword.control.loop.ts",
        match: "await"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#var-expr"
          },
          {
            include: "#expression"
          },
          {
            include: "#punctuation-semicolon"
          }
        ]
      }
    ]
  },
  "if-statement": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
        end: "(?=;|$|\\})",
        patterns: [
          {
            include: "#comment"
          },
          {
            begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
            beginCaptures: {
              "1": {
                name: "keyword.control.conditional.ts"
              },
              "2": {
                name: "meta.brace.round.ts"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.ts"
              }
            },
            patterns: [
              {
                include: "#expression"
              }
            ]
          },
          {
            name: "string.regexp.ts",
            begin: "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
            beginCaptures: {
              "0": {
                name: "punctuation.definition.string.begin.ts"
              }
            },
            end: "(/)([dgimsuy]*)",
            endCaptures: {
              "1": {
                name: "punctuation.definition.string.end.ts"
              },
              "2": {
                name: "keyword.other.ts"
              }
            },
            patterns: [
              {
                include: "#regexp"
              }
            ]
          },
          {
            include: "#statements"
          }
        ]
      }
    ]
  },
  "decl-block": {
    name: "meta.block.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#statements"
      }
    ]
  },
  "after-operator-block-as-object-literal": {
    name: "meta.objectliteral.ts",
    begin: "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-literal": {
    name: "meta.objectliteral.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#object-member"
      }
    ]
  },
  "object-member": {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#object-literal-method-declaration"
      },
      {
        name: "meta.object.member.ts meta.object-literal.key.ts",
        begin: "(?=\\[)",
        end: "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#array-literal"
          }
        ]
      },
      {
        name: "meta.object.member.ts meta.object-literal.key.ts",
        begin: "(?=[\\'\\\"\\`])",
        end: "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as)\\s+))))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#string"
          }
        ]
      },
      {
        name: "meta.object.member.ts meta.object-literal.key.ts",
        begin: "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)))",
        end: "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#numeric-literal"
          }
        ]
      },
      {
        name: "meta.method.declaration.ts",
        begin: "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
        end: "(?=\\}|;|,)|(?<=\\})",
        patterns: [
          {
            include: "#function-body"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        match: "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.ts"
          },
          "1": {
            name: "constant.numeric.decimal.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        match: "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "0": {
            name: "meta.object-literal.key.ts"
          },
          "1": {
            name: "entity.name.function.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        match: "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
        captures: {
          "0": {
            name: "meta.object-literal.key.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.ts"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
        captures: {
          "1": {
            name: "variable.other.readwrite.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
        captures: {
          "1": {
            name: "keyword.control.as.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        name: "meta.object.member.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.ts"
          }
        },
        end: "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        begin: "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
        end: "(?=,|\\}|$|\\/\\/|\\/\\*)",
        patterns: [
          {
            include: "#expression"
          }
        ]
      },
      {
        name: "meta.object.member.ts",
        begin: ":",
        beginCaptures: {
          "0": {
            name: "meta.object-literal.key.ts punctuation.separator.key-value.ts"
          }
        },
        end: "(?=,|\\})",
        patterns: [
          {
            begin: "(?<=:)\\s*(async)?(?=\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.ts"
              }
            },
            end: "(?<=\\))",
            patterns: [
              {
                include: "#type-parameters"
              },
              {
                begin: "\\(",
                beginCaptures: {
                  "0": {
                    name: "meta.brace.round.ts"
                  }
                },
                end: "\\)",
                endCaptures: {
                  "0": {
                    name: "meta.brace.round.ts"
                  }
                },
                patterns: [
                  {
                    include: "#expression-inside-possibly-arrow-parens"
                  }
                ]
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.ts"
              },
              "2": {
                name: "meta.brace.round.ts"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.ts"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            begin: "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
            beginCaptures: {
              "1": {
                name: "storage.modifier.async.ts"
              }
            },
            end: "(?<=\\>)",
            patterns: [
              {
                include: "#type-parameters"
              }
            ]
          },
          {
            begin: "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
            beginCaptures: {
              "1": {
                name: "meta.brace.round.ts"
              }
            },
            end: "\\)",
            endCaptures: {
              "0": {
                name: "meta.brace.round.ts"
              }
            },
            patterns: [
              {
                include: "#expression-inside-possibly-arrow-parens"
              }
            ]
          },
          {
            include: "#possibly-arrow-return-type"
          },
          {
            include: "#expression"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "ternary-expression": {
    begin: "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.ternary.ts"
      }
    },
    end: "\\s*(:)",
    endCaptures: {
      "1": {
        name: "keyword.operator.ternary.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "function-call": {
    patterns: [
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        end: "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
        patterns: [
          {
            name: "meta.function-call.ts",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          },
          {
            include: "#paren-expression"
          }
        ]
      },
      {
        begin: "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        end: "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
        patterns: [
          {
            name: "meta.function-call.ts",
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*[\\{\\[\\(]\\s*$))",
            patterns: [
              {
                include: "#function-call-target"
              }
            ]
          },
          {
            include: "#comment"
          },
          {
            include: "#function-call-optionals"
          },
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "function-call-target": {
    patterns: [
      {
        include: "#support-function-call-identifiers"
      },
      {
        name: "entity.name.function.ts",
        match: "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
      }
    ]
  },
  "function-call-optionals": {
    patterns: [
      {
        name: "meta.function-call.ts punctuation.accessor.optional.ts",
        match: "\\?\\."
      },
      {
        name: "meta.function-call.ts keyword.operator.definiteassignment.ts",
        match: "\\!"
      }
    ]
  },
  "support-function-call-identifiers": {
    patterns: [
      {
        include: "#literal"
      },
      {
        include: "#support-objects"
      },
      {
        include: "#object-identifiers"
      },
      {
        include: "#punctuation-accessor"
      },
      {
        name: "keyword.operator.expression.import.ts",
        match: "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
      }
    ]
  },
  "new-expr": {
    name: "new.expr.ts",
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.new.ts"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  "instanceof-expr": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "1": {
        name: "keyword.operator.expression.instanceof.ts"
      }
    },
    end: "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
    patterns: [
      {
        include: "#type"
      }
    ]
  },
  "paren-expression-possibly-arrow": {
    patterns: [
      {
        begin: "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        begin: "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<))\\s*$)",
        beginCaptures: {
          "1": {
            name: "storage.modifier.async.ts"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#paren-expression-possibly-arrow-with-typeparameters"
          }
        ]
      },
      {
        include: "#possibly-arrow-return-type"
      }
    ]
  },
  "paren-expression-possibly-arrow-with-typeparameters": {
    patterns: [
      {
        include: "#type-parameters"
      },
      {
        begin: "\\(",
        beginCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "meta.brace.round.ts"
          }
        },
        patterns: [
          {
            include: "#expression-inside-possibly-arrow-parens"
          }
        ]
      }
    ]
  },
  "expression-inside-possibly-arrow-parens": {
    patterns: [
      {
        include: "#expressionWithoutIdentifiers"
      },
      {
        include: "#comment"
      },
      {
        include: "#string"
      },
      {
        include: "#decorator"
      },
      {
        include: "#destructuring-parameter"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n)))",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "entity.name.function.ts variable.language.this.ts"
          },
          "4": {
            name: "entity.name.function.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "4": {
            name: "variable.parameter.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        include: "#variable-initializer"
      },
      {
        name: "punctuation.separator.parameter.ts",
        match: ","
      },
      {
        include: "#identifiers"
      },
      {
        include: "#expressionPunctuations"
      }
    ]
  },
  "paren-expression": {
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  cast: {
    patterns: [
      {
        name: "cast.expr.ts",
        match: "\\s*(<)\\s*(const)\\s*(>)",
        captures: {
          "1": {
            name: "meta.brace.angle.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          },
          "3": {
            name: "meta.brace.angle.ts"
          }
        }
      },
      {
        name: "cast.expr.ts",
        begin: "(?:(?<!\\+\\+|--)(?<=^return|[^\\._$[:alnum:]]return|^throw|[^\\._$[:alnum:]]throw|^yield|[^\\._$[:alnum:]]yield|^await|[^\\._$[:alnum:]]await|^default|[^\\._$[:alnum:]]default|[=(,:>*?\\&\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(<)(?!<?\\=)(?!\\s*$)",
        beginCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        end: "(\\>)",
        endCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "cast.expr.ts",
        begin: "(?:(?<=^))\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*>)",
        beginCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        end: "(\\>)",
        endCaptures: {
          "1": {
            name: "meta.brace.angle.ts"
          }
        },
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "expression-operators": {
    patterns: [
      {
        name: "keyword.control.flow.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
        beginCaptures: {
          "1": {
            name: "keyword.control.flow.ts"
          }
        },
        end: "\\*",
        endCaptures: {
          "0": {
            name: "keyword.generator.asterisk.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
        captures: {
          "1": {
            name: "keyword.control.flow.ts"
          },
          "2": {
            name: "keyword.generator.asterisk.ts"
          }
        }
      },
      {
        name: "keyword.operator.expression.delete.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.in.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.of.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
      },
      {
        name: "keyword.operator.expression.instanceof.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.new.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#typeof-operator"
      },
      {
        name: "keyword.operator.expression.void.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
        captures: {
          "1": {
            name: "keyword.control.as.ts"
          },
          "2": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
        beginCaptures: {
          "1": {
            name: "keyword.control.as.ts"
          }
        },
        end: "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+)|(\\s+\\<))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "keyword.operator.spread.ts",
        match: "\\.\\.\\."
      },
      {
        name: "keyword.operator.assignment.compound.ts",
        match: "\\*=|(?<!\\()/=|%=|\\+=|\\-="
      },
      {
        name: "keyword.operator.assignment.compound.bitwise.ts",
        match: "\\&=|\\^=|<<=|>>=|>>>=|\\|="
      },
      {
        name: "keyword.operator.bitwise.shift.ts",
        match: "<<|>>>|>>"
      },
      {
        name: "keyword.operator.comparison.ts",
        match: "===|!==|==|!="
      },
      {
        name: "keyword.operator.relational.ts",
        match: "<=|>=|<>|<|>"
      },
      {
        match: "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.logical.ts"
          },
          "2": {
            name: "keyword.operator.assignment.compound.ts"
          },
          "3": {
            name: "keyword.operator.arithmetic.ts"
          }
        }
      },
      {
        name: "keyword.operator.logical.ts",
        match: "\\!|&&|\\|\\||\\?\\?"
      },
      {
        name: "keyword.operator.bitwise.ts",
        match: "\\&|~|\\^|\\|"
      },
      {
        name: "keyword.operator.assignment.ts",
        match: "\\="
      },
      {
        name: "keyword.operator.decrement.ts",
        match: "--"
      },
      {
        name: "keyword.operator.increment.ts",
        match: "\\+\\+"
      },
      {
        name: "keyword.operator.arithmetic.ts",
        match: "%|\\*|/|-|\\+"
      },
      {
        begin: "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
        end: "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
        endCaptures: {
          "1": {
            name: "keyword.operator.assignment.compound.ts"
          },
          "2": {
            name: "keyword.operator.arithmetic.ts"
          }
        },
        patterns: [
          {
            include: "#comment"
          }
        ]
      },
      {
        match: "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
        captures: {
          "1": {
            name: "keyword.operator.assignment.compound.ts"
          },
          "2": {
            name: "keyword.operator.arithmetic.ts"
          }
        }
      }
    ]
  },
  "typeof-operator": {
    begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
    beginCaptures: {
      "0": {
        name: "keyword.operator.expression.typeof.ts"
      }
    },
    end: "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
    patterns: [
      {
        include: "#expression"
      }
    ]
  },
  literal: {
    patterns: [
      {
        include: "#numeric-literal"
      },
      {
        include: "#boolean-literal"
      },
      {
        include: "#null-literal"
      },
      {
        include: "#undefined-literal"
      },
      {
        include: "#numericConstant-literal"
      },
      {
        include: "#array-literal"
      },
      {
        include: "#this-literal"
      },
      {
        include: "#super-literal"
      }
    ]
  },
  "array-literal": {
    name: "meta.array.literal.ts",
    begin: "\\s*(\\[)",
    beginCaptures: {
      "1": {
        name: "meta.brace.square.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "numeric-literal": {
    patterns: [
      {
        name: "constant.numeric.hex.ts",
        match: "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      },
      {
        name: "constant.numeric.binary.ts",
        match: "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      },
      {
        name: "constant.numeric.octal.ts",
        match: "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
        captures: {
          "1": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      },
      {
        match: "(?x)\n(?<!\\$)(?:\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # 1.E+3\n  (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|             # .1E+3\n  (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)|                 # 1E+3\n  (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)|                      # 1.1\n  (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)|                                  # 1.\n  (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)|                                  # .1\n  (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.))                                 # 1\n)(?!\\$)",
        captures: {
          "0": {
            name: "constant.numeric.decimal.ts"
          },
          "1": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "2": {
            name: "storage.type.numeric.bigint.ts"
          },
          "3": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "4": {
            name: "storage.type.numeric.bigint.ts"
          },
          "5": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "6": {
            name: "storage.type.numeric.bigint.ts"
          },
          "7": {
            name: "storage.type.numeric.bigint.ts"
          },
          "8": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "9": {
            name: "storage.type.numeric.bigint.ts"
          },
          "10": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "11": {
            name: "storage.type.numeric.bigint.ts"
          },
          "12": {
            name: "meta.delimiter.decimal.period.ts"
          },
          "13": {
            name: "storage.type.numeric.bigint.ts"
          },
          "14": {
            name: "storage.type.numeric.bigint.ts"
          }
        }
      }
    ]
  },
  "boolean-literal": {
    patterns: [
      {
        name: "constant.language.boolean.true.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.boolean.false.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "null-literal": {
    name: "constant.language.null.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "this-literal": {
    name: "variable.language.this.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
  },
  "super-literal": {
    name: "variable.language.super.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
  },
  "undefined-literal": {
    name: "constant.language.undefined.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "numericConstant-literal": {
    patterns: [
      {
        name: "constant.language.nan.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "constant.language.infinity.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "support-objects": {
    patterns: [
      {
        name: "variable.language.arguments.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
      },
      {
        name: "support.class.builtin.ts",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
      },
      {
        name: "support.class.error.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
      },
      {
        name: "support.class.promise.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
      },
      {
        name: "support.function.ts",
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
      },
      {
        match: "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n  |\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.math.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.function.math.ts"
          },
          "5": {
            name: "support.constant.property.math.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.constant.json.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.function.json.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.control.import.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.variable.property.importmeta.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
        captures: {
          "1": {
            name: "keyword.operator.new.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "support.variable.property.target.ts"
          }
        }
      },
      {
        match: "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n  (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n  |\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "support.variable.property.ts"
          },
          "4": {
            name: "support.constant.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
        captures: {
          "1": {
            name: "support.type.object.module.ts"
          },
          "2": {
            name: "support.type.object.module.ts"
          },
          "3": {
            name: "punctuation.accessor.ts"
          },
          "4": {
            name: "punctuation.accessor.optional.ts"
          },
          "5": {
            name: "support.type.object.module.ts"
          }
        }
      }
    ]
  },
  identifiers: {
    patterns: [
      {
        include: "#object-identifiers"
      },
      {
        match: "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n  ((async\\s+)?(\n    (function\\s*[(<*]) |\n    (function\\s+) |\n    ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n  )) |\n  ((async\\s*)?(\n    ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n    # sure shot arrow functions even if => is on new line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n  [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n  (\n    ([)]\\s*:) |                                                                                       # ():\n    ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:)                                                                  # [(]param: | [(]...param:\n  )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n  (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?                                                                                 # typeparameters\n  \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\)   # parameters\n  (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)?                                                                        # return type\n  \\s*=>                                                                                               # arrow operator\n)\n  ))\n))",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "entity.name.function.ts"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "variable.other.constant.property.ts"
          }
        }
      },
      {
        match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "variable.other.property.ts"
          }
        }
      },
      {
        name: "variable.other.constant.ts",
        match: "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
      },
      {
        name: "variable.other.readwrite.ts",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "object-identifiers": {
    patterns: [
      {
        name: "support.class.ts",
        match: "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
      },
      {
        match: "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n  (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n  (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "punctuation.accessor.ts"
          },
          "2": {
            name: "punctuation.accessor.optional.ts"
          },
          "3": {
            name: "variable.other.constant.object.property.ts"
          },
          "4": {
            name: "variable.other.object.property.ts"
          }
        }
      },
      {
        match: "(?x)(?:\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\n  ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
        captures: {
          "1": {
            name: "variable.other.constant.object.ts"
          },
          "2": {
            name: "variable.other.object.ts"
          }
        }
      }
    ]
  },
  "type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.ts",
        begin: "(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        name: "meta.type.annotation.ts",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "parameter-type-annotation": {
    patterns: [
      {
        name: "meta.type.annotation.ts",
        begin: "(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?=[,)])|(?==[^>])",
        patterns: [
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "return-type": {
    patterns: [
      {
        name: "meta.return.type.ts",
        begin: "(?<=\\))\\s*(:)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])(?=$|^|[{};,]|//)",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      },
      {
        name: "meta.return.type.ts",
        begin: "(?<=\\))\\s*(:)",
        beginCaptures: {
          "1": {
            name: "keyword.operator.type.annotation.ts"
          }
        },
        end: "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#return-type-core"
          }
        ]
      }
    ]
  },
  "return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<=[:|&])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "arrow-return-type": {
    name: "meta.return.type.arrow.ts",
    begin: "(?<=\\))\\s*(:)",
    beginCaptures: {
      "1": {
        name: "keyword.operator.type.annotation.ts"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "possibly-arrow-return-type": {
    begin: "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
    beginCaptures: {
      "1": {
        name: "meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"
      }
    },
    end: "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
    contentName: "meta.arrow.ts meta.return.type.arrow.ts",
    patterns: [
      {
        include: "#arrow-return-type-body"
      }
    ]
  },
  "arrow-return-type-body": {
    patterns: [
      {
        begin: "(?<=[:])(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-parameters": {
    name: "meta.type.parameters.ts",
    begin: "(<)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.begin.ts"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.typeparameters.end.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        name: "storage.modifier.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      },
      {
        name: "keyword.operator.assignment.ts",
        match: "(=)(?!>)"
      }
    ]
  },
  "type-arguments": {
    name: "meta.type.parameters.ts",
    begin: "\\<",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.begin.ts"
      }
    },
    end: "\\>",
    endCaptures: {
      "0": {
        name: "punctuation.definition.typeparameters.end.ts"
      }
    },
    patterns: [
      {
        include: "#type-arguments-body"
      }
    ]
  },
  "type-arguments-body": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "0": {
            name: "keyword.operator.type.ts"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  type: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#type-string"
      },
      {
        include: "#numeric-literal"
      },
      {
        include: "#type-primitive"
      },
      {
        include: "#type-builtin-literals"
      },
      {
        include: "#type-parameters"
      },
      {
        include: "#type-tuple"
      },
      {
        include: "#type-object"
      },
      {
        include: "#type-conditional"
      },
      {
        include: "#type-operators"
      },
      {
        include: "#type-fn-type-parameters"
      },
      {
        include: "#type-paren-or-function-parameters"
      },
      {
        include: "#type-function-return-type"
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          }
        }
      },
      {
        include: "#type-name"
      }
    ]
  },
  "type-primitive": {
    name: "support.type.primitive.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-builtin-literals": {
    name: "support.type.builtin.ts",
    match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
  },
  "type-tuple": {
    name: "meta.type.tuple.ts",
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "meta.brace.square.ts"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "meta.brace.square.ts"
      }
    },
    patterns: [
      {
        name: "keyword.operator.rest.ts",
        match: "\\.\\.\\."
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
        captures: {
          "1": {
            name: "entity.name.label.ts"
          },
          "2": {
            name: "keyword.operator.optional.ts"
          },
          "3": {
            name: "punctuation.separator.label.ts"
          }
        }
      },
      {
        include: "#type"
      },
      {
        include: "#punctuation-comma"
      }
    ]
  },
  "type-object": {
    name: "meta.object.type.ts",
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.block.ts"
      }
    },
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#method-declaration"
      },
      {
        include: "#indexer-declaration"
      },
      {
        include: "#indexer-mapped-type-declaration"
      },
      {
        include: "#field-declaration"
      },
      {
        include: "#type-annotation"
      },
      {
        begin: "\\.\\.\\.",
        beginCaptures: {
          "0": {
            name: "keyword.operator.spread.ts"
          }
        },
        end: "(?=\\}|;|,|$)|(?<=\\})",
        patterns: [
          {
            include: "#type"
          }
        ]
      },
      {
        include: "#punctuation-comma"
      },
      {
        include: "#punctuation-semicolon"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-conditional": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          }
        },
        end: "(?<=:)",
        patterns: [
          {
            begin: "\\?",
            beginCaptures: {
              "0": {
                name: "keyword.operator.ternary.ts"
              }
            },
            end: ":",
            endCaptures: {
              "0": {
                name: "keyword.operator.ternary.ts"
              }
            },
            patterns: [
              {
                include: "#type"
              }
            ]
          },
          {
            include: "#type"
          }
        ]
      }
    ]
  },
  "type-paren-or-function-parameters": {
    name: "meta.type.paren.cover.ts",
    begin: "\\(",
    beginCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    end: "\\)",
    endCaptures: {
      "0": {
        name: "meta.brace.round.ts"
      }
    },
    patterns: [
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n  (<) |\n  ([(]\\s*(\n    ([)]) |\n    (\\.\\.\\.) |\n    ([_$[:alnum:]]+\\s*(\n      ([:,?=])|\n      ([)]\\s*=>)\n    ))\n  ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "entity.name.function.ts variable.language.this.ts"
          },
          "4": {
            name: "entity.name.function.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        match: "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
        captures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.operator.rest.ts"
          },
          "3": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "4": {
            name: "variable.parameter.ts"
          },
          "5": {
            name: "keyword.operator.optional.ts"
          }
        }
      },
      {
        include: "#type-annotation"
      },
      {
        name: "punctuation.separator.parameter.ts",
        match: ","
      },
      {
        include: "#type"
      }
    ]
  },
  "type-fn-type-parameters": {
    patterns: [
      {
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
        beginCaptures: {
          "1": {
            name: "meta.type.constructor.ts storage.modifier.ts"
          },
          "2": {
            name: "meta.type.constructor.ts keyword.control.new.ts"
          }
        },
        end: "(?<=>)",
        patterns: [
          {
            include: "#comment"
          },
          {
            include: "#type-parameters"
          }
        ]
      },
      {
        name: "meta.type.constructor.ts",
        begin: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
        beginCaptures: {
          "1": {
            name: "storage.modifier.ts"
          },
          "2": {
            name: "keyword.control.new.ts"
          }
        },
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      },
      {
        name: "meta.type.function.ts",
        begin: "(?x)(\n  (?=\n    [(]\\s*(\n      ([)]) |\n      (\\.\\.\\.) |\n      ([_$[:alnum:]]+\\s*(\n        ([:,?=])|\n        ([)]\\s*=>)\n      ))\n    )\n  )\n)",
        end: "(?<=\\))",
        patterns: [
          {
            include: "#function-parameters"
          }
        ]
      }
    ]
  },
  "type-function-return-type": {
    patterns: [
      {
        name: "meta.type.function.return.ts",
        begin: "(=>)(?=\\s*\\S)",
        beginCaptures: {
          "1": {
            name: "storage.type.function.arrow.ts"
          }
        },
        end: "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      },
      {
        name: "meta.type.function.return.ts",
        begin: "=>",
        beginCaptures: {
          "0": {
            name: "storage.type.function.arrow.ts"
          }
        },
        end: "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
        patterns: [
          {
            include: "#type-function-return-type-core"
          }
        ]
      }
    ]
  },
  "type-function-return-type-core": {
    patterns: [
      {
        include: "#comment"
      },
      {
        begin: "(?<==>)(?=\\s*\\{)",
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        include: "#type-predicate-operator"
      },
      {
        include: "#type"
      }
    ]
  },
  "type-operators": {
    patterns: [
      {
        include: "#typeof-operator"
      },
      {
        begin: "([&|])(?=\\s*\\{)",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.ts"
          }
        },
        end: "(?<=\\})",
        patterns: [
          {
            include: "#type-object"
          }
        ]
      },
      {
        begin: "[&|]",
        beginCaptures: {
          "0": {
            name: "keyword.operator.type.ts"
          }
        },
        end: "(?=\\S)"
      },
      {
        name: "keyword.operator.expression.keyof.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.ternary.ts",
        match: "(\\?|\\:)"
      },
      {
        name: "keyword.operator.expression.infer.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))infer(?=\\s+[_$[:alpha:]])"
      },
      {
        name: "keyword.operator.expression.import.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
      }
    ]
  },
  "type-predicate-operator": {
    patterns: [
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.ts"
          },
          "2": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "3": {
            name: "variable.parameter.ts"
          },
          "4": {
            name: "keyword.operator.expression.is.ts"
          }
        }
      },
      {
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
        captures: {
          "1": {
            name: "keyword.operator.type.asserts.ts"
          },
          "2": {
            name: "variable.parameter.ts variable.language.this.ts"
          },
          "3": {
            name: "variable.parameter.ts"
          }
        }
      },
      {
        name: "keyword.operator.type.asserts.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      },
      {
        name: "keyword.operator.expression.is.ts",
        match: "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
      }
    ]
  },
  "type-name": {
    patterns: [
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
        captures: {
          "1": {
            name: "entity.name.type.module.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          },
          "4": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"
          }
        },
        contentName: "meta.type.parameters.ts",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        begin: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
        beginCaptures: {
          "1": {
            name: "entity.name.type.ts"
          },
          "2": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"
          }
        },
        end: "(>)",
        endCaptures: {
          "1": {
            name: "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"
          }
        },
        contentName: "meta.type.parameters.ts",
        patterns: [
          {
            include: "#type-arguments-body"
          }
        ]
      },
      {
        match: "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
        captures: {
          "1": {
            name: "entity.name.type.module.ts"
          },
          "2": {
            name: "punctuation.accessor.ts"
          },
          "3": {
            name: "punctuation.accessor.optional.ts"
          }
        }
      },
      {
        name: "entity.name.type.ts",
        match: "[_$[:alpha:]][_$[:alnum:]]*"
      }
    ]
  },
  "punctuation-comma": {
    name: "punctuation.separator.comma.ts",
    match: ","
  },
  "punctuation-semicolon": {
    name: "punctuation.terminator.statement.ts",
    match: ";"
  },
  "punctuation-accessor": {
    match: "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
    captures: {
      "1": {
        name: "punctuation.accessor.ts"
      },
      "2": {
        name: "punctuation.accessor.optional.ts"
      }
    }
  },
  string: {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template"
      }
    ]
  },
  "qstring-double": {
    name: "string.quoted.double.ts",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.ts"
      }
    },
    end: '(")|((?:[^\\\\\\n])$)',
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.ts"
      },
      "2": {
        name: "invalid.illegal.newline.ts"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "qstring-single": {
    name: "string.quoted.single.ts",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.ts"
      }
    },
    end: "(\\')|((?:[^\\\\\\n])$)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.string.end.ts"
      },
      "2": {
        name: "invalid.illegal.newline.ts"
      }
    },
    patterns: [
      {
        include: "#string-character-escape"
      }
    ]
  },
  "string-character-escape": {
    name: "constant.character.escape.ts",
    match: "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
  },
  template: {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.ts"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.ts"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.ts"
          }
        },
        patterns: [
          {
            include: "#template-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-call": {
    patterns: [
      {
        name: "string.template.ts",
        begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
        end: "(?=`)",
        patterns: [
          {
            begin: "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
            end: "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
            patterns: [
              {
                include: "#support-function-call-identifiers"
              },
              {
                name: "entity.name.function.tagged-template.ts",
                match: "([_$[:alpha:]][_$[:alnum:]]*)"
              }
            ]
          },
          {
            include: "#type-arguments"
          }
        ]
      },
      {
        name: "string.template.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.ts"
          }
        },
        end: "(?=`)",
        patterns: [
          {
            include: "#type-arguments"
          }
        ]
      }
    ]
  },
  "template-substitution-element": {
    name: "meta.template.expression.ts",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.ts"
      }
    },
    patterns: [
      {
        include: "#expression"
      }
    ],
    contentName: "meta.embedded.line.ts"
  },
  "type-string": {
    patterns: [
      {
        include: "#qstring-single"
      },
      {
        include: "#qstring-double"
      },
      {
        include: "#template-type"
      }
    ]
  },
  "template-type": {
    patterns: [
      {
        include: "#template-call"
      },
      {
        name: "string.template.ts",
        begin: "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
        beginCaptures: {
          "1": {
            name: "entity.name.function.tagged-template.ts"
          },
          "2": {
            name: "punctuation.definition.string.template.begin.ts"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.template.end.ts"
          }
        },
        patterns: [
          {
            include: "#template-type-substitution-element"
          },
          {
            include: "#string-character-escape"
          }
        ]
      }
    ]
  },
  "template-type-substitution-element": {
    name: "meta.template.expression.ts",
    begin: "\\$\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.begin.ts"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.template-expression.end.ts"
      }
    },
    patterns: [
      {
        include: "#type"
      }
    ],
    contentName: "meta.embedded.line.ts"
  },
  regex: {
    patterns: [
      {
        name: "string.regexp.ts",
        begin: "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.string.begin.ts"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.ts"
          },
          "2": {
            name: "keyword.other.ts"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "string.regexp.ts",
        begin: "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.ts"
          }
        },
        end: "(/)([dgimsuy]*)",
        endCaptures: {
          "1": {
            name: "punctuation.definition.string.end.ts"
          },
          "2": {
            name: "keyword.other.ts"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      }
    ]
  },
  regexp: {
    patterns: [
      {
        name: "keyword.control.anchor.regexp",
        match: "\\\\[bB]|\\^|\\$"
      },
      {
        match: "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
        captures: {
          "0": {
            name: "keyword.other.back-reference.regexp"
          },
          "1": {
            name: "variable.other.regexp"
          }
        }
      },
      {
        name: "keyword.operator.quantifier.regexp",
        match: "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
      },
      {
        name: "keyword.operator.or.regexp",
        match: "\\|"
      },
      {
        name: "meta.group.assertion.regexp",
        begin: "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          },
          "2": {
            name: "punctuation.definition.group.assertion.regexp"
          },
          "3": {
            name: "meta.assertion.look-ahead.regexp"
          },
          "4": {
            name: "meta.assertion.negative-look-ahead.regexp"
          },
          "5": {
            name: "meta.assertion.look-behind.regexp"
          },
          "6": {
            name: "meta.assertion.negative-look-behind.regexp"
          }
        },
        end: "(\\))",
        endCaptures: {
          "1": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "meta.group.regexp",
        begin: "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          },
          "1": {
            name: "punctuation.definition.group.no-capture.regexp"
          },
          "2": {
            name: "variable.other.regexp"
          }
        },
        end: "\\)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.group.regexp"
          }
        },
        patterns: [
          {
            include: "#regexp"
          }
        ]
      },
      {
        name: "constant.other.character-class.set.regexp",
        begin: "(\\[)(\\^)?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          },
          "2": {
            name: "keyword.operator.negation.regexp"
          }
        },
        end: "(\\])",
        endCaptures: {
          "1": {
            name: "punctuation.definition.character-class.regexp"
          }
        },
        patterns: [
          {
            name: "constant.other.character-class.range.regexp",
            match: "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
            captures: {
              "1": {
                name: "constant.character.numeric.regexp"
              },
              "2": {
                name: "constant.character.control.regexp"
              },
              "3": {
                name: "constant.character.escape.backslash.regexp"
              },
              "4": {
                name: "constant.character.numeric.regexp"
              },
              "5": {
                name: "constant.character.control.regexp"
              },
              "6": {
                name: "constant.character.escape.backslash.regexp"
              }
            }
          },
          {
            include: "#regex-character-class"
          }
        ]
      },
      {
        include: "#regex-character-class"
      }
    ]
  },
  "regex-character-class": {
    patterns: [
      {
        name: "constant.other.character-class.regexp",
        match: "\\\\[wWsSdDtrnvf]|\\."
      },
      {
        name: "constant.character.numeric.regexp",
        match: "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
      },
      {
        name: "constant.character.control.regexp",
        match: "\\\\c[A-Z]"
      },
      {
        name: "constant.character.escape.backslash.regexp",
        match: "\\\\."
      }
    ]
  },
  comment: {
    patterns: [
      {
        name: "comment.block.documentation.ts",
        begin: "/\\*\\*(?!/)",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.ts"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.ts"
          }
        },
        patterns: [
          {
            include: "#docblock"
          }
        ]
      },
      {
        name: "comment.block.ts",
        begin: "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.comment.ts"
          },
          "2": {
            name: "storage.type.internaldeclaration.ts"
          },
          "3": {
            name: "punctuation.decorator.internaldeclaration.ts"
          }
        },
        end: "\\*/",
        endCaptures: {
          "0": {
            name: "punctuation.definition.comment.ts"
          }
        }
      },
      {
        begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
        beginCaptures: {
          "1": {
            name: "punctuation.whitespace.comment.leading.ts"
          },
          "2": {
            name: "comment.line.double-slash.ts"
          },
          "3": {
            name: "punctuation.definition.comment.ts"
          },
          "4": {
            name: "storage.type.internaldeclaration.ts"
          },
          "5": {
            name: "punctuation.decorator.internaldeclaration.ts"
          }
        },
        end: "(?=$)",
        contentName: "comment.line.double-slash.ts"
      }
    ]
  },
  "single-line-comment-consuming-line-ending": {
    begin: "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.ts"
      },
      "2": {
        name: "comment.line.double-slash.ts"
      },
      "3": {
        name: "punctuation.definition.comment.ts"
      },
      "4": {
        name: "storage.type.internaldeclaration.ts"
      },
      "5": {
        name: "punctuation.decorator.internaldeclaration.ts"
      }
    },
    end: "(?=^)",
    contentName: "comment.line.double-slash.ts"
  },
  directives: {
    name: "comment.line.triple-slash.directive.ts",
    begin: "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.comment.ts"
      }
    },
    end: "(?=$)",
    patterns: [
      {
        name: "meta.tag.ts",
        begin: "(<)(reference|amd-dependency|amd-module)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.directive.ts"
          },
          "2": {
            name: "entity.name.tag.directive.ts"
          }
        },
        end: "/>",
        endCaptures: {
          "0": {
            name: "punctuation.definition.tag.directive.ts"
          }
        },
        patterns: [
          {
            name: "entity.other.attribute-name.directive.ts",
            match: "path|types|no-default-lib|lib|name"
          },
          {
            name: "keyword.operator.assignment.ts",
            match: "="
          },
          {
            include: "#string"
          }
        ]
      }
    ]
  },
  docblock: {
    patterns: [
      {
        match: "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.access-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)author)\n\\s+\n(\n  [^@\\s<>*/]\n  (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n  \\s*\n  (<)\n  ([^>\\s]+)\n  (>)\n)?",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "punctuation.definition.bracket.angle.begin.jsdoc"
          },
          "5": {
            name: "constant.other.email.link.underline.jsdoc"
          },
          "6": {
            name: "punctuation.definition.bracket.angle.end.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+)    # <that namepath>\n\\s+ (as) \\s+              # as\n((?:[^@\\s*/]|\\*[^/])+)    # <this namepath>",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          },
          "4": {
            name: "keyword.operator.control.jsdoc"
          },
          "5": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        name: "meta.example.jsdoc",
        begin: "((@)example)\\s+",
        end: "(?=@|\\*/)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        patterns: [
          {
            match: "^\\s\\*\\s+"
          },
          {
            contentName: "constant.other.description.jsdoc",
            begin: "\\G(<)caption(>)",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            },
            end: "(</)caption(>)|(?=\\*/)",
            endCaptures: {
              "0": {
                name: "entity.name.tag.inline.jsdoc"
              },
              "1": {
                name: "punctuation.definition.bracket.angle.begin.jsdoc"
              },
              "2": {
                name: "punctuation.definition.bracket.angle.end.jsdoc"
              }
            }
          },
          {
            match: "[^\\s@*](?:[^*]|\\*[^/])*",
            captures: {
              "0": {
                name: "source.embedded.ts"
              }
            }
          }
        ]
      },
      {
        match: "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "constant.language.symbol-type.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)see)\n\\s+\n(?:\n  # URL\n  (\n    (?=https?://)\n    (?:[^\\s*]|\\*[^/])+\n  )\n  |\n  # JSDoc namepath\n  (\n    (?!\n      # Avoid matching bare URIs (also acceptable as links)\n      https?://\n      |\n      # Avoid matching {@inline tags}; we match those below\n      (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n      {@(?:link|linkcode|linkplain|tutorial)\\b\n    )\n    # Matched namepath\n    (?:[^@\\s*/]|\\*[^/])+\n  )\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.link.underline.jsdoc"
          },
          "4": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n  [A-Za-z_$]         # First character: non-numeric word character\n  [\\w$.\\[\\]]*        # Rest of identifier\n  (?:                # Possible list of additional identifiers\n    \\s* , \\s*\n    [A-Za-z_$]\n    [\\w$.\\[\\]]*\n  )*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n  [A-Za-z_$]\n  [\\w$.\\[\\]]*\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        begin: "((@)typedef)\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "entity.name.type.instance.jsdoc",
            match: "(?:[^@\\s*/]|\\*[^/])+"
          }
        ]
      },
      {
        begin: "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          },
          {
            name: "variable.other.jsdoc",
            match: "([A-Za-z_$][\\w$.\\[\\]]*)"
          },
          {
            name: "variable.other.jsdoc",
            match: `(?x)
(\\[)\\s*
[\\w$]+
(?:
  (?:\\[\\])?                                        # Foo[ ].bar properties within an array
  \\.                                                # Foo.Bar namespaced parameter
  [\\w$]+
)*
(?:
  \\s*
  (=)                                                # [foo=bar] Default parameter value
  \\s*
  (
    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes
    (?>
      "(?:(?:\\*(?!/))|(?:\\\\(?!"))|[^*\\\\])*?" |                      # [foo="bar"] Double-quoted
      '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' |                      # [foo='bar'] Single-quoted
      \\[ (?:(?:\\*(?!/))|[^*])*? \\] |                                # [foo=[1,2]] Array literal
      (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])*   # Everything else
    )*
  )
)?
\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))`,
            captures: {
              "1": {
                name: "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
              },
              "2": {
                name: "keyword.operator.assignment.jsdoc"
              },
              "3": {
                name: "source.embedded.ts"
              },
              "4": {
                name: "punctuation.definition.optional-value.end.bracket.square.jsdoc"
              },
              "5": {
                name: "invalid.illegal.syntax.jsdoc"
              }
            }
          }
        ]
      },
      {
        begin: "(?x)\n(\n  (@)\n  (?:define|enum|exception|export|extends|lends|implements|modifies\n  |namespace|private|protected|returns?|suppress|this|throws|type\n  |yields?)\n)\n\\s+(?={)",
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        },
        end: "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
        patterns: [
          {
            include: "#jsdoctype"
          }
        ]
      },
      {
        match: "(?x)\n(\n  (@)\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n  (?:\n    [^{}@\\s*] | \\*[^/]\n  )+\n)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "entity.name.type.instance.jsdoc"
          }
        }
      },
      {
        contentName: "variable.other.jsdoc",
        begin: `((@)(?:default(?:value)?|license|version))\\s+(([''"]))`,
        beginCaptures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          },
          "4": {
            name: "punctuation.definition.string.begin.jsdoc"
          }
        },
        end: "(\\3)|(?=$|\\*/)",
        endCaptures: {
          "0": {
            name: "variable.other.jsdoc"
          },
          "1": {
            name: "punctuation.definition.string.end.jsdoc"
          }
        }
      },
      {
        match: "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          },
          "3": {
            name: "variable.other.jsdoc"
          }
        }
      },
      {
        name: "storage.type.class.jsdoc",
        match: "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
        captures: {
          "1": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      },
      {
        include: "#inline-tags"
      },
      {
        match: "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
        captures: {
          "1": {
            name: "storage.type.class.jsdoc"
          },
          "2": {
            name: "punctuation.definition.block.tag.jsdoc"
          }
        }
      }
    ]
  },
  brackets: {
    patterns: [
      {
        begin: "{",
        end: "}|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      },
      {
        begin: "\\[",
        end: "\\]|(?=\\*/)",
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  },
  "inline-tags": {
    patterns: [
      {
        name: "constant.other.description.jsdoc",
        match: "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
        captures: {
          "1": {
            name: "punctuation.definition.bracket.square.begin.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.square.end.jsdoc"
          }
        }
      },
      {
        name: "entity.name.type.instance.jsdoc",
        begin: "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          },
          "2": {
            name: "storage.type.class.jsdoc"
          },
          "3": {
            name: "punctuation.definition.inline.tag.jsdoc"
          }
        },
        end: "}|(?=\\*/)",
        endCaptures: {
          "0": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            match: "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.link.underline.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          },
          {
            match: "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
            captures: {
              "1": {
                name: "variable.other.description.jsdoc"
              },
              "2": {
                name: "punctuation.separator.pipe.jsdoc"
              }
            }
          }
        ]
      }
    ]
  },
  jsdoctype: {
    patterns: [
      {
        contentName: "entity.name.type.instance.jsdoc",
        begin: "\\G({)",
        beginCaptures: {
          "0": {
            name: "entity.name.type.instance.jsdoc"
          },
          "1": {
            name: "punctuation.definition.bracket.curly.begin.jsdoc"
          }
        },
        end: "((}))\\s*|(?=\\*/)",
        endCaptures: {
          "1": {
            name: "entity.name.type.instance.jsdoc"
          },
          "2": {
            name: "punctuation.definition.bracket.curly.end.jsdoc"
          }
        },
        patterns: [
          {
            include: "#brackets"
          }
        ]
      }
    ]
  }
};
const typescript_tmLanguage = {
  information_for_contributors: information_for_contributors$1,
  version: version$1,
  name: name$4,
  scopeName: scopeName$3,
  patterns: patterns$3,
  repository: repository$3
};
const __vite_glob_0_7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: typescript_tmLanguage,
  information_for_contributors: information_for_contributors$1,
  name: name$4,
  patterns: patterns$3,
  repository: repository$3,
  scopeName: scopeName$3,
  version: version$1
}, Symbol.toStringTag, { value: "Module" }));
const name$3 = "vue-html";
const scopeName$2 = "text.html.vue-html";
const fileTypes$1 = [];
const uuid$1 = "ca2e4260-5d62-45bf-8cf1-d8b5cc19c8f8";
const patterns$2 = [
  {
    include: "source.vue#vue-interpolations"
  },
  {
    name: "meta.tag.any.html",
    begin: "(<)([A-Z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "support.class.component.html"
      }
    },
    end: "(>)(<)(/)(\\2)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      },
      "2": {
        name: "punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"
      },
      "3": {
        name: "punctuation.definition.tag.begin.html"
      },
      "4": {
        name: "support.class.component.html"
      },
      "5": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.any.html",
    begin: "(<)([a-z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.html"
      }
    },
    end: "(>)(<)(/)(\\2)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      },
      "2": {
        name: "punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"
      },
      "3": {
        name: "punctuation.definition.tag.begin.html"
      },
      "4": {
        name: "entity.name.tag.html"
      },
      "5": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.preprocessor.xml.html",
    begin: "(<\\?)(xml)",
    end: "(\\?>)",
    captures: {
      "1": {
        name: "punctuation.definition.tag.html"
      },
      "2": {
        name: "entity.name.tag.xml.html"
      }
    },
    patterns: [
      {
        include: "#tag-generic-attribute"
      },
      {
        include: "#string-double-quoted"
      },
      {
        include: "#string-single-quoted"
      }
    ]
  },
  {
    name: "comment.block.html",
    begin: "<!--",
    end: "-->",
    captures: {
      "0": {
        name: "punctuation.definition.comment.html"
      }
    }
  },
  {
    name: "meta.tag.sgml.html",
    begin: "<!",
    end: ">",
    captures: {
      "0": {
        name: "punctuation.definition.tag.html"
      }
    },
    patterns: [
      {
        name: "meta.tag.sgml.doctype.html",
        begin: "(?i:DOCTYPE)",
        end: "(?=>)",
        captures: {
          "1": {
            name: "entity.name.tag.doctype.html"
          }
        },
        patterns: [
          {
            name: "string.quoted.double.doctype.identifiers-and-DTDs.html",
            match: '"[^">]*"'
          }
        ]
      },
      {
        name: "constant.other.inline-data.html",
        begin: "\\[CDATA\\[",
        end: "]](?=>)"
      },
      {
        name: "invalid.illegal.bad-comments-or-CDATA.html",
        match: "(\\s*)(?!--|>)\\S(\\s*)"
      }
    ]
  },
  {
    name: "meta.tag.block.any.html",
    begin: "(</?)([A-Z][a-zA-Z0-9:-]*\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "support.class.component.html"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.block.any.html",
    begin: "(</?)([a-z][a-zA-Z0-9:-]*\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.block.any.html"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.structure.any.html",
    begin: "(</?)((?i:body|head|html)\\b)",
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    captures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.structure.any.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.block.any.html",
    begin: "(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)(?!-)\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.block.any.html"
      }
    },
    end: "(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.inline.any.html",
    begin: "(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)(?!-)\\b)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.inline.any.html"
      }
    },
    end: "(/?>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    name: "meta.tag.other.html",
    begin: "(</?)([a-zA-Z0-9:-]+)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.other.html"
      }
    },
    end: "(/?>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    include: "#entities"
  },
  {
    name: "invalid.illegal.incomplete.html",
    match: "<>"
  },
  {
    name: "invalid.illegal.bad-angle-bracket.html",
    match: "<"
  }
];
const repository$2 = {
  entities: {
    patterns: [
      {
        name: "constant.character.entity.html",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.html",
        match: "&"
      }
    ]
  },
  "string-double-quoted": {
    name: "string.quoted.double.html",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "source.vue#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "string-single-quoted": {
    name: "string.quoted.single.html",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: "'",
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "source.vue#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "tag-generic-attribute": {
    name: "entity.other.attribute-name.html",
    match: "(?<=[^=])\\b([a-zA-Z0-9:\\-_]+)"
  },
  "tag-id-attribute": {
    name: "meta.attribute-with-value.id.html",
    begin: "\\b(id)\\b\\s*(=)",
    end: `(?!\\G)(?<='|"|[^\\s<>/])`,
    captures: {
      "1": {
        name: "entity.other.attribute-name.id.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "string.quoted.double.html",
        contentName: "meta.toc-list.id.html",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.vue#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      },
      {
        name: "string.quoted.single.html",
        contentName: "meta.toc-list.id.html",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.vue#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      },
      {
        name: "string.unquoted.html",
        match: `(?<==)(?:[^\\s<>/'"]|/(?!>))+`,
        captures: {
          "0": {
            name: "meta.toc-list.id.html"
          }
        }
      }
    ]
  },
  "tag-stuff": {
    patterns: [
      {
        include: "#vue-directives"
      },
      {
        include: "#tag-id-attribute"
      },
      {
        include: "#tag-generic-attribute"
      },
      {
        include: "#string-double-quoted"
      },
      {
        include: "#string-single-quoted"
      },
      {
        include: "#unquoted-attribute"
      }
    ]
  },
  "unquoted-attribute": {
    name: "string.unquoted.html",
    match: `(?<==)(?:[^\\s<>/'"]|/(?!>))+`
  },
  "vue-directives": {
    name: "meta.directive.vue",
    begin: "(?:\\b(v-)|(:|@|#))([a-zA-Z0-9\\-_]+)(?:\\:([a-zA-Z\\-_]+))?(?:\\.([a-zA-Z\\-_]+))*\\s*(=)",
    end: "(?<='|\")|(?=[\\s<>`])",
    captures: {
      "1": {
        name: "entity.other.attribute-name.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      },
      "3": {
        name: "entity.other.attribute-name.html"
      },
      "4": {
        name: "entity.other.attribute-name.html"
      },
      "5": {
        name: "entity.other.attribute-name.html"
      },
      "6": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "source.directive.vue",
        begin: "`",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      }
    ]
  }
};
const vueHtml_tmLanguage = {
  name: name$3,
  scopeName: scopeName$2,
  fileTypes: fileTypes$1,
  uuid: uuid$1,
  patterns: patterns$2,
  repository: repository$2
};
const __vite_glob_0_8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: vueHtml_tmLanguage,
  fileTypes: fileTypes$1,
  name: name$3,
  patterns: patterns$2,
  repository: repository$2,
  scopeName: scopeName$2,
  uuid: uuid$1
}, Symbol.toStringTag, { value: "Module" }));
const name$2 = "vue";
const scopeName$1 = "source.vue";
const fileTypes = [
  "vue"
];
const uuid = "5512c10d-4cc5-434c-b8fc-53b912f55ab3";
const patterns$1 = [
  {
    begin: "(<)(slim)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(slim)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</slim>)",
        contentName: "text.slim",
        patterns: [
          {
            include: "text.slim"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(i18n)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(i18n)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</i18n>)",
        contentName: "source.json",
        patterns: [
          {
            include: "source.json"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(docs)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(docs)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</docs>)",
        contentName: "text.html.markdown",
        patterns: [
          {
            include: "text.html.markdown"
          }
        ]
      }
    ]
  },
  {
    name: "comment.block.html",
    begin: "<!--",
    end: "-->",
    captures: {
      "0": {
        name: "punctuation.definition.comment.html"
      }
    }
  },
  {
    begin: "(<)(?=template.*[^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      }
    },
    end: "(/>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        begin: "(template)",
        beginCaptures: {
          "1": {
            name: "entity.name.tag.template.html"
          }
        },
        end: "(?=/>)",
        patterns: [
          {
            include: "#tag-stuff"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(template)(?=[^>]*>[^/>]*</template>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)"
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('jade'|"jade"|'pug'|"pug"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.pug",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.pug"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('haml'|"haml"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.haml",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.haml"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('slim'|"slim"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.slim",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.slim"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('slm'|"slm"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.jade.slm",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.jade.slm"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(template)\\b(?=[^>]*lang=('liquid'|"liquid"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.html.liquid",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</template>)",
        patterns: [
          {
            include: "text.html.liquid"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(template)(?![^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      }
    },
    end: "^(</)(template)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.template.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "text.html.vue-html",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=^</template>)",
        patterns: [
          {
            include: "text.html.vue-html"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(style)\\b(?=[^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(/>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    begin: "(<)(style)(?=[^>]*>[^/>]*</style>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)"
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('sass'|"sass"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.sass",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.sass"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('scss'|"scss"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.scss",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.scss"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('less'|"less"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.less",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.less"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('stylus'|"stylus"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.stylus",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.stylus"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=('postcss'|"postcss"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.postcss",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.postcss"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(style)\\b(?=[^>]*lang=(['"]sss['"]))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css.sugarss",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css.sugarss"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(style)(?![^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      }
    },
    end: "(</)(style)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.style.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.css",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=</style>)",
        patterns: [
          {
            include: "source.css"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(script)\\b(?=[^>]*/>$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(/>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      }
    ]
  },
  {
    begin: "(<)(script)(?=[^>]*>[^/>]*<\/script>)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)"
      }
    ]
  },
  {
    begin: `(<)(script)\\b(?=[^>]*lang=('ts'|"ts"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.ts",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)",
        patterns: [
          {
            include: "source.ts"
          }
        ]
      }
    ]
  },
  {
    begin: `(<)(script)\\b(?=[^>]*lang=('coffee'|"coffee"))(?![^/>]*/>\\s*$)`,
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.coffee",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)",
        patterns: [
          {
            include: "source.coffee"
          }
        ]
      }
    ]
  },
  {
    begin: "(<)(script)(?![^/>]*/>\\s*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      }
    },
    end: "(</)(script)(>)",
    endCaptures: {
      "1": {
        name: "punctuation.definition.tag.begin.html"
      },
      "2": {
        name: "entity.name.tag.script.html"
      },
      "3": {
        name: "punctuation.definition.tag.end.html"
      }
    },
    patterns: [
      {
        include: "#tag-stuff"
      },
      {
        contentName: "source.js",
        begin: "(>)",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.tag.end.html"
          }
        },
        end: "(?=<\/script>)",
        patterns: [
          {
            include: "source.js"
          }
        ]
      }
    ]
  }
];
const repository$1 = {
  entities: {
    patterns: [
      {
        name: "constant.character.entity.html",
        match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
        captures: {
          "1": {
            name: "punctuation.definition.entity.html"
          },
          "3": {
            name: "punctuation.definition.entity.html"
          }
        }
      },
      {
        name: "invalid.illegal.bad-ampersand.html",
        match: "&"
      }
    ]
  },
  "string-double-quoted": {
    name: "string.quoted.double.html",
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "string-single-quoted": {
    name: "string.quoted.single.html",
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.html"
      }
    },
    end: "'",
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.html"
      }
    },
    patterns: [
      {
        include: "#vue-interpolations"
      },
      {
        include: "#entities"
      }
    ]
  },
  "tag-generic-attribute": {
    name: "entity.other.attribute-name.html",
    match: "\\b([a-zA-Z\\-:_]+)"
  },
  "tag-id-attribute": {
    name: "meta.attribute-with-value.id.html",
    begin: "\\b(id)\\b\\s*(=)",
    end: `(?<='|")`,
    captures: {
      "1": {
        name: "entity.other.attribute-name.id.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "string.quoted.double.html",
        contentName: "meta.toc-list.id.html",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      },
      {
        name: "string.quoted.single.html",
        contentName: "meta.toc-list.id.html",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "#vue-interpolations"
          },
          {
            include: "#entities"
          }
        ]
      }
    ]
  },
  "tag-stuff": {
    patterns: [
      {
        include: "#vue-directives"
      },
      {
        include: "#tag-id-attribute"
      },
      {
        include: "#tag-generic-attribute"
      },
      {
        include: "#string-double-quoted"
      },
      {
        include: "#string-single-quoted"
      }
    ]
  },
  "vue-directives": {
    name: "meta.directive.vue",
    begin: "(?:\\b(v-)|(:|@|#))([a-zA-Z0-9\\-_]+)(?:\\:([a-zA-Z\\-_]+))?(?:\\.([a-zA-Z\\-_]+))*\\s*(=)",
    end: "(?<='|\")|(?=[\\s<>`])",
    captures: {
      "1": {
        name: "entity.other.attribute-name.html"
      },
      "2": {
        name: "punctuation.separator.key-value.html"
      },
      "3": {
        name: "entity.other.attribute-name.html"
      },
      "4": {
        name: "entity.other.attribute-name.html"
      },
      "5": {
        name: "entity.other.attribute-name.html"
      },
      "6": {
        name: "punctuation.separator.key-value.html"
      }
    },
    patterns: [
      {
        name: "source.directive.vue",
        begin: "`",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "`",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: '"',
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: '"',
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      },
      {
        name: "source.directive.vue",
        begin: "'",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.string.begin.html"
          }
        },
        end: "'",
        endCaptures: {
          "0": {
            name: "punctuation.definition.string.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      }
    ]
  },
  "vue-interpolations": {
    patterns: [
      {
        name: "expression.embedded.vue",
        begin: "\\{\\{\\{?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.generic.begin.html"
          }
        },
        end: "\\}\\}\\}?",
        endCaptures: {
          "0": {
            name: "punctuation.definition.generic.end.html"
          }
        },
        patterns: [
          {
            include: "source.js#expression"
          }
        ]
      }
    ]
  }
};
const vue_tmLanguage = {
  name: name$2,
  scopeName: scopeName$1,
  fileTypes,
  uuid,
  patterns: patterns$1,
  repository: repository$1
};
const __vite_glob_0_9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: vue_tmLanguage,
  fileTypes,
  name: name$2,
  patterns: patterns$1,
  repository: repository$1,
  scopeName: scopeName$1,
  uuid
}, Symbol.toStringTag, { value: "Module" }));
const information_for_contributors = [
  "This file has been converted from https://github.com/textmate/yaml.tmbundle/blob/master/Syntaxes/YAML.tmLanguage",
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
  "Once accepted there, we are happy to receive an update request."
];
const version = "https://github.com/textmate/yaml.tmbundle/commit/e54ceae3b719506dba7e481a77cea4a8b576ae46";
const name$1 = "yaml";
const scopeName = "source.yaml";
const patterns = [
  {
    include: "#comment"
  },
  {
    include: "#property"
  },
  {
    include: "#directive"
  },
  {
    match: "^---",
    name: "entity.other.document.begin.yaml"
  },
  {
    match: "^\\.{3}",
    name: "entity.other.document.end.yaml"
  },
  {
    include: "#node"
  }
];
const repository = {
  "block-collection": {
    patterns: [
      {
        include: "#block-sequence"
      },
      {
        include: "#block-mapping"
      }
    ]
  },
  "block-mapping": {
    patterns: [
      {
        include: "#block-pair"
      }
    ]
  },
  "block-node": {
    patterns: [
      {
        include: "#prototype"
      },
      {
        include: "#block-scalar"
      },
      {
        include: "#block-collection"
      },
      {
        include: "#flow-scalar-plain-out"
      },
      {
        include: "#flow-node"
      }
    ]
  },
  "block-pair": {
    patterns: [
      {
        begin: "\\?",
        beginCaptures: {
          "1": {
            name: "punctuation.definition.key-value.begin.yaml"
          }
        },
        end: "(?=\\?)|^ *(:)|(:)",
        endCaptures: {
          "1": {
            name: "punctuation.separator.key-value.mapping.yaml"
          },
          "2": {
            name: "invalid.illegal.expected-newline.yaml"
          }
        },
        name: "meta.block-mapping.yaml",
        patterns: [
          {
            include: "#block-node"
          }
        ]
      },
      {
        begin: "(?x)\n                        (?=\n                            (?x:\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] \\S\n                            )\n                            (\n                                  [^\\s:]\n                                | : \\S\n                                | \\s+ (?![#\\s])\n                            )*\n                            \\s*\n                            :\n							(\\s|$)\n                        )\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                        )\n                    ",
        patterns: [
          {
            include: "#flow-scalar-plain-out-implicit-type"
          },
          {
            begin: "(?x)\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] \\S\n                            ",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.yaml"
              }
            },
            contentName: "entity.name.tag.yaml",
            end: "(?x)\n                                (?=\n                                      \\s* $\n                                    | \\s+ \\#\n                                    | \\s* : (\\s|$)\n                                )\n                            ",
            name: "string.unquoted.plain.out.yaml"
          }
        ]
      },
      {
        match: ":(?=\\s|$)",
        name: "punctuation.separator.key-value.mapping.yaml"
      }
    ]
  },
  "block-scalar": {
    begin: "(?:(\\|)|(>))([1-9])?([-+])?(.*\\n?)",
    beginCaptures: {
      "1": {
        name: "keyword.control.flow.block-scalar.literal.yaml"
      },
      "2": {
        name: "keyword.control.flow.block-scalar.folded.yaml"
      },
      "3": {
        name: "constant.numeric.indentation-indicator.yaml"
      },
      "4": {
        name: "storage.modifier.chomping-indicator.yaml"
      },
      "5": {
        patterns: [
          {
            include: "#comment"
          },
          {
            match: ".+",
            name: "invalid.illegal.expected-comment-or-newline.yaml"
          }
        ]
      }
    },
    end: "^(?=\\S)|(?!\\G)",
    patterns: [
      {
        begin: "^([ ]+)(?! )",
        end: "^(?!\\1|\\s*$)",
        name: "string.unquoted.block.yaml"
      }
    ]
  },
  "block-sequence": {
    match: "(-)(?!\\S)",
    name: "punctuation.definition.block.sequence.item.yaml"
  },
  comment: {
    begin: "(?:(^[ \\t]*)|[ \\t]+)(?=#\\p{Print}*$)",
    beginCaptures: {
      "1": {
        name: "punctuation.whitespace.comment.leading.yaml"
      }
    },
    end: "(?!\\G)",
    patterns: [
      {
        begin: "#",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.comment.yaml"
          }
        },
        end: "\\n",
        name: "comment.line.number-sign.yaml"
      }
    ]
  },
  directive: {
    begin: "^%",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.directive.begin.yaml"
      }
    },
    end: "(?=$|[ \\t]+($|#))",
    name: "meta.directive.yaml",
    patterns: [
      {
        captures: {
          "1": {
            name: "keyword.other.directive.yaml.yaml"
          },
          "2": {
            name: "constant.numeric.yaml-version.yaml"
          }
        },
        match: "\\G(YAML)[ \\t]+(\\d+\\.\\d+)"
      },
      {
        captures: {
          "1": {
            name: "keyword.other.directive.tag.yaml"
          },
          "2": {
            name: "storage.type.tag-handle.yaml"
          },
          "3": {
            name: "support.type.tag-prefix.yaml"
          }
        },
        match: "(?x)\n                        \\G\n                        (TAG)\n                        (?:[ \\t]+\n                            ((?:!(?:[0-9A-Za-z\\-]*!)?))\n                            (?:[ \\t]+ (\n                                  !              (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )*\n                                | (?![,!\\[\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+\n                                )\n                            )?\n                        )?\n                    "
      },
      {
        captures: {
          "1": {
            name: "support.other.directive.reserved.yaml"
          },
          "2": {
            name: "string.unquoted.directive-name.yaml"
          },
          "3": {
            name: "string.unquoted.directive-parameter.yaml"
          }
        },
        match: "(?x) \\G (\\w+) (?:[ \\t]+ (\\w+) (?:[ \\t]+ (\\w+))? )?"
      },
      {
        match: "\\S+",
        name: "invalid.illegal.unrecognized.yaml"
      }
    ]
  },
  "flow-alias": {
    captures: {
      "1": {
        name: "keyword.control.flow.alias.yaml"
      },
      "2": {
        name: "punctuation.definition.alias.yaml"
      },
      "3": {
        name: "variable.other.alias.yaml"
      },
      "4": {
        name: "invalid.illegal.character.anchor.yaml"
      }
    },
    match: "((\\*))([^\\s\\[\\]/{/},]+)([^\\s\\]},]\\S*)?"
  },
  "flow-collection": {
    patterns: [
      {
        include: "#flow-sequence"
      },
      {
        include: "#flow-mapping"
      }
    ]
  },
  "flow-mapping": {
    begin: "\\{",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.mapping.begin.yaml"
      }
    },
    end: "\\}",
    endCaptures: {
      "0": {
        name: "punctuation.definition.mapping.end.yaml"
      }
    },
    name: "meta.flow-mapping.yaml",
    patterns: [
      {
        include: "#prototype"
      },
      {
        match: ",",
        name: "punctuation.separator.mapping.yaml"
      },
      {
        include: "#flow-pair"
      }
    ]
  },
  "flow-node": {
    patterns: [
      {
        include: "#prototype"
      },
      {
        include: "#flow-alias"
      },
      {
        include: "#flow-collection"
      },
      {
        include: "#flow-scalar"
      }
    ]
  },
  "flow-pair": {
    patterns: [
      {
        begin: "\\?",
        beginCaptures: {
          "0": {
            name: "punctuation.definition.key-value.begin.yaml"
          }
        },
        end: "(?=[},\\]])",
        name: "meta.flow-pair.explicit.yaml",
        patterns: [
          {
            include: "#prototype"
          },
          {
            include: "#flow-pair"
          },
          {
            include: "#flow-node"
          },
          {
            begin: ":(?=\\s|$|[\\[\\]{},])",
            beginCaptures: {
              "0": {
                name: "punctuation.separator.key-value.mapping.yaml"
              }
            },
            end: "(?=[},\\]])",
            patterns: [
              {
                include: "#flow-value"
              }
            ]
          }
        ]
      },
      {
        begin: "(?x)\n                        (?=\n                            (?:\n                                [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                              | [?:-] [^\\s[\\[\\]{},]]\n                            )\n                            (\n                                  [^\\s:[\\[\\]{},]]\n                                | : [^\\s[\\[\\]{},]]\n                                | \\s+ (?![#\\s])\n                            )*\n                            \\s*\n                            :\n							(\\s|$)\n                        )\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                            | \\s* : [\\[\\]{},]\n                            | \\s* [\\[\\]{},]\n                        )\n                    ",
        name: "meta.flow-pair.key.yaml",
        patterns: [
          {
            include: "#flow-scalar-plain-in-implicit-type"
          },
          {
            begin: "(?x)\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] [^\\s[\\[\\]{},]]\n                            ",
            beginCaptures: {
              "0": {
                name: "entity.name.tag.yaml"
              }
            },
            contentName: "entity.name.tag.yaml",
            end: "(?x)\n                                (?=\n                                      \\s* $\n                                    | \\s+ \\#\n                                    | \\s* : (\\s|$)\n                                    | \\s* : [\\[\\]{},]\n                                    | \\s* [\\[\\]{},]\n                                )\n                            ",
            name: "string.unquoted.plain.in.yaml"
          }
        ]
      },
      {
        include: "#flow-node"
      },
      {
        begin: ":(?=\\s|$|[\\[\\]{},])",
        captures: {
          "0": {
            name: "punctuation.separator.key-value.mapping.yaml"
          }
        },
        end: "(?=[},\\]])",
        name: "meta.flow-pair.yaml",
        patterns: [
          {
            include: "#flow-value"
          }
        ]
      }
    ]
  },
  "flow-scalar": {
    patterns: [
      {
        include: "#flow-scalar-double-quoted"
      },
      {
        include: "#flow-scalar-single-quoted"
      },
      {
        include: "#flow-scalar-plain-in"
      }
    ]
  },
  "flow-scalar-double-quoted": {
    begin: '"',
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.yaml"
      }
    },
    end: '"',
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.yaml"
      }
    },
    name: "string.quoted.double.yaml",
    patterns: [
      {
        match: '\\\\([0abtnvfre "/\\\\N_Lp]|x\\d\\d|u\\d{4}|U\\d{8})',
        name: "constant.character.escape.yaml"
      },
      {
        match: "\\\\\\n",
        name: "constant.character.escape.double-quoted.newline.yaml"
      }
    ]
  },
  "flow-scalar-plain-in": {
    patterns: [
      {
        include: "#flow-scalar-plain-in-implicit-type"
      },
      {
        begin: "(?x)\n                          [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                        | [?:-] [^\\s[\\[\\]{},]]\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                            | \\s* : [\\[\\]{},]\n                            | \\s* [\\[\\]{},]\n                        )\n                    ",
        name: "string.unquoted.plain.in.yaml"
      }
    ]
  },
  "flow-scalar-plain-in-implicit-type": {
    patterns: [
      {
        captures: {
          "1": {
            name: "constant.language.null.yaml"
          },
          "2": {
            name: "constant.language.boolean.yaml"
          },
          "3": {
            name: "constant.numeric.integer.yaml"
          },
          "4": {
            name: "constant.numeric.float.yaml"
          },
          "5": {
            name: "constant.other.timestamp.yaml"
          },
          "6": {
            name: "constant.language.value.yaml"
          },
          "7": {
            name: "constant.language.merge.yaml"
          }
        },
        match: "(?x)\n                        (?x:\n                              (null|Null|NULL|~)\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n                            | (\n                                (?:\n                                      [-+]? 0b [0-1_]+ # (base 2)\n                                    | [-+]? 0  [0-7_]+ # (base 8)\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n                                )\n                              )\n                            | (\n                                (?x:\n                                      [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n                                    | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n                                    |       \\. (?: nan|NaN|NAN) # (not a number)\n                                )\n                              )\n                            | (\n                                (?x:\n                                    \\d{4} - \\d{2} - \\d{2}           # (y-m-d)\n                                  | \\d{4}                           # (year)\n                                    - \\d{1,2}                       # (month)\n                                    - \\d{1,2}                       # (day)\n                                    (?: [Tt] | [ \\t]+) \\d{1,2}      # (hour)\n                                    : \\d{2}                         # (minute)\n                                    : \\d{2}                         # (second)\n                                    (?: \\.\\d*)?                     # (fraction)\n                                    (?:\n                                          (?:[ \\t]*) Z\n                                        | [-+] \\d{1,2} (?: :\\d{1,2})?\n                                    )?                              # (time zone)\n                                )\n                              )\n                            | (=)\n                            | (<<)\n                        )\n                        (?:\n                            (?=\n                                  \\s* $\n                                | \\s+ \\#\n                                | \\s* : (\\s|$)\n                                | \\s* : [\\[\\]{},]\n                                | \\s* [\\[\\]{},]\n                            )\n                        )\n                    "
      }
    ]
  },
  "flow-scalar-plain-out": {
    patterns: [
      {
        include: "#flow-scalar-plain-out-implicit-type"
      },
      {
        begin: "(?x)\n                          [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                        | [?:-] \\S\n                    ",
        end: "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                        )\n                    ",
        name: "string.unquoted.plain.out.yaml"
      }
    ]
  },
  "flow-scalar-plain-out-implicit-type": {
    patterns: [
      {
        captures: {
          "1": {
            name: "constant.language.null.yaml"
          },
          "2": {
            name: "constant.language.boolean.yaml"
          },
          "3": {
            name: "constant.numeric.integer.yaml"
          },
          "4": {
            name: "constant.numeric.float.yaml"
          },
          "5": {
            name: "constant.other.timestamp.yaml"
          },
          "6": {
            name: "constant.language.value.yaml"
          },
          "7": {
            name: "constant.language.merge.yaml"
          }
        },
        match: "(?x)\n                        (?x:\n                              (null|Null|NULL|~)\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n                            | (\n                                (?:\n                                      [-+]? 0b [0-1_]+ # (base 2)\n                                    | [-+]? 0  [0-7_]+ # (base 8)\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n                                )\n                              )\n                            | (\n                                (?x:\n                                      [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n                                    | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n                                    |       \\. (?: nan|NaN|NAN) # (not a number)\n                                )\n                              )\n                            | (\n                                (?x:\n                                    \\d{4} - \\d{2} - \\d{2}           # (y-m-d)\n                                  | \\d{4}                           # (year)\n                                    - \\d{1,2}                       # (month)\n                                    - \\d{1,2}                       # (day)\n                                    (?: [Tt] | [ \\t]+) \\d{1,2}      # (hour)\n                                    : \\d{2}                         # (minute)\n                                    : \\d{2}                         # (second)\n                                    (?: \\.\\d*)?                     # (fraction)\n                                    (?:\n                                          (?:[ \\t]*) Z\n                                        | [-+] \\d{1,2} (?: :\\d{1,2})?\n                                    )?                              # (time zone)\n                                )\n                              )\n                            | (=)\n                            | (<<)\n                        )\n                        (?x:\n                            (?=\n                                  \\s* $\n                                | \\s+ \\#\n                                | \\s* : (\\s|$)\n                            )\n                        )\n                    "
      }
    ]
  },
  "flow-scalar-single-quoted": {
    begin: "'",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.string.begin.yaml"
      }
    },
    end: "'(?!')",
    endCaptures: {
      "0": {
        name: "punctuation.definition.string.end.yaml"
      }
    },
    name: "string.quoted.single.yaml",
    patterns: [
      {
        match: "''",
        name: "constant.character.escape.single-quoted.yaml"
      }
    ]
  },
  "flow-sequence": {
    begin: "\\[",
    beginCaptures: {
      "0": {
        name: "punctuation.definition.sequence.begin.yaml"
      }
    },
    end: "\\]",
    endCaptures: {
      "0": {
        name: "punctuation.definition.sequence.end.yaml"
      }
    },
    name: "meta.flow-sequence.yaml",
    patterns: [
      {
        include: "#prototype"
      },
      {
        match: ",",
        name: "punctuation.separator.sequence.yaml"
      },
      {
        include: "#flow-pair"
      },
      {
        include: "#flow-node"
      }
    ]
  },
  "flow-value": {
    patterns: [
      {
        begin: "\\G(?![},\\]])",
        end: "(?=[},\\]])",
        name: "meta.flow-pair.value.yaml",
        patterns: [
          {
            include: "#flow-node"
          }
        ]
      }
    ]
  },
  node: {
    patterns: [
      {
        include: "#block-node"
      }
    ]
  },
  property: {
    begin: "(?=!|&)",
    end: "(?!\\G)",
    name: "meta.property.yaml",
    patterns: [
      {
        captures: {
          "1": {
            name: "keyword.control.property.anchor.yaml"
          },
          "2": {
            name: "punctuation.definition.anchor.yaml"
          },
          "3": {
            name: "entity.name.type.anchor.yaml"
          },
          "4": {
            name: "invalid.illegal.character.anchor.yaml"
          }
        },
        match: "\\G((&))([^\\s\\[\\]/{/},]+)(\\S+)?"
      },
      {
        match: "(?x)\n                        \\G\n                        (?:\n                            ! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ >\n                          | (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+\n                          | !\n                        )\n                        (?=\\ |\\t|$)\n                    ",
        name: "storage.type.tag-handle.yaml"
      },
      {
        match: "\\S+",
        name: "invalid.illegal.tag-handle.yaml"
      }
    ]
  },
  prototype: {
    patterns: [
      {
        include: "#comment"
      },
      {
        include: "#property"
      }
    ]
  }
};
const yaml_tmLanguage = {
  information_for_contributors,
  version,
  name: name$1,
  scopeName,
  patterns,
  repository
};
const __vite_glob_0_10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: yaml_tmLanguage,
  information_for_contributors,
  name: name$1,
  patterns,
  repository,
  scopeName,
  version
}, Symbol.toStringTag, { value: "Module" }));
var lib$2 = {};
var onigasmH = {};
var onigasmExports = {};
var onigasm$1 = {
  get exports() {
    return onigasmExports;
  },
  set exports(v) {
    onigasmExports = v;
  }
};
(function(module, exports) {
  var Onigasm = function() {
    typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0;
    return function(Onigasm2) {
      Onigasm2 = Onigasm2 || {};
      var Module = typeof Onigasm2 !== "undefined" ? Onigasm2 : {};
      var moduleOverrides = {};
      var key;
      for (key in Module) {
        if (Module.hasOwnProperty(key)) {
          moduleOverrides[key] = Module[key];
        }
      }
      var ENVIRONMENT_IS_WORKER = false;
      var scriptDirectory = "";
      function locateFile(path) {
        if (Module["locateFile"]) {
          return Module["locateFile"](path, scriptDirectory);
        }
        return scriptDirectory + path;
      }
      var readBinary;
      {
        readBinary = function readBinary2(f2) {
          var data;
          if (typeof readbuffer === "function") {
            return new Uint8Array(readbuffer(f2));
          }
          data = read(f2, "binary");
          assert(typeof data === "object");
          return data;
        };
        if (typeof scriptArgs != "undefined") {
          scriptArgs;
        }
        if (typeof print !== "undefined") {
          if (typeof console === "undefined")
            console = {};
          console.log = print;
          console.warn = console.error = typeof printErr !== "undefined" ? printErr : print;
        }
      }
      var out = Module["print"] || console.log.bind(console);
      var err = Module["printErr"] || console.warn.bind(console);
      for (key in moduleOverrides) {
        if (moduleOverrides.hasOwnProperty(key)) {
          Module[key] = moduleOverrides[key];
        }
      }
      moduleOverrides = null;
      if (Module["arguments"])
        Module["arguments"];
      if (Module["thisProgram"])
        Module["thisProgram"];
      if (Module["quit"])
        Module["quit"];
      var wasmBinary;
      if (Module["wasmBinary"])
        wasmBinary = Module["wasmBinary"];
      if (Module["noExitRuntime"])
        Module["noExitRuntime"];
      if (typeof WebAssembly !== "object") {
        err("no native wasm support detected");
      }
      var wasmMemory;
      var wasmTable = new WebAssembly.Table({ "initial": 244, "maximum": 244 + 0, "element": "anyfunc" });
      var ABORT = false;
      function assert(condition, text3) {
        if (!condition) {
          abort("Assertion failed: " + text3);
        }
      }
      function getCFunc(ident) {
        var func = Module["_" + ident];
        assert(func, "Cannot call unknown function " + ident + ", make sure it is exported");
        return func;
      }
      function ccall(ident, returnType, argTypes, args, opts) {
        var toC = { "string": function(str) {
          var ret2 = 0;
          if (str !== null && str !== void 0 && str !== 0) {
            var len = (str.length << 2) + 1;
            ret2 = stackAlloc(len);
            stringToUTF8(str, ret2, len);
          }
          return ret2;
        }, "array": function(arr) {
          var ret2 = stackAlloc(arr.length);
          writeArrayToMemory(arr, ret2);
          return ret2;
        } };
        function convertReturnValue(ret2) {
          if (returnType === "string")
            return UTF8ToString(ret2);
          if (returnType === "boolean")
            return Boolean(ret2);
          return ret2;
        }
        var func = getCFunc(ident);
        var cArgs = [];
        var stack = 0;
        if (args) {
          for (var i2 = 0; i2 < args.length; i2++) {
            var converter = toC[argTypes[i2]];
            if (converter) {
              if (stack === 0)
                stack = stackSave();
              cArgs[i2] = converter(args[i2]);
            } else {
              cArgs[i2] = args[i2];
            }
          }
        }
        var ret = func.apply(null, cArgs);
        ret = convertReturnValue(ret);
        if (stack !== 0)
          stackRestore(stack);
        return ret;
      }
      var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0;
      function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {
        var endIdx = idx + maxBytesToRead;
        var endPtr = idx;
        while (u8Array[endPtr] && !(endPtr >= endIdx))
          ++endPtr;
        if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
          return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));
        } else {
          var str = "";
          while (idx < endPtr) {
            var u0 = u8Array[idx++];
            if (!(u0 & 128)) {
              str += String.fromCharCode(u0);
              continue;
            }
            var u1 = u8Array[idx++] & 63;
            if ((u0 & 224) == 192) {
              str += String.fromCharCode((u0 & 31) << 6 | u1);
              continue;
            }
            var u2 = u8Array[idx++] & 63;
            if ((u0 & 240) == 224) {
              u0 = (u0 & 15) << 12 | u1 << 6 | u2;
            } else {
              u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;
            }
            if (u0 < 65536) {
              str += String.fromCharCode(u0);
            } else {
              var ch = u0 - 65536;
              str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
            }
          }
        }
        return str;
      }
      function UTF8ToString(ptr, maxBytesToRead) {
        return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
      }
      function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
        if (!(maxBytesToWrite > 0))
          return 0;
        var startIdx = outIdx;
        var endIdx = outIdx + maxBytesToWrite - 1;
        for (var i2 = 0; i2 < str.length; ++i2) {
          var u2 = str.charCodeAt(i2);
          if (u2 >= 55296 && u2 <= 57343) {
            var u1 = str.charCodeAt(++i2);
            u2 = 65536 + ((u2 & 1023) << 10) | u1 & 1023;
          }
          if (u2 <= 127) {
            if (outIdx >= endIdx)
              break;
            outU8Array[outIdx++] = u2;
          } else if (u2 <= 2047) {
            if (outIdx + 1 >= endIdx)
              break;
            outU8Array[outIdx++] = 192 | u2 >> 6;
            outU8Array[outIdx++] = 128 | u2 & 63;
          } else if (u2 <= 65535) {
            if (outIdx + 2 >= endIdx)
              break;
            outU8Array[outIdx++] = 224 | u2 >> 12;
            outU8Array[outIdx++] = 128 | u2 >> 6 & 63;
            outU8Array[outIdx++] = 128 | u2 & 63;
          } else {
            if (outIdx + 3 >= endIdx)
              break;
            outU8Array[outIdx++] = 240 | u2 >> 18;
            outU8Array[outIdx++] = 128 | u2 >> 12 & 63;
            outU8Array[outIdx++] = 128 | u2 >> 6 & 63;
            outU8Array[outIdx++] = 128 | u2 & 63;
          }
        }
        outU8Array[outIdx] = 0;
        return outIdx - startIdx;
      }
      function stringToUTF8(str, outPtr, maxBytesToWrite) {
        return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
      }
      typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : void 0;
      function writeArrayToMemory(array, buffer3) {
        HEAP8.set(array, buffer3);
      }
      var WASM_PAGE_SIZE = 65536;
      function alignUp(x2, multiple) {
        if (x2 % multiple > 0) {
          x2 += multiple - x2 % multiple;
        }
        return x2;
      }
      var buffer2, HEAP8, HEAPU8, HEAP32;
      function updateGlobalBufferAndViews(buf) {
        buffer2 = buf;
        Module["HEAP8"] = HEAP8 = new Int8Array(buf);
        Module["HEAP16"] = new Int16Array(buf);
        Module["HEAP32"] = HEAP32 = new Int32Array(buf);
        Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
        Module["HEAPU16"] = new Uint16Array(buf);
        Module["HEAPU32"] = new Uint32Array(buf);
        Module["HEAPF32"] = new Float32Array(buf);
        Module["HEAPF64"] = new Float64Array(buf);
      }
      var DYNAMIC_BASE = 5507664, DYNAMICTOP_PTR = 264624;
      var INITIAL_TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 157286400;
      if (Module["wasmMemory"]) {
        wasmMemory = Module["wasmMemory"];
      } else {
        wasmMemory = new WebAssembly.Memory({ "initial": INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE });
      }
      if (wasmMemory) {
        buffer2 = wasmMemory.buffer;
      }
      INITIAL_TOTAL_MEMORY = buffer2.byteLength;
      updateGlobalBufferAndViews(buffer2);
      HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;
      function callRuntimeCallbacks(callbacks2) {
        while (callbacks2.length > 0) {
          var callback = callbacks2.shift();
          if (typeof callback == "function") {
            callback();
            continue;
          }
          var func = callback.func;
          if (typeof func === "number") {
            if (callback.arg === void 0) {
              Module["dynCall_v"](func);
            } else {
              Module["dynCall_vi"](func, callback.arg);
            }
          } else {
            func(callback.arg === void 0 ? null : callback.arg);
          }
        }
      }
      var __ATPRERUN__ = [];
      var __ATINIT__ = [];
      var __ATMAIN__ = [];
      var __ATPOSTRUN__ = [];
      function preRun() {
        if (Module["preRun"]) {
          if (typeof Module["preRun"] == "function")
            Module["preRun"] = [Module["preRun"]];
          while (Module["preRun"].length) {
            addOnPreRun(Module["preRun"].shift());
          }
        }
        callRuntimeCallbacks(__ATPRERUN__);
      }
      function initRuntime() {
        callRuntimeCallbacks(__ATINIT__);
      }
      function preMain() {
        callRuntimeCallbacks(__ATMAIN__);
      }
      function postRun() {
        if (Module["postRun"]) {
          if (typeof Module["postRun"] == "function")
            Module["postRun"] = [Module["postRun"]];
          while (Module["postRun"].length) {
            addOnPostRun(Module["postRun"].shift());
          }
        }
        callRuntimeCallbacks(__ATPOSTRUN__);
      }
      function addOnPreRun(cb) {
        __ATPRERUN__.unshift(cb);
      }
      function addOnPostRun(cb) {
        __ATPOSTRUN__.unshift(cb);
      }
      var runDependencies = 0;
      var dependenciesFulfilled = null;
      function addRunDependency(id2) {
        runDependencies++;
        if (Module["monitorRunDependencies"]) {
          Module["monitorRunDependencies"](runDependencies);
        }
      }
      function removeRunDependency(id2) {
        runDependencies--;
        if (Module["monitorRunDependencies"]) {
          Module["monitorRunDependencies"](runDependencies);
        }
        if (runDependencies == 0) {
          if (dependenciesFulfilled) {
            var callback = dependenciesFulfilled;
            dependenciesFulfilled = null;
            callback();
          }
        }
      }
      Module["preloadedImages"] = {};
      Module["preloadedAudios"] = {};
      function abort(what) {
        if (Module["onAbort"]) {
          Module["onAbort"](what);
        }
        what += "";
        out(what);
        err(what);
        ABORT = true;
        what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
        throw new WebAssembly.RuntimeError(what);
      }
      var dataURIPrefix = "data:application/octet-stream;base64,";
      function isDataURI(filename) {
        return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;
      }
      var wasmBinaryFile = "onigasm.wasm";
      if (!isDataURI(wasmBinaryFile)) {
        wasmBinaryFile = locateFile(wasmBinaryFile);
      }
      function getBinary() {
        try {
          if (wasmBinary) {
            return new Uint8Array(wasmBinary);
          }
          if (readBinary) {
            return readBinary(wasmBinaryFile);
          } else {
            throw "both async and sync fetching of the wasm failed";
          }
        } catch (err2) {
          abort(err2);
        }
      }
      function getBinaryPromise() {
        if (!wasmBinary && ENVIRONMENT_IS_WORKER && typeof fetch === "function") {
          return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) {
            if (!response["ok"]) {
              throw "failed to load wasm binary file at '" + wasmBinaryFile + "'";
            }
            return response["arrayBuffer"]();
          }).catch(function() {
            return getBinary();
          });
        }
        return new Promise(function(resolve3, reject) {
          resolve3(getBinary());
        });
      }
      function createWasm() {
        var info = { "env": asmLibraryArg, "wasi_unstable": asmLibraryArg };
        function receiveInstance(instance, module2) {
          var exports3 = instance.exports;
          Module["asm"] = exports3;
          removeRunDependency();
        }
        addRunDependency();
        function receiveInstantiatedSource(output) {
          receiveInstance(output["instance"]);
        }
        function instantiateArrayBuffer(receiver) {
          return getBinaryPromise().then(function(binary2) {
            return WebAssembly.instantiate(binary2, info);
          }).then(receiver, function(reason) {
            err("failed to asynchronously prepare wasm: " + reason);
            abort(reason);
          });
        }
        function instantiateAsync() {
          if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && typeof fetch === "function") {
            fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) {
              var result = WebAssembly.instantiateStreaming(response, info);
              return result.then(receiveInstantiatedSource, function(reason) {
                err("wasm streaming compile failed: " + reason);
                err("falling back to ArrayBuffer instantiation");
                instantiateArrayBuffer(receiveInstantiatedSource);
              });
            });
          } else {
            return instantiateArrayBuffer(receiveInstantiatedSource);
          }
        }
        if (Module["instantiateWasm"]) {
          try {
            var exports2 = Module["instantiateWasm"](info, receiveInstance);
            return exports2;
          } catch (e) {
            err("Module.instantiateWasm callback failed with error: " + e);
            return false;
          }
        }
        instantiateAsync();
        return {};
      }
      __ATINIT__.push({ func: function() {
        ___wasm_call_ctors();
      } });
      function _abort() {
        abort();
      }
      function _emscripten_get_heap_size() {
        return HEAP8.length;
      }
      function _emscripten_get_sbrk_ptr() {
        return 264624;
      }
      function _emscripten_memcpy_big(dest, src, num2) {
        HEAPU8.set(HEAPU8.subarray(src, src + num2), dest);
      }
      function emscripten_realloc_buffer(size2) {
        try {
          wasmMemory.grow(size2 - buffer2.byteLength + 65535 >> 16);
          updateGlobalBufferAndViews(wasmMemory.buffer);
          return 1;
        } catch (e) {
        }
      }
      function _emscripten_resize_heap(requestedSize) {
        var oldSize = _emscripten_get_heap_size();
        var PAGE_MULTIPLE = 65536;
        var LIMIT = 2147483648 - PAGE_MULTIPLE;
        if (requestedSize > LIMIT) {
          return false;
        }
        var MIN_TOTAL_MEMORY = 16777216;
        var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);
        while (newSize < requestedSize) {
          if (newSize <= 536870912) {
            newSize = alignUp(2 * newSize, PAGE_MULTIPLE);
          } else {
            newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);
          }
        }
        var replacement = emscripten_realloc_buffer(newSize);
        if (!replacement) {
          return false;
        }
        return true;
      }
      var SYSCALLS = { buffers: [null, [], []], printChar: function(stream, curr) {
        var buffer3 = SYSCALLS.buffers[stream];
        if (curr === 0 || curr === 10) {
          (stream === 1 ? out : err)(UTF8ArrayToString(buffer3, 0));
          buffer3.length = 0;
        } else {
          buffer3.push(curr);
        }
      }, varargs: 0, get: function(varargs) {
        SYSCALLS.varargs += 4;
        var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
        return ret;
      }, getStr: function() {
        var ret = UTF8ToString(SYSCALLS.get());
        return ret;
      }, get64: function() {
        var low = SYSCALLS.get();
        SYSCALLS.get();
        return low;
      }, getZero: function() {
        SYSCALLS.get();
      } };
      function _fd_close(fd) {
        try {
          return 0;
        } catch (e) {
          if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
            abort(e);
          return e.errno;
        }
      }
      function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
        try {
          return 0;
        } catch (e) {
          if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
            abort(e);
          return e.errno;
        }
      }
      function _fd_write(fd, iov, iovcnt, pnum) {
        try {
          var num2 = 0;
          for (var i2 = 0; i2 < iovcnt; i2++) {
            var ptr = HEAP32[iov + i2 * 8 >> 2];
            var len = HEAP32[iov + (i2 * 8 + 4) >> 2];
            for (var j = 0; j < len; j++) {
              SYSCALLS.printChar(fd, HEAPU8[ptr + j]);
            }
            num2 += len;
          }
          HEAP32[pnum >> 2] = num2;
          return 0;
        } catch (e) {
          if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
            abort(e);
          return e.errno;
        }
      }
      function _setTempRet0($i) {
      }
      var asmLibraryArg = { "abort": _abort, "emscripten_get_sbrk_ptr": _emscripten_get_sbrk_ptr, "emscripten_memcpy_big": _emscripten_memcpy_big, "emscripten_resize_heap": _emscripten_resize_heap, "fd_close": _fd_close, "fd_seek": _fd_seek, "fd_write": _fd_write, "memory": wasmMemory, "setTempRet0": _setTempRet0, "table": wasmTable };
      var asm = createWasm();
      Module["asm"] = asm;
      var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() {
        return Module["asm"]["__wasm_call_ctors"].apply(null, arguments);
      };
      Module["_malloc"] = function() {
        return Module["asm"]["malloc"].apply(null, arguments);
      };
      Module["_free"] = function() {
        return Module["asm"]["free"].apply(null, arguments);
      };
      Module["_getLastError"] = function() {
        return Module["asm"]["getLastError"].apply(null, arguments);
      };
      Module["_compilePattern"] = function() {
        return Module["asm"]["compilePattern"].apply(null, arguments);
      };
      Module["_disposeCompiledPatterns"] = function() {
        return Module["asm"]["disposeCompiledPatterns"].apply(null, arguments);
      };
      Module["_findBestMatch"] = function() {
        return Module["asm"]["findBestMatch"].apply(null, arguments);
      };
      Module["___cxa_demangle"] = function() {
        return Module["asm"]["__cxa_demangle"].apply(null, arguments);
      };
      Module["_setThrew"] = function() {
        return Module["asm"]["setThrew"].apply(null, arguments);
      };
      var stackSave = Module["stackSave"] = function() {
        return Module["asm"]["stackSave"].apply(null, arguments);
      };
      var stackAlloc = Module["stackAlloc"] = function() {
        return Module["asm"]["stackAlloc"].apply(null, arguments);
      };
      var stackRestore = Module["stackRestore"] = function() {
        return Module["asm"]["stackRestore"].apply(null, arguments);
      };
      Module["__growWasmMemory"] = function() {
        return Module["asm"]["__growWasmMemory"].apply(null, arguments);
      };
      Module["dynCall_vi"] = function() {
        return Module["asm"]["dynCall_vi"].apply(null, arguments);
      };
      Module["dynCall_iiii"] = function() {
        return Module["asm"]["dynCall_iiii"].apply(null, arguments);
      };
      Module["dynCall_iiiii"] = function() {
        return Module["asm"]["dynCall_iiiii"].apply(null, arguments);
      };
      Module["dynCall_iii"] = function() {
        return Module["asm"]["dynCall_iii"].apply(null, arguments);
      };
      Module["dynCall_iidiiii"] = function() {
        return Module["asm"]["dynCall_iidiiii"].apply(null, arguments);
      };
      Module["dynCall_vii"] = function() {
        return Module["asm"]["dynCall_vii"].apply(null, arguments);
      };
      Module["dynCall_ii"] = function() {
        return Module["asm"]["dynCall_ii"].apply(null, arguments);
      };
      Module["dynCall_i"] = function() {
        return Module["asm"]["dynCall_i"].apply(null, arguments);
      };
      Module["dynCall_v"] = function() {
        return Module["asm"]["dynCall_v"].apply(null, arguments);
      };
      Module["dynCall_viiiiii"] = function() {
        return Module["asm"]["dynCall_viiiiii"].apply(null, arguments);
      };
      Module["dynCall_viiiii"] = function() {
        return Module["asm"]["dynCall_viiiii"].apply(null, arguments);
      };
      Module["dynCall_viiii"] = function() {
        return Module["asm"]["dynCall_viiii"].apply(null, arguments);
      };
      Module["dynCall_jiji"] = function() {
        return Module["asm"]["dynCall_jiji"].apply(null, arguments);
      };
      Module["asm"] = asm;
      Module["ccall"] = ccall;
      var calledRun;
      Module["then"] = function(func) {
        if (calledRun) {
          func(Module);
        } else {
          var old = Module["onRuntimeInitialized"];
          Module["onRuntimeInitialized"] = function() {
            if (old)
              old();
            func(Module);
          };
        }
        return Module;
      };
      dependenciesFulfilled = function runCaller() {
        if (!calledRun)
          run();
        if (!calledRun)
          dependenciesFulfilled = runCaller;
      };
      function run(args) {
        if (runDependencies > 0) {
          return;
        }
        preRun();
        if (runDependencies > 0)
          return;
        function doRun() {
          if (calledRun)
            return;
          calledRun = true;
          if (ABORT)
            return;
          initRuntime();
          preMain();
          if (Module["onRuntimeInitialized"])
            Module["onRuntimeInitialized"]();
          postRun();
        }
        if (Module["setStatus"]) {
          Module["setStatus"]("Running...");
          setTimeout(function() {
            setTimeout(function() {
              Module["setStatus"]("");
            }, 1);
            doRun();
          }, 1);
        } else {
          doRun();
        }
      }
      Module["run"] = run;
      if (Module["preInit"]) {
        if (typeof Module["preInit"] == "function")
          Module["preInit"] = [Module["preInit"]];
        while (Module["preInit"].length > 0) {
          Module["preInit"].pop()();
        }
      }
      run();
      return Onigasm2;
    };
  }();
  module.exports = Onigasm;
})(onigasm$1);
Object.defineProperty(onigasmH, "__esModule", { value: true });
const OnigasmModuleFactory = onigasmExports;
async function initModule(bytes) {
  return new Promise((resolve3, reject) => {
    const { log, warn: warn2, error: error2 } = console;
    OnigasmModuleFactory({
      instantiateWasm(imports, successCallback) {
        WebAssembly.instantiate(bytes, imports).then((output) => {
          successCallback(output.instance);
        }).catch((e) => {
          throw e;
        });
        return {};
      }
    }).then((moduleH) => {
      onigasmH.onigasmH = moduleH;
      resolve3();
    });
    if (typeof print !== "undefined") {
      console.log = log;
      console.error = error2;
      console.warn = warn2;
    }
  });
}
let isInitialized = false;
async function loadWASM$1(data) {
  if (isInitialized) {
    throw new Error(`Onigasm#init has been called and was succesful, subsequent calls are not allowed once initialized`);
  }
  if (typeof data === "string") {
    const arrayBuffer = await (await fetch(data)).arrayBuffer();
    await initModule(arrayBuffer);
  } else if (data instanceof ArrayBuffer) {
    await initModule(data);
  } else {
    throw new TypeError(`Expected a string (URL of .wasm file) or ArrayBuffer (.wasm file itself) as first parameter`);
  }
  isInitialized = true;
}
onigasmH.loadWASM = loadWASM$1;
var OnigRegExp$1 = {};
var OnigScanner$2 = {};
var iterator;
var hasRequiredIterator;
function requireIterator() {
  if (hasRequiredIterator)
    return iterator;
  hasRequiredIterator = 1;
  iterator = function(Yallist2) {
    Yallist2.prototype[Symbol.iterator] = function* () {
      for (let walker = this.head; walker; walker = walker.next) {
        yield walker.value;
      }
    };
  };
  return iterator;
}
var yallist = Yallist$1;
Yallist$1.Node = Node;
Yallist$1.create = Yallist$1;
function Yallist$1(list3) {
  var self2 = this;
  if (!(self2 instanceof Yallist$1)) {
    self2 = new Yallist$1();
  }
  self2.tail = null;
  self2.head = null;
  self2.length = 0;
  if (list3 && typeof list3.forEach === "function") {
    list3.forEach(function(item) {
      self2.push(item);
    });
  } else if (arguments.length > 0) {
    for (var i2 = 0, l2 = arguments.length; i2 < l2; i2++) {
      self2.push(arguments[i2]);
    }
  }
  return self2;
}
Yallist$1.prototype.removeNode = function(node) {
  if (node.list !== this) {
    throw new Error("removing node which does not belong to this list");
  }
  var next = node.next;
  var prev2 = node.prev;
  if (next) {
    next.prev = prev2;
  }
  if (prev2) {
    prev2.next = next;
  }
  if (node === this.head) {
    this.head = next;
  }
  if (node === this.tail) {
    this.tail = prev2;
  }
  node.list.length--;
  node.next = null;
  node.prev = null;
  node.list = null;
  return next;
};
Yallist$1.prototype.unshiftNode = function(node) {
  if (node === this.head) {
    return;
  }
  if (node.list) {
    node.list.removeNode(node);
  }
  var head = this.head;
  node.list = this;
  node.next = head;
  if (head) {
    head.prev = node;
  }
  this.head = node;
  if (!this.tail) {
    this.tail = node;
  }
  this.length++;
};
Yallist$1.prototype.pushNode = function(node) {
  if (node === this.tail) {
    return;
  }
  if (node.list) {
    node.list.removeNode(node);
  }
  var tail = this.tail;
  node.list = this;
  node.prev = tail;
  if (tail) {
    tail.next = node;
  }
  this.tail = node;
  if (!this.head) {
    this.head = node;
  }
  this.length++;
};
Yallist$1.prototype.push = function() {
  for (var i2 = 0, l2 = arguments.length; i2 < l2; i2++) {
    push(this, arguments[i2]);
  }
  return this.length;
};
Yallist$1.prototype.unshift = function() {
  for (var i2 = 0, l2 = arguments.length; i2 < l2; i2++) {
    unshift(this, arguments[i2]);
  }
  return this.length;
};
Yallist$1.prototype.pop = function() {
  if (!this.tail) {
    return void 0;
  }
  var res = this.tail.value;
  this.tail = this.tail.prev;
  if (this.tail) {
    this.tail.next = null;
  } else {
    this.head = null;
  }
  this.length--;
  return res;
};
Yallist$1.prototype.shift = function() {
  if (!this.head) {
    return void 0;
  }
  var res = this.head.value;
  this.head = this.head.next;
  if (this.head) {
    this.head.prev = null;
  } else {
    this.tail = null;
  }
  this.length--;
  return res;
};
Yallist$1.prototype.forEach = function(fn, thisp) {
  thisp = thisp || this;
  for (var walker = this.head, i2 = 0; walker !== null; i2++) {
    fn.call(thisp, walker.value, i2, this);
    walker = walker.next;
  }
};
Yallist$1.prototype.forEachReverse = function(fn, thisp) {
  thisp = thisp || this;
  for (var walker = this.tail, i2 = this.length - 1; walker !== null; i2--) {
    fn.call(thisp, walker.value, i2, this);
    walker = walker.prev;
  }
};
Yallist$1.prototype.get = function(n) {
  for (var i2 = 0, walker = this.head; walker !== null && i2 < n; i2++) {
    walker = walker.next;
  }
  if (i2 === n && walker !== null) {
    return walker.value;
  }
};
Yallist$1.prototype.getReverse = function(n) {
  for (var i2 = 0, walker = this.tail; walker !== null && i2 < n; i2++) {
    walker = walker.prev;
  }
  if (i2 === n && walker !== null) {
    return walker.value;
  }
};
Yallist$1.prototype.map = function(fn, thisp) {
  thisp = thisp || this;
  var res = new Yallist$1();
  for (var walker = this.head; walker !== null; ) {
    res.push(fn.call(thisp, walker.value, this));
    walker = walker.next;
  }
  return res;
};
Yallist$1.prototype.mapReverse = function(fn, thisp) {
  thisp = thisp || this;
  var res = new Yallist$1();
  for (var walker = this.tail; walker !== null; ) {
    res.push(fn.call(thisp, walker.value, this));
    walker = walker.prev;
  }
  return res;
};
Yallist$1.prototype.reduce = function(fn, initial) {
  var acc;
  var walker = this.head;
  if (arguments.length > 1) {
    acc = initial;
  } else if (this.head) {
    walker = this.head.next;
    acc = this.head.value;
  } else {
    throw new TypeError("Reduce of empty list with no initial value");
  }
  for (var i2 = 0; walker !== null; i2++) {
    acc = fn(acc, walker.value, i2);
    walker = walker.next;
  }
  return acc;
};
Yallist$1.prototype.reduceReverse = function(fn, initial) {
  var acc;
  var walker = this.tail;
  if (arguments.length > 1) {
    acc = initial;
  } else if (this.tail) {
    walker = this.tail.prev;
    acc = this.tail.value;
  } else {
    throw new TypeError("Reduce of empty list with no initial value");
  }
  for (var i2 = this.length - 1; walker !== null; i2--) {
    acc = fn(acc, walker.value, i2);
    walker = walker.prev;
  }
  return acc;
};
Yallist$1.prototype.toArray = function() {
  var arr = new Array(this.length);
  for (var i2 = 0, walker = this.head; walker !== null; i2++) {
    arr[i2] = walker.value;
    walker = walker.next;
  }
  return arr;
};
Yallist$1.prototype.toArrayReverse = function() {
  var arr = new Array(this.length);
  for (var i2 = 0, walker = this.tail; walker !== null; i2++) {
    arr[i2] = walker.value;
    walker = walker.prev;
  }
  return arr;
};
Yallist$1.prototype.slice = function(from, to) {
  to = to || this.length;
  if (to < 0) {
    to += this.length;
  }
  from = from || 0;
  if (from < 0) {
    from += this.length;
  }
  var ret = new Yallist$1();
  if (to < from || to < 0) {
    return ret;
  }
  if (from < 0) {
    from = 0;
  }
  if (to > this.length) {
    to = this.length;
  }
  for (var i2 = 0, walker = this.head; walker !== null && i2 < from; i2++) {
    walker = walker.next;
  }
  for (; walker !== null && i2 < to; i2++, walker = walker.next) {
    ret.push(walker.value);
  }
  return ret;
};
Yallist$1.prototype.sliceReverse = function(from, to) {
  to = to || this.length;
  if (to < 0) {
    to += this.length;
  }
  from = from || 0;
  if (from < 0) {
    from += this.length;
  }
  var ret = new Yallist$1();
  if (to < from || to < 0) {
    return ret;
  }
  if (from < 0) {
    from = 0;
  }
  if (to > this.length) {
    to = this.length;
  }
  for (var i2 = this.length, walker = this.tail; walker !== null && i2 > to; i2--) {
    walker = walker.prev;
  }
  for (; walker !== null && i2 > from; i2--, walker = walker.prev) {
    ret.push(walker.value);
  }
  return ret;
};
Yallist$1.prototype.splice = function(start, deleteCount) {
  if (start > this.length) {
    start = this.length - 1;
  }
  if (start < 0) {
    start = this.length + start;
  }
  for (var i2 = 0, walker = this.head; walker !== null && i2 < start; i2++) {
    walker = walker.next;
  }
  var ret = [];
  for (var i2 = 0; walker && i2 < deleteCount; i2++) {
    ret.push(walker.value);
    walker = this.removeNode(walker);
  }
  if (walker === null) {
    walker = this.tail;
  }
  if (walker !== this.head && walker !== this.tail) {
    walker = walker.prev;
  }
  for (var i2 = 2; i2 < arguments.length; i2++) {
    walker = insert(this, walker, arguments[i2]);
  }
  return ret;
};
Yallist$1.prototype.reverse = function() {
  var head = this.head;
  var tail = this.tail;
  for (var walker = head; walker !== null; walker = walker.prev) {
    var p2 = walker.prev;
    walker.prev = walker.next;
    walker.next = p2;
  }
  this.head = tail;
  this.tail = head;
  return this;
};
function insert(self2, node, value) {
  var inserted = node === self2.head ? new Node(value, null, node, self2) : new Node(value, node, node.next, self2);
  if (inserted.next === null) {
    self2.tail = inserted;
  }
  if (inserted.prev === null) {
    self2.head = inserted;
  }
  self2.length++;
  return inserted;
}
function push(self2, item) {
  self2.tail = new Node(item, self2.tail, null, self2);
  if (!self2.head) {
    self2.head = self2.tail;
  }
  self2.length++;
}
function unshift(self2, item) {
  self2.head = new Node(item, null, self2.head, self2);
  if (!self2.tail) {
    self2.tail = self2.head;
  }
  self2.length++;
}
function Node(value, prev2, next, list3) {
  if (!(this instanceof Node)) {
    return new Node(value, prev2, next, list3);
  }
  this.list = list3;
  this.value = value;
  if (prev2) {
    prev2.next = this;
    this.prev = prev2;
  } else {
    this.prev = null;
  }
  if (next) {
    next.prev = this;
    this.next = next;
  } else {
    this.next = null;
  }
}
try {
  requireIterator()(Yallist$1);
} catch (er) {
}
const Yallist = yallist;
const MAX = Symbol("max");
const LENGTH = Symbol("length");
const LENGTH_CALCULATOR = Symbol("lengthCalculator");
const ALLOW_STALE = Symbol("allowStale");
const MAX_AGE = Symbol("maxAge");
const DISPOSE = Symbol("dispose");
const NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet");
const LRU_LIST = Symbol("lruList");
const CACHE = Symbol("cache");
const UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet");
const naiveLength = () => 1;
let LRUCache$1 = class LRUCache {
  constructor(options2) {
    if (typeof options2 === "number")
      options2 = { max: options2 };
    if (!options2)
      options2 = {};
    if (options2.max && (typeof options2.max !== "number" || options2.max < 0))
      throw new TypeError("max must be a non-negative number");
    this[MAX] = options2.max || Infinity;
    const lc = options2.length || naiveLength;
    this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc;
    this[ALLOW_STALE] = options2.stale || false;
    if (options2.maxAge && typeof options2.maxAge !== "number")
      throw new TypeError("maxAge must be a number");
    this[MAX_AGE] = options2.maxAge || 0;
    this[DISPOSE] = options2.dispose;
    this[NO_DISPOSE_ON_SET] = options2.noDisposeOnSet || false;
    this[UPDATE_AGE_ON_GET] = options2.updateAgeOnGet || false;
    this.reset();
  }
  // resize the cache when the max changes.
  set max(mL) {
    if (typeof mL !== "number" || mL < 0)
      throw new TypeError("max must be a non-negative number");
    this[MAX] = mL || Infinity;
    trim(this);
  }
  get max() {
    return this[MAX];
  }
  set allowStale(allowStale) {
    this[ALLOW_STALE] = !!allowStale;
  }
  get allowStale() {
    return this[ALLOW_STALE];
  }
  set maxAge(mA) {
    if (typeof mA !== "number")
      throw new TypeError("maxAge must be a non-negative number");
    this[MAX_AGE] = mA;
    trim(this);
  }
  get maxAge() {
    return this[MAX_AGE];
  }
  // resize the cache when the lengthCalculator changes.
  set lengthCalculator(lC) {
    if (typeof lC !== "function")
      lC = naiveLength;
    if (lC !== this[LENGTH_CALCULATOR]) {
      this[LENGTH_CALCULATOR] = lC;
      this[LENGTH] = 0;
      this[LRU_LIST].forEach((hit) => {
        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
        this[LENGTH] += hit.length;
      });
    }
    trim(this);
  }
  get lengthCalculator() {
    return this[LENGTH_CALCULATOR];
  }
  get length() {
    return this[LENGTH];
  }
  get itemCount() {
    return this[LRU_LIST].length;
  }
  rforEach(fn, thisp) {
    thisp = thisp || this;
    for (let walker = this[LRU_LIST].tail; walker !== null; ) {
      const prev2 = walker.prev;
      forEachStep(this, fn, walker, thisp);
      walker = prev2;
    }
  }
  forEach(fn, thisp) {
    thisp = thisp || this;
    for (let walker = this[LRU_LIST].head; walker !== null; ) {
      const next = walker.next;
      forEachStep(this, fn, walker, thisp);
      walker = next;
    }
  }
  keys() {
    return this[LRU_LIST].toArray().map((k) => k.key);
  }
  values() {
    return this[LRU_LIST].toArray().map((k) => k.value);
  }
  reset() {
    if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
      this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value));
    }
    this[CACHE] = /* @__PURE__ */ new Map();
    this[LRU_LIST] = new Yallist();
    this[LENGTH] = 0;
  }
  dump() {
    return this[LRU_LIST].map((hit) => isStale(this, hit) ? false : {
      k: hit.key,
      v: hit.value,
      e: hit.now + (hit.maxAge || 0)
    }).toArray().filter((h2) => h2);
  }
  dumpLru() {
    return this[LRU_LIST];
  }
  set(key, value, maxAge) {
    maxAge = maxAge || this[MAX_AGE];
    if (maxAge && typeof maxAge !== "number")
      throw new TypeError("maxAge must be a number");
    const now = maxAge ? Date.now() : 0;
    const len = this[LENGTH_CALCULATOR](value, key);
    if (this[CACHE].has(key)) {
      if (len > this[MAX]) {
        del(this, this[CACHE].get(key));
        return false;
      }
      const node = this[CACHE].get(key);
      const item = node.value;
      if (this[DISPOSE]) {
        if (!this[NO_DISPOSE_ON_SET])
          this[DISPOSE](key, item.value);
      }
      item.now = now;
      item.maxAge = maxAge;
      item.value = value;
      this[LENGTH] += len - item.length;
      item.length = len;
      this.get(key);
      trim(this);
      return true;
    }
    const hit = new Entry(key, value, len, now, maxAge);
    if (hit.length > this[MAX]) {
      if (this[DISPOSE])
        this[DISPOSE](key, value);
      return false;
    }
    this[LENGTH] += hit.length;
    this[LRU_LIST].unshift(hit);
    this[CACHE].set(key, this[LRU_LIST].head);
    trim(this);
    return true;
  }
  has(key) {
    if (!this[CACHE].has(key))
      return false;
    const hit = this[CACHE].get(key).value;
    return !isStale(this, hit);
  }
  get(key) {
    return get(this, key, true);
  }
  peek(key) {
    return get(this, key, false);
  }
  pop() {
    const node = this[LRU_LIST].tail;
    if (!node)
      return null;
    del(this, node);
    return node.value;
  }
  del(key) {
    del(this, this[CACHE].get(key));
  }
  load(arr) {
    this.reset();
    const now = Date.now();
    for (let l2 = arr.length - 1; l2 >= 0; l2--) {
      const hit = arr[l2];
      const expiresAt = hit.e || 0;
      if (expiresAt === 0)
        this.set(hit.k, hit.v);
      else {
        const maxAge = expiresAt - now;
        if (maxAge > 0) {
          this.set(hit.k, hit.v, maxAge);
        }
      }
    }
  }
  prune() {
    this[CACHE].forEach((value, key) => get(this, key, false));
  }
};
const get = (self2, key, doUse) => {
  const node = self2[CACHE].get(key);
  if (node) {
    const hit = node.value;
    if (isStale(self2, hit)) {
      del(self2, node);
      if (!self2[ALLOW_STALE])
        return void 0;
    } else {
      if (doUse) {
        if (self2[UPDATE_AGE_ON_GET])
          node.value.now = Date.now();
        self2[LRU_LIST].unshiftNode(node);
      }
    }
    return hit.value;
  }
};
const isStale = (self2, hit) => {
  if (!hit || !hit.maxAge && !self2[MAX_AGE])
    return false;
  const diff = Date.now() - hit.now;
  return hit.maxAge ? diff > hit.maxAge : self2[MAX_AGE] && diff > self2[MAX_AGE];
};
const trim = (self2) => {
  if (self2[LENGTH] > self2[MAX]) {
    for (let walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) {
      const prev2 = walker.prev;
      del(self2, walker);
      walker = prev2;
    }
  }
};
const del = (self2, node) => {
  if (node) {
    const hit = node.value;
    if (self2[DISPOSE])
      self2[DISPOSE](hit.key, hit.value);
    self2[LENGTH] -= hit.length;
    self2[CACHE].delete(hit.key);
    self2[LRU_LIST].removeNode(node);
  }
};
class Entry {
  constructor(key, value, length2, now, maxAge) {
    this.key = key;
    this.value = value;
    this.length = length2;
    this.now = now;
    this.maxAge = maxAge || 0;
  }
}
const forEachStep = (self2, fn, node, thisp) => {
  let hit = node.value;
  if (isStale(self2, hit)) {
    del(self2, node);
    if (!self2[ALLOW_STALE])
      hit = void 0;
  }
  if (hit)
    fn.call(thisp, hit.value, hit.key, self2);
};
var lruCache = LRUCache$1;
var OnigString$2 = {};
Object.defineProperty(OnigString$2, "__esModule", { value: true });
let OnigString$1 = class OnigString {
  constructor(content) {
    this.substring = (start, end) => {
      return this.source.substring(start, end);
    };
    this.toString = (start, end) => {
      return this.source;
    };
    if (typeof content !== "string") {
      throw new TypeError("Argument must be a string");
    }
    this.source = content;
    this._utf8Bytes = null;
    this._utf8Indexes = null;
  }
  get utf8Bytes() {
    if (!this._utf8Bytes) {
      this.encode();
    }
    return this._utf8Bytes;
  }
  /**
   * Returns `null` if all utf8 offsets match utf-16 offset (content has no multi byte characters)
   */
  get utf8Indexes() {
    if (!this._utf8Bytes) {
      this.encode();
    }
    return this._utf8Indexes;
  }
  get content() {
    return this.source;
  }
  get length() {
    return this.source.length;
  }
  get hasMultiByteCharacters() {
    return this.utf8Indexes !== null;
  }
  convertUtf8OffsetToUtf16(utf8Offset) {
    if (utf8Offset < 0) {
      return 0;
    }
    const utf8Array = this._utf8Bytes;
    if (utf8Offset >= utf8Array.length - 1) {
      return this.source.length;
    }
    const utf8OffsetMap = this.utf8Indexes;
    if (utf8OffsetMap && utf8Offset >= this._mappingTableStartOffset) {
      return findFirstInSorted(utf8OffsetMap, utf8Offset - this._mappingTableStartOffset) + this._mappingTableStartOffset;
    }
    return utf8Offset;
  }
  convertUtf16OffsetToUtf8(utf16Offset) {
    if (utf16Offset < 0) {
      return 0;
    }
    const utf8Array = this._utf8Bytes;
    if (utf16Offset >= this.source.length) {
      return utf8Array.length - 1;
    }
    const utf8OffsetMap = this.utf8Indexes;
    if (utf8OffsetMap && utf16Offset >= this._mappingTableStartOffset) {
      return utf8OffsetMap[utf16Offset - this._mappingTableStartOffset] + this._mappingTableStartOffset;
    }
    return utf16Offset;
  }
  encode() {
    const str = this.source;
    const n = str.length;
    let utf16OffsetToUtf8;
    let utf8Offset = 0;
    let mappingTableStartOffset = 0;
    function createOffsetTable(startOffset) {
      const maxUtf8Len = (n - startOffset) * 3;
      if (maxUtf8Len <= 255) {
        utf16OffsetToUtf8 = new Uint8Array(n - startOffset);
      } else if (maxUtf8Len <= 65535) {
        utf16OffsetToUtf8 = new Uint16Array(n - startOffset);
      } else {
        utf16OffsetToUtf8 = new Uint32Array(n - startOffset);
      }
      mappingTableStartOffset = startOffset;
      utf16OffsetToUtf8[utf8Offset++] = 0;
    }
    const u8view = new Uint8Array(
      n * 3 + 1
      /** null termination character */
    );
    let ptrHead = 0;
    let i2 = 0;
    while (i2 < str.length) {
      let codepoint;
      const c2 = str.charCodeAt(i2);
      if (utf16OffsetToUtf8) {
        utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset;
      }
      if (c2 < 55296 || c2 > 57343) {
        codepoint = c2;
      } else if (c2 >= 56320) {
        codepoint = 65533;
      } else {
        if (i2 === n - 1) {
          codepoint = 65533;
        } else {
          const d2 = str.charCodeAt(i2 + 1);
          if (56320 <= d2 && d2 <= 57343) {
            if (!utf16OffsetToUtf8) {
              createOffsetTable(i2);
            }
            const a2 = c2 & 1023;
            const b2 = d2 & 1023;
            codepoint = 65536 + (a2 << 10) + b2;
            i2 += 1;
            utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset;
          } else {
            codepoint = 65533;
          }
        }
      }
      let bytesRequiredToEncode;
      let offset2;
      if (codepoint <= 127) {
        bytesRequiredToEncode = 1;
        offset2 = 0;
      } else if (codepoint <= 2047) {
        bytesRequiredToEncode = 2;
        offset2 = 192;
      } else if (codepoint <= 65535) {
        bytesRequiredToEncode = 3;
        offset2 = 224;
      } else {
        bytesRequiredToEncode = 4;
        offset2 = 240;
      }
      if (bytesRequiredToEncode === 1) {
        u8view[ptrHead++] = codepoint;
      } else {
        if (!utf16OffsetToUtf8) {
          createOffsetTable(ptrHead);
        }
        u8view[ptrHead++] = (codepoint >> 6 * --bytesRequiredToEncode) + offset2;
        while (bytesRequiredToEncode > 0) {
          const temp = codepoint >> 6 * (bytesRequiredToEncode - 1);
          u8view[ptrHead++] = 128 | temp & 63;
          bytesRequiredToEncode -= 1;
        }
      }
      i2 += 1;
    }
    const utf8 = u8view.slice(0, ptrHead + 1);
    utf8[ptrHead] = 0;
    this._utf8Bytes = utf8;
    if (utf16OffsetToUtf8) {
      this._utf8Indexes = utf16OffsetToUtf8;
      this._mappingTableStartOffset = mappingTableStartOffset;
    }
  }
};
function findFirstInSorted(array, i2) {
  let low = 0;
  let high = array.length;
  if (high === 0) {
    return 0;
  }
  while (low < high) {
    const mid2 = Math.floor((low + high) / 2);
    if (array[mid2] >= i2) {
      high = mid2;
    } else {
      low = mid2 + 1;
    }
  }
  while (low > 0 && (low >= array.length || array[low] > i2)) {
    low--;
  }
  if (low > 0 && array[low] === array[low - 1]) {
    low--;
  }
  return low;
}
OnigString$2.default = OnigString$1;
Object.defineProperty(OnigScanner$2, "__esModule", { value: true });
const LRUCache2 = lruCache;
const onigasmH_1$1 = onigasmH;
const OnigString_1$1 = OnigString$2;
function mallocAndWriteString(str) {
  const ptr = onigasmH_1$1.onigasmH._malloc(str.utf8Bytes.length);
  onigasmH_1$1.onigasmH.HEAPU8.set(str.utf8Bytes, ptr);
  return ptr;
}
function convertUTF8BytesFromPtrToString(ptr) {
  const chars = [];
  let i2 = 0;
  while (onigasmH_1$1.onigasmH.HEAPU8[ptr] !== 0) {
    chars[i2++] = onigasmH_1$1.onigasmH.HEAPU8[ptr++];
  }
  return chars.join();
}
const cache = new LRUCache2({
  dispose: (scanner, info) => {
    const regexTPtrsPtr = onigasmH_1$1.onigasmH._malloc(info.regexTPtrs.length);
    onigasmH_1$1.onigasmH.HEAPU8.set(info.regexTPtrs, regexTPtrsPtr);
    const status = onigasmH_1$1.onigasmH._disposeCompiledPatterns(regexTPtrsPtr, scanner.patterns.length);
    if (status !== 0) {
      const errMessage = convertUTF8BytesFromPtrToString(onigasmH_1$1.onigasmH._getLastError());
      throw new Error(errMessage);
    }
    onigasmH_1$1.onigasmH._free(regexTPtrsPtr);
  },
  max: 1e3
});
let OnigScanner$1 = class OnigScanner {
  /**
   * Create a new scanner with the given patterns
   * @param patterns  An array of string patterns
   */
  constructor(patterns2) {
    if (onigasmH_1$1.onigasmH === null) {
      throw new Error(`Onigasm has not been initialized, call loadWASM from 'onigasm' exports before using any other API`);
    }
    for (let i2 = 0; i2 < patterns2.length; i2++) {
      const pattern = patterns2[i2];
      if (typeof pattern !== "string") {
        throw new TypeError(`First parameter to OnigScanner constructor must be array of (pattern) strings`);
      }
    }
    this.sources = patterns2.slice();
  }
  get patterns() {
    return this.sources.slice();
  }
  /**
   * Find the next match from a given position
   * @param string The string to search
   * @param startPosition The optional position to start at, defaults to 0
   * @param callback The (error, match) function to call when done, match will null when there is no match
   */
  findNextMatch(string, startPosition, callback) {
    if (startPosition == null) {
      startPosition = 0;
    }
    if (typeof startPosition === "function") {
      callback = startPosition;
      startPosition = 0;
    }
    try {
      const match3 = this.findNextMatchSync(string, startPosition);
      callback(null, match3);
    } catch (error2) {
      callback(error2);
    }
  }
  /**
   * Find the next match from a given position
   * @param string The string to search
   * @param startPosition The optional position to start at, defaults to 0
   */
  findNextMatchSync(string, startPosition) {
    if (startPosition == null) {
      startPosition = 0;
    }
    startPosition = this.convertToNumber(startPosition);
    let onigNativeInfo = cache.get(this);
    let status = 0;
    if (!onigNativeInfo) {
      const regexTAddrRecieverPtr = onigasmH_1$1.onigasmH._malloc(4);
      const regexTPtrs = [];
      for (let i2 = 0; i2 < this.sources.length; i2++) {
        const pattern = this.sources[i2];
        const patternStrPtr = mallocAndWriteString(new OnigString_1$1.default(pattern));
        status = onigasmH_1$1.onigasmH._compilePattern(patternStrPtr, regexTAddrRecieverPtr);
        if (status !== 0) {
          const errMessage = convertUTF8BytesFromPtrToString(onigasmH_1$1.onigasmH._getLastError());
          throw new Error(errMessage);
        }
        const regexTAddress = onigasmH_1$1.onigasmH.HEAP32[regexTAddrRecieverPtr / 4];
        regexTPtrs.push(regexTAddress);
        onigasmH_1$1.onigasmH._free(patternStrPtr);
      }
      onigNativeInfo = {
        regexTPtrs: new Uint8Array(Uint32Array.from(regexTPtrs).buffer)
      };
      onigasmH_1$1.onigasmH._free(regexTAddrRecieverPtr);
      cache.set(this, onigNativeInfo);
    }
    const onigString = string instanceof OnigString_1$1.default ? string : new OnigString_1$1.default(this.convertToString(string));
    const strPtr = mallocAndWriteString(onigString);
    const resultInfoReceiverPtr = onigasmH_1$1.onigasmH._malloc(8);
    const regexTPtrsPtr = onigasmH_1$1.onigasmH._malloc(onigNativeInfo.regexTPtrs.length);
    onigasmH_1$1.onigasmH.HEAPU8.set(onigNativeInfo.regexTPtrs, regexTPtrsPtr);
    status = onigasmH_1$1.onigasmH._findBestMatch(
      // regex_t **patterns
      regexTPtrsPtr,
      // int patternCount
      this.sources.length,
      // UChar *utf8String
      strPtr,
      // int strLen
      onigString.utf8Bytes.length - 1,
      // int startOffset
      onigString.convertUtf16OffsetToUtf8(startPosition),
      // int *resultInfo
      resultInfoReceiverPtr
    );
    if (status !== 0) {
      const errMessage = convertUTF8BytesFromPtrToString(onigasmH_1$1.onigasmH._getLastError());
      throw new Error(errMessage);
    }
    const [
      // The index of pattern which matched the string at least offset from 0 (start)
      bestPatternIdx,
      // Begin address of capture info encoded as pairs
      // like [start, end, start, end, start, end, ...]
      //  - first start-end pair is entire match (index 0 and 1)
      //  - subsequent pairs are capture groups (2, 3 = first capture group, 4, 5 = second capture group and so on)
      encodedResultBeginAddress,
      // Length of the [start, end, ...] sequence so we know how much memory to read (will always be 0 or multiple of 2)
      encodedResultLength
    ] = new Uint32Array(onigasmH_1$1.onigasmH.HEAPU32.buffer, resultInfoReceiverPtr, 3);
    onigasmH_1$1.onigasmH._free(strPtr);
    onigasmH_1$1.onigasmH._free(resultInfoReceiverPtr);
    onigasmH_1$1.onigasmH._free(regexTPtrsPtr);
    if (encodedResultLength > 0) {
      const encodedResult = new Uint32Array(onigasmH_1$1.onigasmH.HEAPU32.buffer, encodedResultBeginAddress, encodedResultLength);
      const captureIndices = [];
      let i2 = 0;
      let captureIdx = 0;
      while (i2 < encodedResultLength) {
        const index2 = captureIdx++;
        let start = encodedResult[i2++];
        let end = encodedResult[i2++];
        if (onigString.hasMultiByteCharacters) {
          start = onigString.convertUtf8OffsetToUtf16(start);
          end = onigString.convertUtf8OffsetToUtf16(end);
        }
        captureIndices.push({
          end,
          index: index2,
          length: end - start,
          start
        });
      }
      onigasmH_1$1.onigasmH._free(encodedResultBeginAddress);
      return {
        captureIndices,
        index: bestPatternIdx,
        scanner: this
      };
    }
    return null;
  }
  convertToString(value) {
    if (value === void 0) {
      return "undefined";
    }
    if (value === null) {
      return "null";
    }
    if (value instanceof OnigString_1$1.default) {
      return value.content;
    }
    return value.toString();
  }
  convertToNumber(value) {
    value = parseInt(value, 10);
    if (!isFinite(value)) {
      value = 0;
    }
    value = Math.max(value, 0);
    return value;
  }
};
OnigScanner$2.OnigScanner = OnigScanner$1;
OnigScanner$2.default = OnigScanner$1;
Object.defineProperty(OnigRegExp$1, "__esModule", { value: true });
const OnigScanner_1$1 = OnigScanner$2;
class OnigRegExp {
  /**
   * Create a new regex with the given pattern
   * @param source A string pattern
   */
  constructor(source) {
    this.source = source;
    try {
      this.scanner = new OnigScanner_1$1.default([this.source]);
    } catch (error2) {
    }
  }
  /**
   * Synchronously search the string for a match starting at the given position
   * @param string The string to search
   * @param startPosition The optional position to start the search at, defaults to `0`
   */
  searchSync(string, startPosition) {
    let match3;
    if (startPosition == null) {
      startPosition = 0;
    }
    match3 = this.scanner.findNextMatchSync(string, startPosition);
    return this.captureIndicesForMatch(string, match3);
  }
  /**
   * Search the string for a match starting at the given position
   * @param string The string to search
   * @param startPosition The optional position to start the search at, defaults to `0`
   * @param callback The `(error, match)` function to call when done, match will be null if no matches were found. match will be an array of objects for each matched group on a successful search
   */
  search(string, startPosition, callback) {
    if (startPosition == null) {
      startPosition = 0;
    }
    if (typeof startPosition === "function") {
      callback = startPosition;
      startPosition = 0;
    }
    try {
      const ret = this.searchSync(string, startPosition);
      callback(null, ret);
    } catch (error2) {
      callback(error2);
    }
  }
  /**
   * Synchronously test if this regular expression matches the given string
   * @param string The string to test against
   */
  testSync(string) {
    if (typeof this.source === "boolean" || typeof string === "boolean") {
      return this.source === string;
    }
    return this.searchSync(string) != null;
  }
  /**
   * Test if this regular expression matches the given string
   * @param string The string to test against
   * @param callback The (error, matches) function to call when done, matches will be true if at least one match is found, false otherwise
   */
  test(string, callback) {
    if (typeof callback !== "function") {
      callback = () => {
      };
    }
    try {
      callback(null, this.testSync(string));
    } catch (error2) {
      callback(error2);
    }
  }
  captureIndicesForMatch(string, match3) {
    if (match3 != null) {
      const { captureIndices } = match3;
      let capture;
      string = this.scanner.convertToString(string);
      for (let i2 = 0; i2 < captureIndices.length; i2++) {
        capture = captureIndices[i2];
        capture.match = string.slice(capture.start, capture.end);
      }
      return captureIndices;
    } else {
      return null;
    }
  }
}
OnigRegExp$1.default = OnigRegExp;
Object.defineProperty(lib$2, "__esModule", { value: true });
const onigasmH_1 = onigasmH;
var loadWASM = lib$2.loadWASM = onigasmH_1.loadWASM;
const OnigRegExp_1 = OnigRegExp$1;
lib$2.OnigRegExp = OnigRegExp_1.default;
const OnigScanner_1 = OnigScanner$2;
var OnigScanner2 = lib$2.OnigScanner = OnigScanner_1.default;
const OnigString_1 = OnigString$2;
var OnigString2 = lib$2.OnigString = OnigString_1.default;
var mainExports = {};
var main = {
  get exports() {
    return mainExports;
  },
  set exports(v) {
    mainExports = v;
  }
};
(function(module, exports) {
  !function(e, t2) {
    module.exports = t2();
  }(commonjsGlobal$1, function() {
    return function(e) {
      var t2 = {};
      function n(r2) {
        if (t2[r2])
          return t2[r2].exports;
        var i2 = t2[r2] = { i: r2, l: false, exports: {} };
        return e[r2].call(i2.exports, i2, i2.exports, n), i2.l = true, i2.exports;
      }
      return n.m = e, n.c = t2, n.d = function(e2, t3, r2) {
        n.o(e2, t3) || Object.defineProperty(e2, t3, { enumerable: true, get: r2 });
      }, n.r = function(e2) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e2, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e2, "__esModule", { value: true });
      }, n.t = function(e2, t3) {
        if (1 & t3 && (e2 = n(e2)), 8 & t3)
          return e2;
        if (4 & t3 && "object" == typeof e2 && e2 && e2.__esModule)
          return e2;
        var r2 = /* @__PURE__ */ Object.create(null);
        if (n.r(r2), Object.defineProperty(r2, "default", { enumerable: true, value: e2 }), 2 & t3 && "string" != typeof e2)
          for (var i2 in e2)
            n.d(r2, i2, function(t4) {
              return e2[t4];
            }.bind(null, i2));
        return r2;
      }, n.n = function(e2) {
        var t3 = e2 && e2.__esModule ? function() {
          return e2.default;
        } : function() {
          return e2;
        };
        return n.d(t3, "a", t3), t3;
      }, n.o = function(e2, t3) {
        return Object.prototype.hasOwnProperty.call(e2, t3);
      }, n.p = "", n(n.s = 3);
    }([function(e, t2, n) {
      Object.defineProperty(t2, "__esModule", { value: true });
      var r2 = n(1), i2 = n(5), o2 = n(6), s2 = n(2), a2 = "undefined" == typeof performance ? function() {
        return Date.now();
      } : function() {
        return performance.now();
      };
      t2.createGrammar = function(e2, t3, n2, r3, i3, o3) {
        return new v(e2, t3, n2, r3, i3, o3);
      };
      var c2 = function(e2) {
        this.scopeName = e2;
      };
      t2.FullScopeDependency = c2;
      var u2 = function() {
        function e2(e3, t3) {
          this.scopeName = e3, this.include = t3;
        }
        return e2.prototype.toKey = function() {
          return this.scopeName + "#" + this.include;
        }, e2;
      }();
      t2.PartialScopeDependency = u2;
      var l2 = function() {
        function e2() {
          this.full = [], this.partial = [], this.visitedRule = /* @__PURE__ */ new Set(), this._seenFull = /* @__PURE__ */ new Set(), this._seenPartial = /* @__PURE__ */ new Set();
        }
        return e2.prototype.add = function(e3) {
          e3 instanceof c2 ? this._seenFull.has(e3.scopeName) || (this._seenFull.add(e3.scopeName), this.full.push(e3)) : this._seenPartial.has(e3.toKey()) || (this._seenPartial.add(e3.toKey()), this.partial.push(e3));
        }, e2;
      }();
      function h2(e2, t3, n2, i3, o3) {
        for (var s3 = 0, a3 = i3; s3 < a3.length; s3++) {
          var l3 = a3[s3];
          if (!e2.visitedRule.has(l3)) {
            e2.visitedRule.add(l3);
            var d3 = l3.repository ? r2.mergeObjects({}, o3, l3.repository) : o3;
            Array.isArray(l3.patterns) && h2(e2, t3, n2, l3.patterns, d3);
            var g2 = l3.include;
            if (g2)
              if ("$base" === g2 || g2 === t3.scopeName)
                f2(e2, t3, t3);
              else if ("$self" === g2 || g2 === n2.scopeName)
                f2(e2, t3, n2);
              else if ("#" === g2.charAt(0))
                p2(e2, t3, n2, g2.substring(1), d3);
              else {
                var m3 = g2.indexOf("#");
                if (m3 >= 0) {
                  var _3 = g2.substring(0, m3), y3 = g2.substring(m3 + 1);
                  _3 === t3.scopeName ? p2(e2, t3, t3, y3, d3) : _3 === n2.scopeName ? p2(e2, t3, n2, y3, d3) : e2.add(new u2(_3, g2.substring(m3 + 1)));
                } else
                  e2.add(new c2(g2));
              }
          }
        }
      }
      function p2(e2, t3, n2, r3, i3) {
        (void 0 === i3 && (i3 = n2.repository), i3 && i3[r3]) && h2(e2, t3, n2, [i3[r3]], i3);
      }
      function f2(e2, t3, n2) {
        if (n2.patterns && Array.isArray(n2.patterns) && h2(e2, t3, n2, n2.patterns, n2.repository), n2.injections) {
          var r3 = [];
          for (var i3 in n2.injections)
            r3.push(n2.injections[i3]);
          h2(e2, t3, n2, r3, n2.repository);
        }
      }
      function d2(e2, t3) {
        if (!e2)
          return false;
        if (e2 === t3)
          return true;
        var n2 = t3.length;
        return e2.length > n2 && e2.substr(0, n2) === t3 && "." === e2[n2];
      }
      function g(e2, t3) {
        if (t3.length < e2.length)
          return false;
        var n2 = 0;
        return e2.every(function(e3) {
          for (var r3 = n2; r3 < t3.length; r3++)
            if (d2(t3[r3], e3))
              return n2 = r3 + 1, true;
          return false;
        });
      }
      function m2(e2, t3, n2, r3, s3) {
        for (var a3 = o2.createMatchers(t3, g), c3 = i2.RuleFactory.getCompiledRuleId(n2, r3, s3.repository), u3 = 0, l3 = a3; u3 < l3.length; u3++) {
          var h3 = l3[u3];
          e2.push({ matcher: h3.matcher, ruleId: c3, grammar: s3, priority: h3.priority });
        }
      }
      t2.ScopeDependencyCollector = l2, t2.collectSpecificDependencies = p2, t2.collectDependencies = f2;
      var _2 = function(e2, t3, n2, r3) {
        this.scopeName = e2, this.languageId = t3, this.tokenType = n2, this.themeData = r3;
      };
      t2.ScopeMetadata = _2;
      var y2 = function() {
        function e2(t3, n2, r3) {
          if (this._initialLanguage = t3, this._themeProvider = n2, this._cache = /* @__PURE__ */ new Map(), this._defaultMetaData = new _2("", this._initialLanguage, 0, [this._themeProvider.getDefaults()]), this._embeddedLanguages = /* @__PURE__ */ Object.create(null), r3)
            for (var i3 = Object.keys(r3), o3 = 0, s3 = i3.length; o3 < s3; o3++) {
              var a3 = i3[o3], c3 = r3[a3];
              "number" == typeof c3 && 0 !== c3 ? this._embeddedLanguages[a3] = c3 : console.warn("Invalid embedded language found at scope " + a3 + ": <<" + c3 + ">>");
            }
          var u3 = Object.keys(this._embeddedLanguages).map(function(t4) {
            return e2._escapeRegExpCharacters(t4);
          });
          0 === u3.length ? this._embeddedLanguagesRegex = null : (u3.sort(), u3.reverse(), this._embeddedLanguagesRegex = new RegExp("^((" + u3.join(")|(") + "))($|\\.)", ""));
        }
        return e2.prototype.onDidChangeTheme = function() {
          this._cache = /* @__PURE__ */ new Map(), this._defaultMetaData = new _2("", this._initialLanguage, 0, [this._themeProvider.getDefaults()]);
        }, e2.prototype.getDefaultMetadata = function() {
          return this._defaultMetaData;
        }, e2._escapeRegExpCharacters = function(e3) {
          return e3.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, "\\$&");
        }, e2.prototype.getMetadataForScope = function(t3) {
          if (null === t3)
            return e2._NULL_SCOPE_METADATA;
          var n2 = this._cache.get(t3);
          return n2 || (n2 = this._doGetMetadataForScope(t3), this._cache.set(t3, n2), n2);
        }, e2.prototype._doGetMetadataForScope = function(e3) {
          var t3 = this._scopeToLanguage(e3), n2 = this._toStandardTokenType(e3), r3 = this._themeProvider.themeMatch(e3);
          return new _2(e3, t3, n2, r3);
        }, e2.prototype._scopeToLanguage = function(e3) {
          if (!e3)
            return 0;
          if (!this._embeddedLanguagesRegex)
            return 0;
          var t3 = e3.match(this._embeddedLanguagesRegex);
          if (!t3)
            return 0;
          var n2 = this._embeddedLanguages[t3[1]] || 0;
          return n2 || 0;
        }, e2.prototype._toStandardTokenType = function(t3) {
          var n2 = t3.match(e2.STANDARD_TOKEN_TYPE_REGEXP);
          if (!n2)
            return 0;
          switch (n2[1]) {
            case "comment":
              return 1;
            case "string":
              return 2;
            case "regex":
              return 4;
            case "meta.embedded":
              return 8;
          }
          throw new Error("Unexpected match for standard token type!");
        }, e2._NULL_SCOPE_METADATA = new _2("", 0, 0, null), e2.STANDARD_TOKEN_TYPE_REGEXP = /\b(comment|string|regex|meta\.embedded)\b/, e2;
      }(), v = function() {
        function e2(e3, t3, n2, r3, i3, s3) {
          if (this._scopeMetadataProvider = new y2(t3, i3, n2), this._onigLib = s3, this._rootId = -1, this._lastRuleId = 0, this._ruleId2desc = [null], this._includedGrammars = {}, this._grammarRepository = i3, this._grammar = C2(e3, null), this._injections = null, this._tokenTypeMatchers = [], r3)
            for (var a3 = 0, c3 = Object.keys(r3); a3 < c3.length; a3++)
              for (var u3 = c3[a3], l3 = 0, h3 = o2.createMatchers(u3, g); l3 < h3.length; l3++) {
                var p3 = h3[l3];
                this._tokenTypeMatchers.push({ matcher: p3.matcher, type: r3[u3] });
              }
        }
        return e2.prototype.dispose = function() {
          for (var e3 = 0, t3 = this._ruleId2desc; e3 < t3.length; e3++) {
            var n2 = t3[e3];
            n2 && n2.dispose();
          }
        }, e2.prototype.createOnigScanner = function(e3) {
          return this._onigLib.createOnigScanner(e3);
        }, e2.prototype.createOnigString = function(e3) {
          return this._onigLib.createOnigString(e3);
        }, e2.prototype.onDidChangeTheme = function() {
          this._scopeMetadataProvider.onDidChangeTheme();
        }, e2.prototype.getMetadataForScope = function(e3) {
          return this._scopeMetadataProvider.getMetadataForScope(e3);
        }, e2.prototype.getInjections = function() {
          var e3 = this;
          if (null === this._injections) {
            this._injections = [];
            var t3 = this._grammar.injections;
            if (t3)
              for (var n2 in t3)
                m2(this._injections, n2, t3[n2], this, this._grammar);
            if (this._grammarRepository) {
              var r3 = this._grammarRepository.injections(this._grammar.scopeName);
              r3 && r3.forEach(function(t4) {
                var n3 = e3.getExternalGrammar(t4);
                if (n3) {
                  var r4 = n3.injectionSelector;
                  r4 && m2(e3._injections, r4, n3, e3, n3);
                }
              });
            }
            this._injections.sort(function(e4, t4) {
              return e4.priority - t4.priority;
            });
          }
          return this._injections;
        }, e2.prototype.registerRule = function(e3) {
          var t3 = ++this._lastRuleId, n2 = e3(t3);
          return this._ruleId2desc[t3] = n2, n2;
        }, e2.prototype.getRule = function(e3) {
          return this._ruleId2desc[e3];
        }, e2.prototype.getExternalGrammar = function(e3, t3) {
          if (this._includedGrammars[e3])
            return this._includedGrammars[e3];
          if (this._grammarRepository) {
            var n2 = this._grammarRepository.lookup(e3);
            if (n2)
              return this._includedGrammars[e3] = C2(n2, t3 && t3.$base), this._includedGrammars[e3];
          }
          return null;
        }, e2.prototype.tokenizeLine = function(e3, t3) {
          var n2 = this._tokenize(e3, t3, false);
          return { tokens: n2.lineTokens.getResult(n2.ruleStack, n2.lineLength), ruleStack: n2.ruleStack };
        }, e2.prototype.tokenizeLine2 = function(e3, t3) {
          var n2 = this._tokenize(e3, t3, true);
          return { tokens: n2.lineTokens.getBinaryResult(n2.ruleStack, n2.lineLength), ruleStack: n2.ruleStack };
        }, e2.prototype._tokenize = function(e3, t3, n2) {
          var r3;
          if (-1 === this._rootId && (this._rootId = i2.RuleFactory.getCompiledRuleId(this._grammar.repository.$self, this, this._grammar.repository)), t3 && t3 !== I.NULL)
            r3 = false, t3.reset();
          else {
            r3 = true;
            var o3 = this._scopeMetadataProvider.getDefaultMetadata(), s3 = o3.themeData[0], a3 = P.set(0, o3.languageId, o3.tokenType, s3.fontStyle, s3.foreground, s3.background), c3 = this.getRule(this._rootId).getName(null, null), u3 = this._scopeMetadataProvider.getMetadataForScope(c3), l3 = x2.mergeMetadata(a3, null, u3), h3 = new x2(null, null === c3 ? "unknown" : c3, l3);
            t3 = new I(null, this._rootId, -1, -1, false, null, h3, h3);
          }
          e3 += "\n";
          var p3 = this.createOnigString(e3), f3 = p3.content.length, d3 = new T(n2, e3, this._tokenTypeMatchers), g2 = S2(this, p3, r3, 0, t3, d3, true);
          return b2(p3), { lineLength: f3, lineTokens: d3, ruleStack: g2 };
        }, e2;
      }();
      function b2(e2) {
        "function" == typeof e2.dispose && e2.dispose();
      }
      function C2(e2, t3) {
        return (e2 = r2.clone(e2)).repository = e2.repository || {}, e2.repository.$self = { $vscodeTextmateLocation: e2.$vscodeTextmateLocation, patterns: e2.patterns, name: e2.scopeName }, e2.repository.$base = t3 || e2.repository.$self, e2;
      }
      function w2(e2, t3, n2, r3, i3, o3, s3) {
        if (0 !== o3.length) {
          for (var a3 = t3.content, c3 = Math.min(o3.length, s3.length), u3 = [], l3 = s3[0].end, h3 = 0; h3 < c3; h3++) {
            var p3 = o3[h3];
            if (null !== p3) {
              var f3 = s3[h3];
              if (0 !== f3.length) {
                if (f3.start > l3)
                  break;
                for (; u3.length > 0 && u3[u3.length - 1].endPos <= f3.start; )
                  i3.produceFromScopes(u3[u3.length - 1].scopes, u3[u3.length - 1].endPos), u3.pop();
                if (u3.length > 0 ? i3.produceFromScopes(u3[u3.length - 1].scopes, f3.start) : i3.produce(r3, f3.start), p3.retokenizeCapturedWithRuleId) {
                  var d3 = p3.getName(a3, s3), g2 = r3.contentNameScopesList.push(e2, d3), m3 = p3.getContentName(a3, s3), _3 = g2.push(e2, m3), y3 = r3.push(p3.retokenizeCapturedWithRuleId, f3.start, -1, false, null, g2, _3), v2 = e2.createOnigString(a3.substring(0, f3.end));
                  S2(e2, v2, n2 && 0 === f3.start, f3.start, y3, i3, false), b2(v2);
                } else {
                  var C3 = p3.getName(a3, s3);
                  if (null !== C3) {
                    var w3 = (u3.length > 0 ? u3[u3.length - 1].scopes : r3.contentNameScopesList).push(e2, C3);
                    u3.push(new A(w3, f3.end));
                  }
                }
              }
            }
          }
          for (; u3.length > 0; )
            i3.produceFromScopes(u3[u3.length - 1].scopes, u3[u3.length - 1].endPos), u3.pop();
        }
      }
      function k(e2) {
        for (var t3 = [], n2 = 0, r3 = e2.rules.length; n2 < r3; n2++)
          t3.push("   - " + e2.rules[n2] + ": " + e2.debugRegExps[n2]);
        return t3.join("\n");
      }
      function R(e2, t3, n2, r3, i3, o3) {
        var c3 = function(e3, t4, n3, r4, i4, o4) {
          var c4 = i4.getRule(e3), u4 = c4.compile(e3, i4.endRule, n3, r4 === o4), l4 = 0;
          s2.DebugFlags.InDebugMode && (l4 = a2());
          var h4 = u4.scanner.findNextMatchSync(t4, r4);
          if (s2.DebugFlags.InDebugMode) {
            var p4 = a2() - l4;
            p4 > 5 && console.warn("Rule " + c4.debugName + " (" + c4.id + ") matching took " + p4 + " against '" + t4 + "'"), h4 && console.log("matched rule id: " + u4.rules[h4.index] + " from " + h4.captureIndices[0].start + " to " + h4.captureIndices[0].end);
          }
          return h4 ? { captureIndices: h4.captureIndices, matchedRuleId: u4.rules[h4.index] } : null;
        }(e2, t3, n2, r3, i3, o3), u3 = e2.getInjections();
        if (0 === u3.length)
          return c3;
        var l3 = function(e3, t4, n3, r4, i4, o4, a3) {
          for (var c4, u4 = Number.MAX_VALUE, l4 = null, h4 = 0, p4 = o4.contentNameScopesList.generateScopes(), f3 = 0, d3 = e3.length; f3 < d3; f3++) {
            var g2 = e3[f3];
            if (g2.matcher(p4)) {
              var m3 = t4.getRule(g2.ruleId).compile(t4, null, r4, i4 === a3), _3 = m3.scanner.findNextMatchSync(n3, i4);
              if (s2.DebugFlags.InDebugMode && (console.log("  scanning for injections"), console.log(k(m3))), _3) {
                var y3 = _3.captureIndices[0].start;
                if (!(y3 >= u4) && (u4 = y3, l4 = _3.captureIndices, c4 = m3.rules[_3.index], h4 = g2.priority, u4 === i4))
                  break;
              }
            }
          }
          return l4 ? { priorityMatch: -1 === h4, captureIndices: l4, matchedRuleId: c4 } : null;
        }(u3, e2, t3, n2, r3, i3, o3);
        if (!l3)
          return c3;
        if (!c3)
          return l3;
        var h3 = c3.captureIndices[0].start, p3 = l3.captureIndices[0].start;
        return p3 < h3 || l3.priorityMatch && p3 === h3 ? l3 : c3;
      }
      function S2(e2, t3, n2, r3, o3, a3, c3) {
        var u3 = t3.content.length, l3 = false, h3 = -1;
        if (c3) {
          var p3 = function(e3, t4, n3, r4, o4, a4) {
            for (var c4 = o4.beginRuleCapturedEOL ? 0 : -1, u4 = [], l4 = o4; l4; l4 = l4.pop()) {
              var h4 = l4.getRule(e3);
              h4 instanceof i2.BeginWhileRule && u4.push({ rule: h4, stack: l4 });
            }
            for (var p4 = u4.pop(); p4; p4 = u4.pop()) {
              var f4 = p4.rule.compileWhile(e3, p4.stack.endRule, n3, c4 === r4), d3 = f4.scanner.findNextMatchSync(t4, r4);
              if (s2.DebugFlags.InDebugMode && (console.log("  scanning for while rule"), console.log(k(f4))), !d3) {
                s2.DebugFlags.InDebugMode && console.log("  popping " + p4.rule.debugName + " - " + p4.rule.debugWhileRegExp), o4 = p4.stack.pop();
                break;
              }
              if (-2 !== f4.rules[d3.index]) {
                o4 = p4.stack.pop();
                break;
              }
              d3.captureIndices && d3.captureIndices.length && (a4.produce(p4.stack, d3.captureIndices[0].start), w2(e3, t4, n3, p4.stack, a4, p4.rule.whileCaptures, d3.captureIndices), a4.produce(p4.stack, d3.captureIndices[0].end), c4 = d3.captureIndices[0].end, d3.captureIndices[0].end > r4 && (r4 = d3.captureIndices[0].end, n3 = false));
            }
            return { stack: o4, linePos: r4, anchorPosition: c4, isFirstLine: n3 };
          }(e2, t3, n2, r3, o3, a3);
          o3 = p3.stack, r3 = p3.linePos, n2 = p3.isFirstLine, h3 = p3.anchorPosition;
        }
        for (; !l3; )
          f3();
        function f3() {
          s2.DebugFlags.InDebugMode && (console.log(""), console.log("@@scanNext " + r3 + ": |" + t3.content.substr(r3).replace(/\n$/, "\\n") + "|"));
          var c4 = R(e2, t3, n2, r3, o3, h3);
          if (!c4)
            return s2.DebugFlags.InDebugMode && console.log("  no more matches."), a3.produce(o3, u3), void (l3 = true);
          var p4 = c4.captureIndices, f4 = c4.matchedRuleId, d3 = !!(p4 && p4.length > 0) && p4[0].end > r3;
          if (-1 === f4) {
            var g2 = o3.getRule(e2);
            s2.DebugFlags.InDebugMode && console.log("  popping " + g2.debugName + " - " + g2.debugEndRegExp), a3.produce(o3, p4[0].start), o3 = o3.setContentNameScopesList(o3.nameScopesList), w2(e2, t3, n2, o3, a3, g2.endCaptures, p4), a3.produce(o3, p4[0].end);
            var m3 = o3;
            if (o3 = o3.pop(), h3 = m3.getAnchorPos(), !d3 && m3.getEnterPos() === r3)
              return s2.DebugFlags.InDebugMode && console.error("[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing"), o3 = m3, a3.produce(o3, u3), void (l3 = true);
          } else {
            var _3 = e2.getRule(f4);
            a3.produce(o3, p4[0].start);
            var y3 = o3, v2 = _3.getName(t3.content, p4), b3 = o3.contentNameScopesList.push(e2, v2);
            if (o3 = o3.push(f4, r3, h3, p4[0].end === u3, null, b3, b3), _3 instanceof i2.BeginEndRule) {
              var C3 = _3;
              s2.DebugFlags.InDebugMode && console.log("  pushing " + C3.debugName + " - " + C3.debugBeginRegExp), w2(e2, t3, n2, o3, a3, C3.beginCaptures, p4), a3.produce(o3, p4[0].end), h3 = p4[0].end;
              var k2 = C3.getContentName(t3.content, p4), S3 = b3.push(e2, k2);
              if (o3 = o3.setContentNameScopesList(S3), C3.endHasBackReferences && (o3 = o3.setEndRule(C3.getEndWithResolvedBackReferences(t3.content, p4))), !d3 && y3.hasSameRuleAs(o3))
                return s2.DebugFlags.InDebugMode && console.error("[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"), o3 = o3.pop(), a3.produce(o3, u3), void (l3 = true);
            } else if (_3 instanceof i2.BeginWhileRule) {
              C3 = _3;
              s2.DebugFlags.InDebugMode && console.log("  pushing " + C3.debugName), w2(e2, t3, n2, o3, a3, C3.beginCaptures, p4), a3.produce(o3, p4[0].end), h3 = p4[0].end;
              k2 = C3.getContentName(t3.content, p4), S3 = b3.push(e2, k2);
              if (o3 = o3.setContentNameScopesList(S3), C3.whileHasBackReferences && (o3 = o3.setEndRule(C3.getWhileWithResolvedBackReferences(t3.content, p4))), !d3 && y3.hasSameRuleAs(o3))
                return s2.DebugFlags.InDebugMode && console.error("[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"), o3 = o3.pop(), a3.produce(o3, u3), void (l3 = true);
            } else {
              var P2 = _3;
              if (s2.DebugFlags.InDebugMode && console.log("  matched " + P2.debugName + " - " + P2.debugMatchRegExp), w2(e2, t3, n2, o3, a3, P2.captures, p4), a3.produce(o3, p4[0].end), o3 = o3.pop(), !d3)
                return s2.DebugFlags.InDebugMode && console.error("[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping"), o3 = o3.safePop(), a3.produce(o3, u3), void (l3 = true);
            }
          }
          p4[0].end > r3 && (r3 = p4[0].end, n2 = false);
        }
        return o3;
      }
      t2.Grammar = v;
      var P = function() {
        function e2() {
        }
        return e2.toBinaryStr = function(e3) {
          for (var t3 = e3.toString(2); t3.length < 32; )
            t3 = "0" + t3;
          return t3;
        }, e2.printMetadata = function(t3) {
          var n2 = e2.getLanguageId(t3), r3 = e2.getTokenType(t3), i3 = e2.getFontStyle(t3), o3 = e2.getForeground(t3), s3 = e2.getBackground(t3);
          console.log({ languageId: n2, tokenType: r3, fontStyle: i3, foreground: o3, background: s3 });
        }, e2.getLanguageId = function(e3) {
          return (255 & e3) >>> 0;
        }, e2.getTokenType = function(e3) {
          return (1792 & e3) >>> 8;
        }, e2.getFontStyle = function(e3) {
          return (14336 & e3) >>> 11;
        }, e2.getForeground = function(e3) {
          return (8372224 & e3) >>> 14;
        }, e2.getBackground = function(e3) {
          return (4286578688 & e3) >>> 23;
        }, e2.set = function(t3, n2, r3, i3, o3, s3) {
          var a3 = e2.getLanguageId(t3), c3 = e2.getTokenType(t3), u3 = e2.getFontStyle(t3), l3 = e2.getForeground(t3), h3 = e2.getBackground(t3);
          return 0 !== n2 && (a3 = n2), 0 !== r3 && (c3 = 8 === r3 ? 0 : r3), -1 !== i3 && (u3 = i3), 0 !== o3 && (l3 = o3), 0 !== s3 && (h3 = s3), (a3 << 0 | c3 << 8 | u3 << 11 | l3 << 14 | h3 << 23) >>> 0;
        }, e2;
      }();
      t2.StackElementMetadata = P;
      var x2 = function() {
        function e2(e3, t3, n2) {
          this.parent = e3, this.scope = t3, this.metadata = n2;
        }
        return e2._equals = function(e3, t3) {
          for (; ; ) {
            if (e3 === t3)
              return true;
            if (!e3 && !t3)
              return true;
            if (!e3 || !t3)
              return false;
            if (e3.scope !== t3.scope || e3.metadata !== t3.metadata)
              return false;
            e3 = e3.parent, t3 = t3.parent;
          }
        }, e2.prototype.equals = function(t3) {
          return e2._equals(this, t3);
        }, e2._matchesScope = function(e3, t3, n2) {
          return t3 === e3 || e3.substring(0, n2.length) === n2;
        }, e2._matches = function(e3, t3) {
          if (null === t3)
            return true;
          for (var n2 = t3.length, r3 = 0, i3 = t3[r3], o3 = i3 + "."; e3; ) {
            if (this._matchesScope(e3.scope, i3, o3)) {
              if (++r3 === n2)
                return true;
              o3 = (i3 = t3[r3]) + ".";
            }
            e3 = e3.parent;
          }
          return false;
        }, e2.mergeMetadata = function(e3, t3, n2) {
          if (null === n2)
            return e3;
          var r3 = -1, i3 = 0, o3 = 0;
          if (null !== n2.themeData)
            for (var s3 = 0, a3 = n2.themeData.length; s3 < a3; s3++) {
              var c3 = n2.themeData[s3];
              if (this._matches(t3, c3.parentScopes)) {
                r3 = c3.fontStyle, i3 = c3.foreground, o3 = c3.background;
                break;
              }
            }
          return P.set(e3, n2.languageId, n2.tokenType, r3, i3, o3);
        }, e2._push = function(t3, n2, r3) {
          for (var i3 = 0, o3 = r3.length; i3 < o3; i3++) {
            var s3 = r3[i3], a3 = n2.getMetadataForScope(s3), c3 = e2.mergeMetadata(t3.metadata, t3, a3);
            t3 = new e2(t3, s3, c3);
          }
          return t3;
        }, e2.prototype.push = function(t3, n2) {
          return null === n2 ? this : n2.indexOf(" ") >= 0 ? e2._push(this, t3, n2.split(/ /g)) : e2._push(this, t3, [n2]);
        }, e2._generateScopes = function(e3) {
          for (var t3 = [], n2 = 0; e3; )
            t3[n2++] = e3.scope, e3 = e3.parent;
          return t3.reverse(), t3;
        }, e2.prototype.generateScopes = function() {
          return e2._generateScopes(this);
        }, e2;
      }();
      t2.ScopeListElement = x2;
      var I = function() {
        function e2(e3, t3, n2, r3, i3, o3, s3, a3) {
          this.parent = e3, this.depth = this.parent ? this.parent.depth + 1 : 1, this.ruleId = t3, this._enterPos = n2, this._anchorPos = r3, this.beginRuleCapturedEOL = i3, this.endRule = o3, this.nameScopesList = s3, this.contentNameScopesList = a3;
        }
        return e2._structuralEquals = function(e3, t3) {
          for (; ; ) {
            if (e3 === t3)
              return true;
            if (!e3 && !t3)
              return true;
            if (!e3 || !t3)
              return false;
            if (e3.depth !== t3.depth || e3.ruleId !== t3.ruleId || e3.endRule !== t3.endRule)
              return false;
            e3 = e3.parent, t3 = t3.parent;
          }
        }, e2._equals = function(e3, t3) {
          return e3 === t3 || !!this._structuralEquals(e3, t3) && e3.contentNameScopesList.equals(t3.contentNameScopesList);
        }, e2.prototype.clone = function() {
          return this;
        }, e2.prototype.equals = function(t3) {
          return null !== t3 && e2._equals(this, t3);
        }, e2._reset = function(e3) {
          for (; e3; )
            e3._enterPos = -1, e3._anchorPos = -1, e3 = e3.parent;
        }, e2.prototype.reset = function() {
          e2._reset(this);
        }, e2.prototype.pop = function() {
          return this.parent;
        }, e2.prototype.safePop = function() {
          return this.parent ? this.parent : this;
        }, e2.prototype.push = function(t3, n2, r3, i3, o3, s3, a3) {
          return new e2(this, t3, n2, r3, i3, o3, s3, a3);
        }, e2.prototype.getEnterPos = function() {
          return this._enterPos;
        }, e2.prototype.getAnchorPos = function() {
          return this._anchorPos;
        }, e2.prototype.getRule = function(e3) {
          return e3.getRule(this.ruleId);
        }, e2.prototype._writeString = function(e3, t3) {
          return this.parent && (t3 = this.parent._writeString(e3, t3)), e3[t3++] = "(" + this.ruleId + ", TODO-" + this.nameScopesList + ", TODO-" + this.contentNameScopesList + ")", t3;
        }, e2.prototype.toString = function() {
          var e3 = [];
          return this._writeString(e3, 0), "[" + e3.join(",") + "]";
        }, e2.prototype.setContentNameScopesList = function(e3) {
          return this.contentNameScopesList === e3 ? this : this.parent.push(this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, this.endRule, this.nameScopesList, e3);
        }, e2.prototype.setEndRule = function(t3) {
          return this.endRule === t3 ? this : new e2(this.parent, this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, t3, this.nameScopesList, this.contentNameScopesList);
        }, e2.prototype.hasSameRuleAs = function(e3) {
          return this.ruleId === e3.ruleId;
        }, e2.NULL = new e2(null, 0, 0, 0, false, null, null, null), e2;
      }();
      t2.StackElement = I;
      var A = function(e2, t3) {
        this.scopes = e2, this.endPos = t3;
      };
      t2.LocalStackElement = A;
      var T = function() {
        function e2(e3, t3, n2) {
          this._emitBinaryTokens = e3, this._tokenTypeOverrides = n2, s2.DebugFlags.InDebugMode ? this._lineText = t3 : this._lineText = null, this._tokens = [], this._binaryTokens = [], this._lastTokenEndIndex = 0;
        }
        return e2.prototype.produce = function(e3, t3) {
          this.produceFromScopes(e3.contentNameScopesList, t3);
        }, e2.prototype.produceFromScopes = function(e3, t3) {
          if (!(this._lastTokenEndIndex >= t3)) {
            if (this._emitBinaryTokens) {
              for (var n2 = e3.metadata, r3 = 0, i3 = this._tokenTypeOverrides; r3 < i3.length; r3++) {
                var o3 = i3[r3];
                o3.matcher(e3.generateScopes()) && (n2 = P.set(n2, 0, L2(o3.type), -1, 0, 0));
              }
              return this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === n2 || (this._binaryTokens.push(this._lastTokenEndIndex), this._binaryTokens.push(n2)), void (this._lastTokenEndIndex = t3);
            }
            var a3 = e3.generateScopes();
            if (s2.DebugFlags.InDebugMode) {
              console.log("  token: |" + this._lineText.substring(this._lastTokenEndIndex, t3).replace(/\n$/, "\\n") + "|");
              for (var c3 = 0; c3 < a3.length; c3++)
                console.log("      * " + a3[c3]);
            }
            this._tokens.push({ startIndex: this._lastTokenEndIndex, endIndex: t3, scopes: a3 }), this._lastTokenEndIndex = t3;
          }
        }, e2.prototype.getResult = function(e3, t3) {
          return this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === t3 - 1 && this._tokens.pop(), 0 === this._tokens.length && (this._lastTokenEndIndex = -1, this.produce(e3, t3), this._tokens[this._tokens.length - 1].startIndex = 0), this._tokens;
        }, e2.prototype.getBinaryResult = function(e3, t3) {
          this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === t3 - 1 && (this._binaryTokens.pop(), this._binaryTokens.pop()), 0 === this._binaryTokens.length && (this._lastTokenEndIndex = -1, this.produce(e3, t3), this._binaryTokens[this._binaryTokens.length - 2] = 0);
          for (var n2 = new Uint32Array(this._binaryTokens.length), r3 = 0, i3 = this._binaryTokens.length; r3 < i3; r3++)
            n2[r3] = this._binaryTokens[r3];
          return n2;
        }, e2;
      }();
      function L2(e2) {
        switch (e2) {
          case 4:
            return 4;
          case 2:
            return 2;
          case 1:
            return 1;
          case 0:
          default:
            return 8;
        }
      }
    }, function(e, t2, n) {
      function r2(e2) {
        return Array.isArray(e2) ? function(e3) {
          for (var t3 = [], n2 = 0, i3 = e3.length; n2 < i3; n2++)
            t3[n2] = r2(e3[n2]);
          return t3;
        }(e2) : "object" == typeof e2 ? function(e3) {
          var t3 = {};
          for (var n2 in e3)
            t3[n2] = r2(e3[n2]);
          return t3;
        }(e2) : e2;
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.clone = function(e2) {
        return r2(e2);
      }, t2.mergeObjects = function(e2) {
        for (var t3 = [], n2 = 1; n2 < arguments.length; n2++)
          t3[n2 - 1] = arguments[n2];
        return t3.forEach(function(t4) {
          for (var n3 in t4)
            e2[n3] = t4[n3];
        }), e2;
      }, t2.basename = function e2(t3) {
        var n2 = ~t3.lastIndexOf("/") || ~t3.lastIndexOf("\\");
        return 0 === n2 ? t3 : ~n2 == t3.length - 1 ? e2(t3.substring(0, t3.length - 1)) : t3.substr(1 + ~n2);
      };
      var i2 = /\$(\d+)|\${(\d+):\/(downcase|upcase)}/, o2 = function() {
        function e2() {
        }
        return e2.hasCaptures = function(e3) {
          return null !== e3 && i2.test(e3);
        }, e2.replaceCaptures = function(e3, t3, n2) {
          return e3.replace(i2, function(e4, r3, i3, o3) {
            var s2 = n2[parseInt(r3 || i3, 10)];
            if (!s2)
              return e4;
            for (var a2 = t3.substring(s2.start, s2.end); "." === a2[0]; )
              a2 = a2.substring(1);
            switch (o3) {
              case "downcase":
                return a2.toLowerCase();
              case "upcase":
                return a2.toUpperCase();
              default:
                return a2;
            }
          });
        }, e2;
      }();
      t2.RegexSource = o2;
    }, function(e, t2, n) {
      (function(e2) {
        Object.defineProperty(t2, "__esModule", { value: true }), t2.DebugFlags = { InDebugMode: void 0 !== e2 && !!e2.env.VSCODE_TEXTMATE_DEBUG };
      }).call(this, n(7));
    }, function(e, t2, n) {
      var r2 = this && this.__awaiter || function(e2, t3, n2, r3) {
        return new (n2 || (n2 = Promise))(function(i3, o3) {
          function s3(e3) {
            try {
              c3(r3.next(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function a3(e3) {
            try {
              c3(r3.throw(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function c3(e3) {
            var t4;
            e3.done ? i3(e3.value) : (t4 = e3.value, t4 instanceof n2 ? t4 : new n2(function(e4) {
              e4(t4);
            })).then(s3, a3);
          }
          c3((r3 = r3.apply(e2, t3 || [])).next());
        });
      }, i2 = this && this.__generator || function(e2, t3) {
        var n2, r3, i3, o3, s3 = { label: 0, sent: function() {
          if (1 & i3[0])
            throw i3[1];
          return i3[1];
        }, trys: [], ops: [] };
        return o3 = { next: a3(0), throw: a3(1), return: a3(2) }, "function" == typeof Symbol && (o3[Symbol.iterator] = function() {
          return this;
        }), o3;
        function a3(o4) {
          return function(a4) {
            return function(o5) {
              if (n2)
                throw new TypeError("Generator is already executing.");
              for (; s3; )
                try {
                  if (n2 = 1, r3 && (i3 = 2 & o5[0] ? r3.return : o5[0] ? r3.throw || ((i3 = r3.return) && i3.call(r3), 0) : r3.next) && !(i3 = i3.call(r3, o5[1])).done)
                    return i3;
                  switch (r3 = 0, i3 && (o5 = [2 & o5[0], i3.value]), o5[0]) {
                    case 0:
                    case 1:
                      i3 = o5;
                      break;
                    case 4:
                      return s3.label++, { value: o5[1], done: false };
                    case 5:
                      s3.label++, r3 = o5[1], o5 = [0];
                      continue;
                    case 7:
                      o5 = s3.ops.pop(), s3.trys.pop();
                      continue;
                    default:
                      if (!(i3 = s3.trys, (i3 = i3.length > 0 && i3[i3.length - 1]) || 6 !== o5[0] && 2 !== o5[0])) {
                        s3 = 0;
                        continue;
                      }
                      if (3 === o5[0] && (!i3 || o5[1] > i3[0] && o5[1] < i3[3])) {
                        s3.label = o5[1];
                        break;
                      }
                      if (6 === o5[0] && s3.label < i3[1]) {
                        s3.label = i3[1], i3 = o5;
                        break;
                      }
                      if (i3 && s3.label < i3[2]) {
                        s3.label = i3[2], s3.ops.push(o5);
                        break;
                      }
                      i3[2] && s3.ops.pop(), s3.trys.pop();
                      continue;
                  }
                  o5 = t3.call(e2, s3);
                } catch (e3) {
                  o5 = [6, e3], r3 = 0;
                } finally {
                  n2 = i3 = 0;
                }
              if (5 & o5[0])
                throw o5[1];
              return { value: o5[0] ? o5[1] : void 0, done: true };
            }([o4, a4]);
          };
        }
      };
      Object.defineProperty(t2, "__esModule", { value: true });
      var o2 = n(4), s2 = n(8), a2 = n(11), c2 = n(0), u2 = function() {
        function e2(e3) {
          this._options = e3, this._syncRegistry = new o2.SyncRegistry(a2.Theme.createFromRawTheme(e3.theme, e3.colorMap), e3.onigLib), this._ensureGrammarCache = /* @__PURE__ */ new Map();
        }
        return e2.prototype.dispose = function() {
          this._syncRegistry.dispose();
        }, e2.prototype.setTheme = function(e3, t3) {
          this._syncRegistry.setTheme(a2.Theme.createFromRawTheme(e3, t3));
        }, e2.prototype.getColorMap = function() {
          return this._syncRegistry.getColorMap();
        }, e2.prototype.loadGrammarWithEmbeddedLanguages = function(e3, t3, n2) {
          return this.loadGrammarWithConfiguration(e3, t3, { embeddedLanguages: n2 });
        }, e2.prototype.loadGrammarWithConfiguration = function(e3, t3, n2) {
          return this._loadGrammar(e3, t3, n2.embeddedLanguages, n2.tokenTypes);
        }, e2.prototype.loadGrammar = function(e3) {
          return this._loadGrammar(e3, 0, null, null);
        }, e2.prototype._doLoadSingleGrammar = function(e3) {
          return r2(this, void 0, void 0, function() {
            var t3, n2;
            return i2(this, function(r3) {
              switch (r3.label) {
                case 0:
                  return [4, this._options.loadGrammar(e3)];
                case 1:
                  return (t3 = r3.sent()) && (n2 = "function" == typeof this._options.getInjections ? this._options.getInjections(e3) : void 0, this._syncRegistry.addGrammar(t3, n2)), [2];
              }
            });
          });
        }, e2.prototype._loadSingleGrammar = function(e3) {
          return r2(this, void 0, void 0, function() {
            return i2(this, function(t3) {
              return this._ensureGrammarCache.has(e3) || this._ensureGrammarCache.set(e3, this._doLoadSingleGrammar(e3)), [2, this._ensureGrammarCache.get(e3)];
            });
          });
        }, e2.prototype._collectDependenciesForDep = function(e3, t3, n2) {
          var r3 = this._syncRegistry.lookup(n2.scopeName);
          if (r3) {
            n2 instanceof c2.FullScopeDependency ? c2.collectDependencies(t3, this._syncRegistry.lookup(e3), r3) : c2.collectSpecificDependencies(t3, this._syncRegistry.lookup(e3), r3, n2.include);
            var i3 = this._syncRegistry.injections(n2.scopeName);
            if (i3)
              for (var o3 = 0, s3 = i3; o3 < s3.length; o3++) {
                var a3 = s3[o3];
                t3.add(new c2.FullScopeDependency(a3));
              }
          } else if (n2.scopeName === e3)
            throw new Error("No grammar provided for <" + e3 + ">");
        }, e2.prototype._loadGrammar = function(e3, t3, n2, o3) {
          return r2(this, void 0, void 0, function() {
            var r3, s3, a3, u3, l2, h2, p2, f2, d2, g, m2, _2, y2 = this;
            return i2(this, function(i3) {
              switch (i3.label) {
                case 0:
                  r3 = /* @__PURE__ */ new Set(), s3 = /* @__PURE__ */ new Set(), r3.add(e3), a3 = [new c2.FullScopeDependency(e3)], i3.label = 1;
                case 1:
                  return a3.length > 0 ? (u3 = a3, a3 = [], [4, Promise.all(u3.map(function(e4) {
                    return y2._loadSingleGrammar(e4.scopeName);
                  }))]) : [3, 3];
                case 2:
                  for (i3.sent(), l2 = new c2.ScopeDependencyCollector(), h2 = 0, p2 = u3; h2 < p2.length; h2++)
                    _2 = p2[h2], this._collectDependenciesForDep(e3, l2, _2);
                  for (f2 = 0, d2 = l2.full; f2 < d2.length; f2++)
                    _2 = d2[f2], r3.has(_2.scopeName) || (r3.add(_2.scopeName), a3.push(_2));
                  for (g = 0, m2 = l2.partial; g < m2.length; g++)
                    _2 = m2[g], r3.has(_2.scopeName) || s3.has(_2.toKey()) || (s3.add(_2.toKey()), a3.push(_2));
                  return [3, 1];
                case 3:
                  return [2, this.grammarForScopeName(e3, t3, n2, o3)];
              }
            });
          });
        }, e2.prototype.addGrammar = function(e3, t3, n2, o3) {
          return void 0 === t3 && (t3 = []), void 0 === n2 && (n2 = 0), void 0 === o3 && (o3 = null), r2(this, void 0, void 0, function() {
            return i2(this, function(r3) {
              switch (r3.label) {
                case 0:
                  return this._syncRegistry.addGrammar(e3, t3), [4, this.grammarForScopeName(e3.scopeName, n2, o3)];
                case 1:
                  return [2, r3.sent()];
              }
            });
          });
        }, e2.prototype.grammarForScopeName = function(e3, t3, n2, r3) {
          return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = null), void 0 === r3 && (r3 = null), this._syncRegistry.grammarForScopeName(e3, t3, n2, r3);
        }, e2;
      }();
      t2.Registry = u2, t2.INITIAL = c2.StackElement.NULL, t2.parseRawGrammar = s2.parseRawGrammar;
    }, function(e, t2, n) {
      var r2 = this && this.__awaiter || function(e2, t3, n2, r3) {
        return new (n2 || (n2 = Promise))(function(i3, o3) {
          function s3(e3) {
            try {
              c2(r3.next(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function a2(e3) {
            try {
              c2(r3.throw(e3));
            } catch (e4) {
              o3(e4);
            }
          }
          function c2(e3) {
            var t4;
            e3.done ? i3(e3.value) : (t4 = e3.value, t4 instanceof n2 ? t4 : new n2(function(e4) {
              e4(t4);
            })).then(s3, a2);
          }
          c2((r3 = r3.apply(e2, t3 || [])).next());
        });
      }, i2 = this && this.__generator || function(e2, t3) {
        var n2, r3, i3, o3, s3 = { label: 0, sent: function() {
          if (1 & i3[0])
            throw i3[1];
          return i3[1];
        }, trys: [], ops: [] };
        return o3 = { next: a2(0), throw: a2(1), return: a2(2) }, "function" == typeof Symbol && (o3[Symbol.iterator] = function() {
          return this;
        }), o3;
        function a2(o4) {
          return function(a3) {
            return function(o5) {
              if (n2)
                throw new TypeError("Generator is already executing.");
              for (; s3; )
                try {
                  if (n2 = 1, r3 && (i3 = 2 & o5[0] ? r3.return : o5[0] ? r3.throw || ((i3 = r3.return) && i3.call(r3), 0) : r3.next) && !(i3 = i3.call(r3, o5[1])).done)
                    return i3;
                  switch (r3 = 0, i3 && (o5 = [2 & o5[0], i3.value]), o5[0]) {
                    case 0:
                    case 1:
                      i3 = o5;
                      break;
                    case 4:
                      return s3.label++, { value: o5[1], done: false };
                    case 5:
                      s3.label++, r3 = o5[1], o5 = [0];
                      continue;
                    case 7:
                      o5 = s3.ops.pop(), s3.trys.pop();
                      continue;
                    default:
                      if (!(i3 = s3.trys, (i3 = i3.length > 0 && i3[i3.length - 1]) || 6 !== o5[0] && 2 !== o5[0])) {
                        s3 = 0;
                        continue;
                      }
                      if (3 === o5[0] && (!i3 || o5[1] > i3[0] && o5[1] < i3[3])) {
                        s3.label = o5[1];
                        break;
                      }
                      if (6 === o5[0] && s3.label < i3[1]) {
                        s3.label = i3[1], i3 = o5;
                        break;
                      }
                      if (i3 && s3.label < i3[2]) {
                        s3.label = i3[2], s3.ops.push(o5);
                        break;
                      }
                      i3[2] && s3.ops.pop(), s3.trys.pop();
                      continue;
                  }
                  o5 = t3.call(e2, s3);
                } catch (e3) {
                  o5 = [6, e3], r3 = 0;
                } finally {
                  n2 = i3 = 0;
                }
              if (5 & o5[0])
                throw o5[1];
              return { value: o5[0] ? o5[1] : void 0, done: true };
            }([o4, a3]);
          };
        }
      };
      Object.defineProperty(t2, "__esModule", { value: true });
      var o2 = n(0), s2 = function() {
        function e2(e3, t3) {
          this._theme = e3, this._grammars = {}, this._rawGrammars = {}, this._injectionGrammars = {}, this._onigLibPromise = t3;
        }
        return e2.prototype.dispose = function() {
          for (var e3 in this._grammars)
            this._grammars.hasOwnProperty(e3) && this._grammars[e3].dispose();
        }, e2.prototype.setTheme = function(e3) {
          var t3 = this;
          this._theme = e3, Object.keys(this._grammars).forEach(function(e4) {
            t3._grammars[e4].onDidChangeTheme();
          });
        }, e2.prototype.getColorMap = function() {
          return this._theme.getColorMap();
        }, e2.prototype.addGrammar = function(e3, t3) {
          this._rawGrammars[e3.scopeName] = e3, t3 && (this._injectionGrammars[e3.scopeName] = t3);
        }, e2.prototype.lookup = function(e3) {
          return this._rawGrammars[e3];
        }, e2.prototype.injections = function(e3) {
          return this._injectionGrammars[e3];
        }, e2.prototype.getDefaults = function() {
          return this._theme.getDefaults();
        }, e2.prototype.themeMatch = function(e3) {
          return this._theme.match(e3);
        }, e2.prototype.grammarForScopeName = function(e3, t3, n2, s3) {
          return r2(this, void 0, void 0, function() {
            var r3, a2, c2, u2, l2;
            return i2(this, function(i3) {
              switch (i3.label) {
                case 0:
                  return this._grammars[e3] ? [3, 2] : (r3 = this._rawGrammars[e3]) ? (a2 = this._grammars, c2 = e3, u2 = o2.createGrammar, l2 = [r3, t3, n2, s3, this], [4, this._onigLibPromise]) : [2, null];
                case 1:
                  a2[c2] = u2.apply(void 0, l2.concat([i3.sent()])), i3.label = 2;
                case 2:
                  return [2, this._grammars[e3]];
              }
            });
          });
        }, e2;
      }();
      t2.SyncRegistry = s2;
    }, function(e, t2, n) {
      var r2, i2 = this && this.__extends || (r2 = function(e2, t3) {
        return (r2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e3, t4) {
          e3.__proto__ = t4;
        } || function(e3, t4) {
          for (var n2 in t4)
            t4.hasOwnProperty(n2) && (e3[n2] = t4[n2]);
        })(e2, t3);
      }, function(e2, t3) {
        function n2() {
          this.constructor = e2;
        }
        r2(e2, t3), e2.prototype = null === t3 ? Object.create(t3) : (n2.prototype = t3.prototype, new n2());
      });
      Object.defineProperty(t2, "__esModule", { value: true });
      var o2 = n(1), s2 = /\\(\d+)/, a2 = /\\(\d+)/g, c2 = function() {
        function e2(e3, t3, n2) {
          this.debugRegExps = t3, this.rules = n2, this.scanner = e3.createOnigScanner(t3);
        }
        return e2.prototype.dispose = function() {
          "function" == typeof this.scanner.dispose && this.scanner.dispose();
        }, e2;
      }();
      t2.CompiledRule = c2;
      var u2 = function() {
        function e2(e3, t3, n2, r3) {
          this.$location = e3, this.id = t3, this._name = n2 || null, this._nameIsCapturing = o2.RegexSource.hasCaptures(this._name), this._contentName = r3 || null, this._contentNameIsCapturing = o2.RegexSource.hasCaptures(this._contentName);
        }
        return Object.defineProperty(e2.prototype, "debugName", { get: function() {
          var e3 = this.$location ? o2.basename(this.$location.filename) + ":" + this.$location.line : "unknown";
          return this.constructor.name + "#" + this.id + " @ " + e3;
        }, enumerable: true, configurable: true }), e2.prototype.getName = function(e3, t3) {
          return this._nameIsCapturing && null !== this._name && null !== e3 && null !== t3 ? o2.RegexSource.replaceCaptures(this._name, e3, t3) : this._name;
        }, e2.prototype.getContentName = function(e3, t3) {
          return this._contentNameIsCapturing && null !== this._contentName ? o2.RegexSource.replaceCaptures(this._contentName, e3, t3) : this._contentName;
        }, e2;
      }();
      t2.Rule = u2;
      var l2 = function(e2) {
        function t3(t4, n2, r3, i3, o3) {
          var s3 = e2.call(this, t4, n2, r3, i3) || this;
          return s3.retokenizeCapturedWithRuleId = o3, s3;
        }
        return i2(t3, e2), t3.prototype.dispose = function() {
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          throw new Error("Not supported!");
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          throw new Error("Not supported!");
        }, t3;
      }(u2);
      t2.CaptureRule = l2;
      var h2 = function() {
        function e2(e3, t3, n2) {
          if (void 0 === n2 && (n2 = true), n2)
            if (e3) {
              for (var r3 = e3.length, i3 = 0, o3 = [], a3 = false, c3 = 0; c3 < r3; c3++) {
                if ("\\" === e3.charAt(c3) && c3 + 1 < r3) {
                  var u3 = e3.charAt(c3 + 1);
                  "z" === u3 ? (o3.push(e3.substring(i3, c3)), o3.push("$(?!\\n)(?<!\\n)"), i3 = c3 + 2) : "A" !== u3 && "G" !== u3 || (a3 = true), c3++;
                }
              }
              this.hasAnchor = a3, 0 === i3 ? this.source = e3 : (o3.push(e3.substring(i3, r3)), this.source = o3.join(""));
            } else
              this.hasAnchor = false, this.source = e3;
          else
            this.hasAnchor = false, this.source = e3;
          this.hasAnchor ? this._anchorCache = this._buildAnchorCache() : this._anchorCache = null, this.ruleId = t3, this.hasBackReferences = s2.test(this.source);
        }
        return e2.prototype.clone = function() {
          return new e2(this.source, this.ruleId, true);
        }, e2.prototype.setSource = function(e3) {
          this.source !== e3 && (this.source = e3, this.hasAnchor && (this._anchorCache = this._buildAnchorCache()));
        }, e2.prototype.resolveBackReferences = function(e3, t3) {
          var n2 = t3.map(function(t4) {
            return e3.substring(t4.start, t4.end);
          });
          return a2.lastIndex = 0, this.source.replace(a2, function(e4, t4) {
            return (n2[parseInt(t4, 10)] || "").replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, "\\$&");
          });
        }, e2.prototype._buildAnchorCache = function() {
          var e3, t3, n2, r3, i3 = [], o3 = [], s3 = [], a3 = [];
          for (e3 = 0, t3 = this.source.length; e3 < t3; e3++)
            n2 = this.source.charAt(e3), i3[e3] = n2, o3[e3] = n2, s3[e3] = n2, a3[e3] = n2, "\\" === n2 && e3 + 1 < t3 && ("A" === (r3 = this.source.charAt(e3 + 1)) ? (i3[e3 + 1] = "", o3[e3 + 1] = "", s3[e3 + 1] = "A", a3[e3 + 1] = "A") : "G" === r3 ? (i3[e3 + 1] = "", o3[e3 + 1] = "G", s3[e3 + 1] = "", a3[e3 + 1] = "G") : (i3[e3 + 1] = r3, o3[e3 + 1] = r3, s3[e3 + 1] = r3, a3[e3 + 1] = r3), e3++);
          return { A0_G0: i3.join(""), A0_G1: o3.join(""), A1_G0: s3.join(""), A1_G1: a3.join("") };
        }, e2.prototype.resolveAnchors = function(e3, t3) {
          return this.hasAnchor && this._anchorCache ? e3 ? t3 ? this._anchorCache.A1_G1 : this._anchorCache.A1_G0 : t3 ? this._anchorCache.A0_G1 : this._anchorCache.A0_G0 : this.source;
        }, e2;
      }();
      t2.RegExpSource = h2;
      var p2 = function() {
        function e2() {
          this._items = [], this._hasAnchors = false, this._cached = null, this._anchorCache = { A0_G0: null, A0_G1: null, A1_G0: null, A1_G1: null };
        }
        return e2.prototype.dispose = function() {
          this._disposeCaches();
        }, e2.prototype._disposeCaches = function() {
          this._cached && (this._cached.dispose(), this._cached = null), this._anchorCache.A0_G0 && (this._anchorCache.A0_G0.dispose(), this._anchorCache.A0_G0 = null), this._anchorCache.A0_G1 && (this._anchorCache.A0_G1.dispose(), this._anchorCache.A0_G1 = null), this._anchorCache.A1_G0 && (this._anchorCache.A1_G0.dispose(), this._anchorCache.A1_G0 = null), this._anchorCache.A1_G1 && (this._anchorCache.A1_G1.dispose(), this._anchorCache.A1_G1 = null);
        }, e2.prototype.push = function(e3) {
          this._items.push(e3), this._hasAnchors = this._hasAnchors || e3.hasAnchor;
        }, e2.prototype.unshift = function(e3) {
          this._items.unshift(e3), this._hasAnchors = this._hasAnchors || e3.hasAnchor;
        }, e2.prototype.length = function() {
          return this._items.length;
        }, e2.prototype.setSource = function(e3, t3) {
          this._items[e3].source !== t3 && (this._disposeCaches(), this._items[e3].setSource(t3));
        }, e2.prototype.compile = function(e3, t3, n2) {
          if (this._hasAnchors)
            return t3 ? n2 ? (this._anchorCache.A1_G1 || (this._anchorCache.A1_G1 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A1_G1) : (this._anchorCache.A1_G0 || (this._anchorCache.A1_G0 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A1_G0) : n2 ? (this._anchorCache.A0_G1 || (this._anchorCache.A0_G1 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A0_G1) : (this._anchorCache.A0_G0 || (this._anchorCache.A0_G0 = this._resolveAnchors(e3, t3, n2)), this._anchorCache.A0_G0);
          if (!this._cached) {
            var r3 = this._items.map(function(e4) {
              return e4.source;
            });
            this._cached = new c2(e3, r3, this._items.map(function(e4) {
              return e4.ruleId;
            }));
          }
          return this._cached;
        }, e2.prototype._resolveAnchors = function(e3, t3, n2) {
          var r3 = this._items.map(function(e4) {
            return e4.resolveAnchors(t3, n2);
          });
          return new c2(e3, r3, this._items.map(function(e4) {
            return e4.ruleId;
          }));
        }, e2;
      }();
      t2.RegExpSourceList = p2;
      var f2 = function(e2) {
        function t3(t4, n2, r3, i3, o3) {
          var s3 = e2.call(this, t4, n2, r3, null) || this;
          return s3._match = new h2(i3, s3.id), s3.captures = o3, s3._cachedCompiledPatterns = null, s3;
        }
        return i2(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);
        }, Object.defineProperty(t3.prototype, "debugMatchRegExp", { get: function() {
          return "" + this._match.source;
        }, enumerable: true, configurable: true }), t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          t4.push(this._match);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.MatchRule = f2;
      var d2 = function(e2) {
        function t3(t4, n2, r3, i3, o3) {
          var s3 = e2.call(this, t4, n2, r3, i3) || this;
          return s3.patterns = o3.patterns, s3.hasMissingPatterns = o3.hasMissingPatterns, s3._cachedCompiledPatterns = null, s3;
        }
        return i2(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          var r3, i3;
          for (r3 = 0, i3 = this.patterns.length; r3 < i3; r3++)
            e3.getRule(this.patterns[r3]).collectPatternsRecursive(e3, t4, false);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.IncludeOnlyRule = d2;
      var g = function(e2) {
        function t3(t4, n2, r3, i3, o3, s3, a3, c3, u3, l3) {
          var p3 = e2.call(this, t4, n2, r3, i3) || this;
          return p3._begin = new h2(o3, p3.id), p3.beginCaptures = s3, p3._end = new h2(a3 || "", -1), p3.endHasBackReferences = p3._end.hasBackReferences, p3.endCaptures = c3, p3.applyEndPatternLast = u3 || false, p3.patterns = l3.patterns, p3.hasMissingPatterns = l3.hasMissingPatterns, p3._cachedCompiledPatterns = null, p3;
        }
        return i2(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null);
        }, Object.defineProperty(t3.prototype, "debugBeginRegExp", { get: function() {
          return "" + this._begin.source;
        }, enumerable: true, configurable: true }), Object.defineProperty(t3.prototype, "debugEndRegExp", { get: function() {
          return "" + this._end.source;
        }, enumerable: true, configurable: true }), t3.prototype.getEndWithResolvedBackReferences = function(e3, t4) {
          return this._end.resolveBackReferences(e3, t4);
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          if (n2) {
            var r3, i3 = void 0;
            for (i3 = 0, r3 = this.patterns.length; i3 < r3; i3++)
              e3.getRule(this.patterns[i3]).collectPatternsRecursive(e3, t4, false);
          } else
            t4.push(this._begin);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true), this.applyEndPatternLast ? this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end) : this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end)), this._end.hasBackReferences && (this.applyEndPatternLast ? this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, t4) : this._cachedCompiledPatterns.setSource(0, t4)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.BeginEndRule = g;
      var m2 = function(e2) {
        function t3(t4, n2, r3, i3, o3, s3, a3, c3, u3) {
          var l3 = e2.call(this, t4, n2, r3, i3) || this;
          return l3._begin = new h2(o3, l3.id), l3.beginCaptures = s3, l3.whileCaptures = c3, l3._while = new h2(a3, -2), l3.whileHasBackReferences = l3._while.hasBackReferences, l3.patterns = u3.patterns, l3.hasMissingPatterns = u3.hasMissingPatterns, l3._cachedCompiledPatterns = null, l3._cachedCompiledWhilePatterns = null, l3;
        }
        return i2(t3, e2), t3.prototype.dispose = function() {
          this._cachedCompiledPatterns && (this._cachedCompiledPatterns.dispose(), this._cachedCompiledPatterns = null), this._cachedCompiledWhilePatterns && (this._cachedCompiledWhilePatterns.dispose(), this._cachedCompiledWhilePatterns = null);
        }, Object.defineProperty(t3.prototype, "debugBeginRegExp", { get: function() {
          return "" + this._begin.source;
        }, enumerable: true, configurable: true }), Object.defineProperty(t3.prototype, "debugWhileRegExp", { get: function() {
          return "" + this._while.source;
        }, enumerable: true, configurable: true }), t3.prototype.getWhileWithResolvedBackReferences = function(e3, t4) {
          return this._while.resolveBackReferences(e3, t4);
        }, t3.prototype.collectPatternsRecursive = function(e3, t4, n2) {
          if (n2) {
            var r3, i3 = void 0;
            for (i3 = 0, r3 = this.patterns.length; i3 < r3; i3++)
              e3.getRule(this.patterns[i3]).collectPatternsRecursive(e3, t4, false);
          } else
            t4.push(this._begin);
        }, t3.prototype.compile = function(e3, t4, n2, r3) {
          return this._cachedCompiledPatterns || (this._cachedCompiledPatterns = new p2(), this.collectPatternsRecursive(e3, this._cachedCompiledPatterns, true)), this._cachedCompiledPatterns.compile(e3, n2, r3);
        }, t3.prototype.compileWhile = function(e3, t4, n2, r3) {
          return this._cachedCompiledWhilePatterns || (this._cachedCompiledWhilePatterns = new p2(), this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while)), this._while.hasBackReferences && this._cachedCompiledWhilePatterns.setSource(0, t4 || ""), this._cachedCompiledWhilePatterns.compile(e3, n2, r3);
        }, t3;
      }(u2);
      t2.BeginWhileRule = m2;
      var _2 = function() {
        function e2() {
        }
        return e2.createCaptureRule = function(e3, t3, n2, r3, i3) {
          return e3.registerRule(function(e4) {
            return new l2(t3, e4, n2, r3, i3);
          });
        }, e2.getCompiledRuleId = function(t3, n2, r3) {
          return t3.id || n2.registerRule(function(i3) {
            if (t3.id = i3, t3.match)
              return new f2(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.match, e2._compileCaptures(t3.captures, n2, r3));
            if (void 0 === t3.begin) {
              t3.repository && (r3 = o2.mergeObjects({}, r3, t3.repository));
              var s3 = t3.patterns;
              return void 0 === s3 && t3.include && (s3 = [{ include: t3.include }]), new d2(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.contentName, e2._compilePatterns(s3, n2, r3));
            }
            return t3.while ? new m2(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.contentName, t3.begin, e2._compileCaptures(t3.beginCaptures || t3.captures, n2, r3), t3.while, e2._compileCaptures(t3.whileCaptures || t3.captures, n2, r3), e2._compilePatterns(t3.patterns, n2, r3)) : new g(t3.$vscodeTextmateLocation, t3.id, t3.name, t3.contentName, t3.begin, e2._compileCaptures(t3.beginCaptures || t3.captures, n2, r3), t3.end, e2._compileCaptures(t3.endCaptures || t3.captures, n2, r3), t3.applyEndPatternLast, e2._compilePatterns(t3.patterns, n2, r3));
          }), t3.id;
        }, e2._compileCaptures = function(t3, n2, r3) {
          var i3 = [];
          if (t3) {
            var o3 = 0;
            for (var s3 in t3) {
              if ("$vscodeTextmateLocation" !== s3)
                (c3 = parseInt(s3, 10)) > o3 && (o3 = c3);
            }
            for (var a3 = 0; a3 <= o3; a3++)
              i3[a3] = null;
            for (var s3 in t3)
              if ("$vscodeTextmateLocation" !== s3) {
                var c3 = parseInt(s3, 10), u3 = 0;
                t3[s3].patterns && (u3 = e2.getCompiledRuleId(t3[s3], n2, r3)), i3[c3] = e2.createCaptureRule(n2, t3[s3].$vscodeTextmateLocation, t3[s3].name, t3[s3].contentName, u3);
              }
          }
          return i3;
        }, e2._compilePatterns = function(t3, n2, r3) {
          var i3 = [];
          if (t3)
            for (var o3 = 0, s3 = t3.length; o3 < s3; o3++) {
              var a3 = t3[o3], c3 = -1;
              if (a3.include)
                if ("#" === a3.include.charAt(0)) {
                  var u3 = r3[a3.include.substr(1)];
                  u3 && (c3 = e2.getCompiledRuleId(u3, n2, r3));
                } else if ("$base" === a3.include || "$self" === a3.include)
                  c3 = e2.getCompiledRuleId(r3[a3.include], n2, r3);
                else {
                  var l3 = null, h3 = null, p3 = a3.include.indexOf("#");
                  p3 >= 0 ? (l3 = a3.include.substring(0, p3), h3 = a3.include.substring(p3 + 1)) : l3 = a3.include;
                  var f3 = n2.getExternalGrammar(l3, r3);
                  if (f3)
                    if (h3) {
                      var _3 = f3.repository[h3];
                      _3 && (c3 = e2.getCompiledRuleId(_3, n2, f3.repository));
                    } else
                      c3 = e2.getCompiledRuleId(f3.repository.$self, n2, f3.repository);
                }
              else
                c3 = e2.getCompiledRuleId(a3, n2, r3);
              if (-1 !== c3) {
                var y2 = n2.getRule(c3), v = false;
                if ((y2 instanceof d2 || y2 instanceof g || y2 instanceof m2) && y2.hasMissingPatterns && 0 === y2.patterns.length && (v = true), v)
                  continue;
                i3.push(c3);
              }
            }
          return { patterns: i3, hasMissingPatterns: (t3 ? t3.length : 0) !== i3.length };
        }, e2;
      }();
      t2.RuleFactory = _2;
    }, function(e, t2, n) {
      function r2(e2) {
        return !!e2 && !!e2.match(/[\w\.:]+/);
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.createMatchers = function(e2, t3) {
        for (var n2, i2, o2, s2 = [], a2 = (o2 = (i2 = /([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g).exec(n2 = e2), { next: function() {
          if (!o2)
            return null;
          var e3 = o2[0];
          return o2 = i2.exec(n2), e3;
        } }), c2 = a2.next(); null !== c2; ) {
          var u2 = 0;
          if (2 === c2.length && ":" === c2.charAt(1)) {
            switch (c2.charAt(0)) {
              case "R":
                u2 = 1;
                break;
              case "L":
                u2 = -1;
                break;
              default:
                console.log("Unknown priority " + c2 + " in scope selector");
            }
            c2 = a2.next();
          }
          var l2 = p2();
          if (s2.push({ matcher: l2, priority: u2 }), "," !== c2)
            break;
          c2 = a2.next();
        }
        return s2;
        function h2() {
          if ("-" === c2) {
            c2 = a2.next();
            var e3 = h2();
            return function(t4) {
              return !!e3 && !e3(t4);
            };
          }
          if ("(" === c2) {
            c2 = a2.next();
            var n3 = function() {
              var e4 = [], t4 = p2();
              for (; t4 && (e4.push(t4), "|" === c2 || "," === c2); ) {
                do {
                  c2 = a2.next();
                } while ("|" === c2 || "," === c2);
                t4 = p2();
              }
              return function(t5) {
                return e4.some(function(e5) {
                  return e5(t5);
                });
              };
            }();
            return ")" === c2 && (c2 = a2.next()), n3;
          }
          if (r2(c2)) {
            var i3 = [];
            do {
              i3.push(c2), c2 = a2.next();
            } while (r2(c2));
            return function(e4) {
              return t3(i3, e4);
            };
          }
          return null;
        }
        function p2() {
          for (var e3 = [], t4 = h2(); t4; )
            e3.push(t4), t4 = h2();
          return function(t5) {
            return e3.every(function(e4) {
              return e4(t5);
            });
          };
        }
      };
    }, function(e, t2) {
      var n, r2, i2 = e.exports = {};
      function o2() {
        throw new Error("setTimeout has not been defined");
      }
      function s2() {
        throw new Error("clearTimeout has not been defined");
      }
      function a2(e2) {
        if (n === setTimeout)
          return setTimeout(e2, 0);
        if ((n === o2 || !n) && setTimeout)
          return n = setTimeout, setTimeout(e2, 0);
        try {
          return n(e2, 0);
        } catch (t3) {
          try {
            return n.call(null, e2, 0);
          } catch (t4) {
            return n.call(this, e2, 0);
          }
        }
      }
      !function() {
        try {
          n = "function" == typeof setTimeout ? setTimeout : o2;
        } catch (e2) {
          n = o2;
        }
        try {
          r2 = "function" == typeof clearTimeout ? clearTimeout : s2;
        } catch (e2) {
          r2 = s2;
        }
      }();
      var c2, u2 = [], l2 = false, h2 = -1;
      function p2() {
        l2 && c2 && (l2 = false, c2.length ? u2 = c2.concat(u2) : h2 = -1, u2.length && f2());
      }
      function f2() {
        if (!l2) {
          var e2 = a2(p2);
          l2 = true;
          for (var t3 = u2.length; t3; ) {
            for (c2 = u2, u2 = []; ++h2 < t3; )
              c2 && c2[h2].run();
            h2 = -1, t3 = u2.length;
          }
          c2 = null, l2 = false, function(e3) {
            if (r2 === clearTimeout)
              return clearTimeout(e3);
            if ((r2 === s2 || !r2) && clearTimeout)
              return r2 = clearTimeout, clearTimeout(e3);
            try {
              r2(e3);
            } catch (t4) {
              try {
                return r2.call(null, e3);
              } catch (t5) {
                return r2.call(this, e3);
              }
            }
          }(e2);
        }
      }
      function d2(e2, t3) {
        this.fun = e2, this.array = t3;
      }
      function g() {
      }
      i2.nextTick = function(e2) {
        var t3 = new Array(arguments.length - 1);
        if (arguments.length > 1)
          for (var n2 = 1; n2 < arguments.length; n2++)
            t3[n2 - 1] = arguments[n2];
        u2.push(new d2(e2, t3)), 1 !== u2.length || l2 || a2(f2);
      }, d2.prototype.run = function() {
        this.fun.apply(null, this.array);
      }, i2.title = "browser", i2.browser = true, i2.env = {}, i2.argv = [], i2.version = "", i2.versions = {}, i2.on = g, i2.addListener = g, i2.once = g, i2.off = g, i2.removeListener = g, i2.removeAllListeners = g, i2.emit = g, i2.prependListener = g, i2.prependOnceListener = g, i2.listeners = function(e2) {
        return [];
      }, i2.binding = function(e2) {
        throw new Error("process.binding is not supported");
      }, i2.cwd = function() {
        return "/";
      }, i2.chdir = function(e2) {
        throw new Error("process.chdir is not supported");
      }, i2.umask = function() {
        return 0;
      };
    }, function(e, t2, n) {
      Object.defineProperty(t2, "__esModule", { value: true });
      var r2 = n(9), i2 = n(2), o2 = n(10);
      t2.parseRawGrammar = function(e2, t3) {
        return void 0 === t3 && (t3 = null), null !== t3 && /\.json$/.test(t3) ? function(e3, t4) {
          if (i2.DebugFlags.InDebugMode)
            return o2.parse(e3, t4, true);
          return JSON.parse(e3);
        }(e2, t3) : function(e3, t4) {
          if (i2.DebugFlags.InDebugMode)
            return r2.parseWithLocation(e3, t4, "$vscodeTextmateLocation");
          return r2.parse(e3);
        }(e2, t3);
      };
    }, function(e, t2, n) {
      function r2(e2, t3, n2) {
        var r3 = e2.length, i2 = 0, o2 = 1, s2 = 0;
        function a2(t4) {
          if (null === n2)
            i2 += t4;
          else
            for (; t4 > 0; ) {
              10 === e2.charCodeAt(i2) ? (i2++, o2++, s2 = 0) : (i2++, s2++), t4--;
            }
        }
        function c2(e3) {
          null === n2 ? i2 = e3 : a2(e3 - i2);
        }
        function u2() {
          for (; i2 < r3; ) {
            var t4 = e2.charCodeAt(i2);
            if (32 !== t4 && 9 !== t4 && 13 !== t4 && 10 !== t4)
              break;
            a2(1);
          }
        }
        function l2(t4) {
          return e2.substr(i2, t4.length) === t4 && (a2(t4.length), true);
        }
        function h2(t4) {
          var n3 = e2.indexOf(t4, i2);
          c2(-1 !== n3 ? n3 + t4.length : r3);
        }
        function p2(t4) {
          var n3 = e2.indexOf(t4, i2);
          if (-1 !== n3) {
            var o3 = e2.substring(i2, n3);
            return c2(n3 + t4.length), o3;
          }
          o3 = e2.substr(i2);
          return c2(r3), o3;
        }
        r3 > 0 && 65279 === e2.charCodeAt(0) && (i2 = 1);
        var f2 = 0, d2 = null, g = [], m2 = [], _2 = null;
        function y2(e3, t4) {
          g.push(f2), m2.push(d2), f2 = e3, d2 = t4;
        }
        function v() {
          if (0 === g.length)
            return b2("illegal state stack");
          f2 = g.pop(), d2 = m2.pop();
        }
        function b2(t4) {
          throw new Error("Near offset " + i2 + ": " + t4 + " ~~~" + e2.substr(i2, 50) + "~~~");
        }
        var C2, w2, k, R = function() {
          if (null === _2)
            return b2("missing <key>");
          var e3 = {};
          null !== n2 && (e3[n2] = { filename: t3, line: o2, char: s2 }), d2[_2] = e3, _2 = null, y2(1, e3);
        }, S2 = function() {
          if (null === _2)
            return b2("missing <key>");
          var e3 = [];
          d2[_2] = e3, _2 = null, y2(2, e3);
        }, P = function() {
          var e3 = {};
          null !== n2 && (e3[n2] = { filename: t3, line: o2, char: s2 }), d2.push(e3), y2(1, e3);
        }, x2 = function() {
          var e3 = [];
          d2.push(e3), y2(2, e3);
        };
        function I() {
          if (1 !== f2)
            return b2("unexpected </dict>");
          v();
        }
        function A() {
          return 1 === f2 || 2 !== f2 ? b2("unexpected </array>") : void v();
        }
        function T(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function L2(e3) {
          if (isNaN(e3))
            return b2("cannot parse float");
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function M2(e3) {
          if (isNaN(e3))
            return b2("cannot parse integer");
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function G(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function D2(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function N2(e3) {
          if (1 === f2) {
            if (null === _2)
              return b2("missing <key>");
            d2[_2] = e3, _2 = null;
          } else
            2 === f2 ? d2.push(e3) : d2 = e3;
        }
        function E2(e3) {
          if (e3.isClosed)
            return "";
          var t4 = p2("</");
          return h2(">"), t4.replace(/&#([0-9]+);/g, function(e4, t5) {
            return String.fromCodePoint(parseInt(t5, 10));
          }).replace(/&#x([0-9a-f]+);/g, function(e4, t5) {
            return String.fromCodePoint(parseInt(t5, 16));
          }).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g, function(e4) {
            switch (e4) {
              case "&amp;":
                return "&";
              case "&lt;":
                return "<";
              case "&gt;":
                return ">";
              case "&quot;":
                return '"';
              case "&apos;":
                return "'";
            }
            return e4;
          });
        }
        for (; i2 < r3 && (u2(), !(i2 >= r3)); ) {
          var O2 = e2.charCodeAt(i2);
          if (a2(1), 60 !== O2)
            return b2("expected <");
          if (i2 >= r3)
            return b2("unexpected end of input");
          var j = e2.charCodeAt(i2);
          if (63 !== j)
            if (33 !== j) {
              if (47 === j) {
                if (a2(1), u2(), l2("plist")) {
                  h2(">");
                  continue;
                }
                if (l2("dict")) {
                  h2(">"), I();
                  continue;
                }
                if (l2("array")) {
                  h2(">"), A();
                  continue;
                }
                return b2("unexpected closed tag");
              }
              var F2 = (w2 = void 0, k = void 0, w2 = p2(">"), k = false, 47 === w2.charCodeAt(w2.length - 1) && (k = true, w2 = w2.substring(0, w2.length - 1)), { name: w2.trim(), isClosed: k });
              switch (F2.name) {
                case "dict":
                  1 === f2 ? R() : 2 === f2 ? P() : (d2 = {}, null !== n2 && (d2[n2] = { filename: t3, line: o2, char: s2 }), y2(1, d2)), F2.isClosed && I();
                  continue;
                case "array":
                  1 === f2 ? S2() : 2 === f2 ? x2() : y2(2, d2 = []), F2.isClosed && A();
                  continue;
                case "key":
                  C2 = E2(F2), 1 !== f2 ? b2("unexpected <key>") : null !== _2 ? b2("too many <key>") : _2 = C2;
                  continue;
                case "string":
                  T(E2(F2));
                  continue;
                case "real":
                  L2(parseFloat(E2(F2)));
                  continue;
                case "integer":
                  M2(parseInt(E2(F2), 10));
                  continue;
                case "date":
                  G(new Date(E2(F2)));
                  continue;
                case "data":
                  D2(E2(F2));
                  continue;
                case "true":
                  E2(F2), N2(true);
                  continue;
                case "false":
                  E2(F2), N2(false);
                  continue;
              }
              if (!/^plist/.test(F2.name))
                return b2("unexpected opened tag " + F2.name);
            } else {
              if (a2(1), l2("--")) {
                h2("-->");
                continue;
              }
              h2(">");
            }
          else
            a2(1), h2("?>");
        }
        return d2;
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.parseWithLocation = function(e2, t3, n2) {
        return r2(e2, t3, n2);
      }, t2.parse = function(e2) {
        return r2(e2, null, null);
      };
    }, function(e, t2, n) {
      function r2(e2, t3) {
        throw new Error("Near offset " + e2.pos + ": " + t3 + " ~~~" + e2.source.substr(e2.pos, 50) + "~~~");
      }
      Object.defineProperty(t2, "__esModule", { value: true }), t2.parse = function(e2, t3, n2) {
        var a2 = new i2(e2), c2 = new o2(), u2 = 0, l2 = null, h2 = [], p2 = [];
        function f2() {
          h2.push(u2), p2.push(l2);
        }
        function d2() {
          u2 = h2.pop(), l2 = p2.pop();
        }
        function g(e3) {
          r2(a2, e3);
        }
        for (; s2(a2, c2); ) {
          if (0 === u2) {
            if (null !== l2 && g("too many constructs in root"), 3 === c2.type) {
              l2 = {}, n2 && (l2.$vscodeTextmateLocation = c2.toLocation(t3)), f2(), u2 = 1;
              continue;
            }
            if (2 === c2.type) {
              l2 = [], f2(), u2 = 4;
              continue;
            }
            g("unexpected token in root");
          }
          if (2 === u2) {
            if (5 === c2.type) {
              d2();
              continue;
            }
            if (7 === c2.type) {
              u2 = 3;
              continue;
            }
            g("expected , or }");
          }
          if (1 === u2 || 3 === u2) {
            if (1 === u2 && 5 === c2.type) {
              d2();
              continue;
            }
            if (1 === c2.type) {
              var m2 = c2.value;
              if (s2(a2, c2) && 6 === c2.type || g("expected colon"), s2(a2, c2) || g("expected value"), u2 = 2, 1 === c2.type) {
                l2[m2] = c2.value;
                continue;
              }
              if (8 === c2.type) {
                l2[m2] = null;
                continue;
              }
              if (9 === c2.type) {
                l2[m2] = true;
                continue;
              }
              if (10 === c2.type) {
                l2[m2] = false;
                continue;
              }
              if (11 === c2.type) {
                l2[m2] = parseFloat(c2.value);
                continue;
              }
              if (2 === c2.type) {
                var _2 = [];
                l2[m2] = _2, f2(), u2 = 4, l2 = _2;
                continue;
              }
              if (3 === c2.type) {
                var y2 = {};
                n2 && (y2.$vscodeTextmateLocation = c2.toLocation(t3)), l2[m2] = y2, f2(), u2 = 1, l2 = y2;
                continue;
              }
            }
            g("unexpected token in dict");
          }
          if (5 === u2) {
            if (4 === c2.type) {
              d2();
              continue;
            }
            if (7 === c2.type) {
              u2 = 6;
              continue;
            }
            g("expected , or ]");
          }
          if (4 === u2 || 6 === u2) {
            if (4 === u2 && 4 === c2.type) {
              d2();
              continue;
            }
            if (u2 = 5, 1 === c2.type) {
              l2.push(c2.value);
              continue;
            }
            if (8 === c2.type) {
              l2.push(null);
              continue;
            }
            if (9 === c2.type) {
              l2.push(true);
              continue;
            }
            if (10 === c2.type) {
              l2.push(false);
              continue;
            }
            if (11 === c2.type) {
              l2.push(parseFloat(c2.value));
              continue;
            }
            if (2 === c2.type) {
              _2 = [];
              l2.push(_2), f2(), u2 = 4, l2 = _2;
              continue;
            }
            if (3 === c2.type) {
              y2 = {};
              n2 && (y2.$vscodeTextmateLocation = c2.toLocation(t3)), l2.push(y2), f2(), u2 = 1, l2 = y2;
              continue;
            }
            g("unexpected token in array");
          }
          g("unknown state");
        }
        return 0 !== p2.length && g("unclosed constructs"), l2;
      };
      var i2 = function(e2) {
        this.source = e2, this.pos = 0, this.len = e2.length, this.line = 1, this.char = 0;
      }, o2 = function() {
        function e2() {
          this.value = null, this.type = 0, this.offset = -1, this.len = -1, this.line = -1, this.char = -1;
        }
        return e2.prototype.toLocation = function(e3) {
          return { filename: e3, line: this.line, char: this.char };
        }, e2;
      }();
      function s2(e2, t3) {
        t3.value = null, t3.type = 0, t3.offset = -1, t3.len = -1, t3.line = -1, t3.char = -1;
        for (var n2, i3 = e2.source, o3 = e2.pos, s3 = e2.len, a2 = e2.line, c2 = e2.char; ; ) {
          if (o3 >= s3)
            return false;
          if (32 !== (n2 = i3.charCodeAt(o3)) && 9 !== n2 && 13 !== n2) {
            if (10 !== n2)
              break;
            o3++, a2++, c2 = 0;
          } else
            o3++, c2++;
        }
        if (t3.offset = o3, t3.line = a2, t3.char = c2, 34 === n2) {
          for (t3.type = 1, o3++, c2++; ; ) {
            if (o3 >= s3)
              return false;
            if (n2 = i3.charCodeAt(o3), o3++, c2++, 92 !== n2) {
              if (34 === n2)
                break;
            } else
              o3++, c2++;
          }
          t3.value = i3.substring(t3.offset + 1, o3 - 1).replace(/\\u([0-9A-Fa-f]{4})/g, function(e3, t4) {
            return String.fromCodePoint(parseInt(t4, 16));
          }).replace(/\\(.)/g, function(t4, n3) {
            switch (n3) {
              case '"':
                return '"';
              case "\\":
                return "\\";
              case "/":
                return "/";
              case "b":
                return "\b";
              case "f":
                return "\f";
              case "n":
                return "\n";
              case "r":
                return "\r";
              case "t":
                return "	";
              default:
                r2(e2, "invalid escape sequence");
            }
            throw new Error("unreachable");
          });
        } else if (91 === n2)
          t3.type = 2, o3++, c2++;
        else if (123 === n2)
          t3.type = 3, o3++, c2++;
        else if (93 === n2)
          t3.type = 4, o3++, c2++;
        else if (125 === n2)
          t3.type = 5, o3++, c2++;
        else if (58 === n2)
          t3.type = 6, o3++, c2++;
        else if (44 === n2)
          t3.type = 7, o3++, c2++;
        else if (110 === n2) {
          if (t3.type = 8, o3++, c2++, 117 !== (n2 = i3.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 108 !== (n2 = i3.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 108 !== (n2 = i3.charCodeAt(o3)))
            return false;
          o3++, c2++;
        } else if (116 === n2) {
          if (t3.type = 9, o3++, c2++, 114 !== (n2 = i3.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 117 !== (n2 = i3.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 101 !== (n2 = i3.charCodeAt(o3)))
            return false;
          o3++, c2++;
        } else if (102 === n2) {
          if (t3.type = 10, o3++, c2++, 97 !== (n2 = i3.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 108 !== (n2 = i3.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 115 !== (n2 = i3.charCodeAt(o3)))
            return false;
          if (o3++, c2++, 101 !== (n2 = i3.charCodeAt(o3)))
            return false;
          o3++, c2++;
        } else
          for (t3.type = 11; ; ) {
            if (o3 >= s3)
              return false;
            if (!(46 === (n2 = i3.charCodeAt(o3)) || n2 >= 48 && n2 <= 57 || 101 === n2 || 69 === n2 || 45 === n2 || 43 === n2))
              break;
            o3++, c2++;
          }
        return t3.len = o3 - t3.offset, null === t3.value && (t3.value = i3.substr(t3.offset, t3.len)), e2.pos = o3, e2.line = a2, e2.char = c2, true;
      }
    }, function(e, t2, n) {
      Object.defineProperty(t2, "__esModule", { value: true });
      var r2 = function(e2, t3, n2, r3, i3, o3) {
        this.scope = e2, this.parentScopes = t3, this.index = n2, this.fontStyle = r3, this.foreground = i3, this.background = o3;
      };
      function i2(e2) {
        return !!/^#[0-9a-f]{6}$/i.test(e2) || (!!/^#[0-9a-f]{8}$/i.test(e2) || (!!/^#[0-9a-f]{3}$/i.test(e2) || !!/^#[0-9a-f]{4}$/i.test(e2)));
      }
      function o2(e2) {
        if (!e2)
          return [];
        if (!e2.settings || !Array.isArray(e2.settings))
          return [];
        for (var t3 = e2.settings, n2 = [], o3 = 0, s3 = 0, a3 = t3.length; s3 < a3; s3++) {
          var c3 = t3[s3];
          if (c3.settings) {
            var u3 = void 0;
            if ("string" == typeof c3.scope)
              u3 = c3.scope.replace(/^[,]+/, "").replace(/[,]+$/, "").split(",");
            else
              u3 = Array.isArray(c3.scope) ? c3.scope : [""];
            var l3 = -1;
            if ("string" == typeof c3.settings.fontStyle) {
              l3 = 0;
              for (var h3 = 0, p3 = (g = c3.settings.fontStyle.split(" ")).length; h3 < p3; h3++) {
                switch (g[h3]) {
                  case "italic":
                    l3 |= 1;
                    break;
                  case "bold":
                    l3 |= 2;
                    break;
                  case "underline":
                    l3 |= 4;
                }
              }
            }
            var f2 = null;
            "string" == typeof c3.settings.foreground && i2(c3.settings.foreground) && (f2 = c3.settings.foreground);
            var d2 = null;
            "string" == typeof c3.settings.background && i2(c3.settings.background) && (d2 = c3.settings.background);
            for (h3 = 0, p3 = u3.length; h3 < p3; h3++) {
              var g, m2 = (g = u3[h3].trim().split(" "))[g.length - 1], _2 = null;
              g.length > 1 && (_2 = g.slice(0, g.length - 1)).reverse(), n2[o3++] = new r2(m2, _2, s3, l3, f2, d2);
            }
          }
        }
        return n2;
      }
      function s2(e2, t3) {
        e2.sort(function(e3, t4) {
          var n3 = u2(e3.scope, t4.scope);
          return 0 !== n3 || 0 !== (n3 = l2(e3.parentScopes, t4.parentScopes)) ? n3 : e3.index - t4.index;
        });
        for (var n2 = 0, r3 = "#000000", i3 = "#ffffff"; e2.length >= 1 && "" === e2[0].scope; ) {
          var o3 = e2.shift();
          -1 !== o3.fontStyle && (n2 = o3.fontStyle), null !== o3.foreground && (r3 = o3.foreground), null !== o3.background && (i3 = o3.background);
        }
        for (var s3 = new a2(t3), f2 = new h2(0, null, n2, s3.getId(r3), s3.getId(i3)), d2 = new p2(new h2(0, null, -1, 0, 0), []), g = 0, m2 = e2.length; g < m2; g++) {
          var _2 = e2[g];
          d2.insert(0, _2.scope, _2.parentScopes, _2.fontStyle, s3.getId(_2.foreground), s3.getId(_2.background));
        }
        return new c2(s3, f2, d2);
      }
      t2.ParsedThemeRule = r2, t2.parseTheme = o2;
      var a2 = function() {
        function e2(e3) {
          if (this._lastColorId = 0, this._id2color = [], this._color2id = /* @__PURE__ */ Object.create(null), Array.isArray(e3)) {
            this._isFrozen = true;
            for (var t3 = 0, n2 = e3.length; t3 < n2; t3++)
              this._color2id[e3[t3]] = t3, this._id2color[t3] = e3[t3];
          } else
            this._isFrozen = false;
        }
        return e2.prototype.getId = function(e3) {
          if (null === e3)
            return 0;
          e3 = e3.toUpperCase();
          var t3 = this._color2id[e3];
          if (t3)
            return t3;
          if (this._isFrozen)
            throw new Error("Missing color in color map - " + e3);
          return t3 = ++this._lastColorId, this._color2id[e3] = t3, this._id2color[t3] = e3, t3;
        }, e2.prototype.getColorMap = function() {
          return this._id2color.slice(0);
        }, e2;
      }();
      t2.ColorMap = a2;
      var c2 = function() {
        function e2(e3, t3, n2) {
          this._colorMap = e3, this._root = n2, this._defaults = t3, this._cache = {};
        }
        return e2.createFromRawTheme = function(e3, t3) {
          return this.createFromParsedTheme(o2(e3), t3);
        }, e2.createFromParsedTheme = function(e3, t3) {
          return s2(e3, t3);
        }, e2.prototype.getColorMap = function() {
          return this._colorMap.getColorMap();
        }, e2.prototype.getDefaults = function() {
          return this._defaults;
        }, e2.prototype.match = function(e3) {
          return this._cache.hasOwnProperty(e3) || (this._cache[e3] = this._root.match(e3)), this._cache[e3];
        }, e2;
      }();
      function u2(e2, t3) {
        return e2 < t3 ? -1 : e2 > t3 ? 1 : 0;
      }
      function l2(e2, t3) {
        if (null === e2 && null === t3)
          return 0;
        if (!e2)
          return -1;
        if (!t3)
          return 1;
        var n2 = e2.length, r3 = t3.length;
        if (n2 === r3) {
          for (var i3 = 0; i3 < n2; i3++) {
            var o3 = u2(e2[i3], t3[i3]);
            if (0 !== o3)
              return o3;
          }
          return 0;
        }
        return n2 - r3;
      }
      t2.Theme = c2, t2.strcmp = u2, t2.strArrCmp = l2;
      var h2 = function() {
        function e2(e3, t3, n2, r3, i3) {
          this.scopeDepth = e3, this.parentScopes = t3, this.fontStyle = n2, this.foreground = r3, this.background = i3;
        }
        return e2.prototype.clone = function() {
          return new e2(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);
        }, e2.cloneArr = function(e3) {
          for (var t3 = [], n2 = 0, r3 = e3.length; n2 < r3; n2++)
            t3[n2] = e3[n2].clone();
          return t3;
        }, e2.prototype.acceptOverwrite = function(e3, t3, n2, r3) {
          this.scopeDepth > e3 ? console.log("how did this happen?") : this.scopeDepth = e3, -1 !== t3 && (this.fontStyle = t3), 0 !== n2 && (this.foreground = n2), 0 !== r3 && (this.background = r3);
        }, e2;
      }();
      t2.ThemeTrieElementRule = h2;
      var p2 = function() {
        function e2(e3, t3, n2) {
          void 0 === t3 && (t3 = []), void 0 === n2 && (n2 = {}), this._mainRule = e3, this._rulesWithParentScopes = t3, this._children = n2;
        }
        return e2._sortBySpecificity = function(e3) {
          return 1 === e3.length || e3.sort(this._cmpBySpecificity), e3;
        }, e2._cmpBySpecificity = function(e3, t3) {
          if (e3.scopeDepth === t3.scopeDepth) {
            var n2 = e3.parentScopes, r3 = t3.parentScopes, i3 = null === n2 ? 0 : n2.length, o3 = null === r3 ? 0 : r3.length;
            if (i3 === o3)
              for (var s3 = 0; s3 < i3; s3++) {
                var a3 = n2[s3].length, c3 = r3[s3].length;
                if (a3 !== c3)
                  return c3 - a3;
              }
            return o3 - i3;
          }
          return t3.scopeDepth - e3.scopeDepth;
        }, e2.prototype.match = function(t3) {
          if ("" === t3)
            return e2._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));
          var n2, r3, i3 = t3.indexOf(".");
          return -1 === i3 ? (n2 = t3, r3 = "") : (n2 = t3.substring(0, i3), r3 = t3.substring(i3 + 1)), this._children.hasOwnProperty(n2) ? this._children[n2].match(r3) : e2._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));
        }, e2.prototype.insert = function(t3, n2, r3, i3, o3, s3) {
          if ("" !== n2) {
            var a3, c3, u3, l3 = n2.indexOf(".");
            -1 === l3 ? (a3 = n2, c3 = "") : (a3 = n2.substring(0, l3), c3 = n2.substring(l3 + 1)), this._children.hasOwnProperty(a3) ? u3 = this._children[a3] : (u3 = new e2(this._mainRule.clone(), h2.cloneArr(this._rulesWithParentScopes)), this._children[a3] = u3), u3.insert(t3 + 1, c3, r3, i3, o3, s3);
          } else
            this._doInsertHere(t3, r3, i3, o3, s3);
        }, e2.prototype._doInsertHere = function(e3, t3, n2, r3, i3) {
          if (null !== t3) {
            for (var o3 = 0, s3 = this._rulesWithParentScopes.length; o3 < s3; o3++) {
              var a3 = this._rulesWithParentScopes[o3];
              if (0 === l2(a3.parentScopes, t3))
                return void a3.acceptOverwrite(e3, n2, r3, i3);
            }
            -1 === n2 && (n2 = this._mainRule.fontStyle), 0 === r3 && (r3 = this._mainRule.foreground), 0 === i3 && (i3 = this._mainRule.background), this._rulesWithParentScopes.push(new h2(e3, t3, n2, r3, i3));
          } else
            this._mainRule.acceptOverwrite(e3, n2, r3, i3);
        }, e2;
      }();
      t2.ThemeTrieElement = p2;
    }]);
  });
})(main);
const languages = [
  {
    id: "abap",
    scopeName: "source.abap",
    path: "abap.tmLanguage.json",
    samplePath: "abap.sample"
  },
  {
    id: "actionscript-3",
    scopeName: "source.actionscript.3",
    path: "actionscript-3.tmLanguage.json",
    samplePath: "actionscript-3.sample"
  },
  {
    id: "ada",
    scopeName: "source.ada",
    path: "ada.tmLanguage.json",
    samplePath: "ada.sample"
  },
  {
    id: "apache",
    scopeName: "source.apacheconf",
    path: "apache.tmLanguage.json"
  },
  {
    id: "apex",
    scopeName: "source.apex",
    path: "apex.tmLanguage.json",
    samplePath: "apex.sample"
  },
  {
    id: "apl",
    scopeName: "source.apl",
    path: "apl.tmLanguage.json",
    embeddedLangs: ["html", "xml", "css", "javascript", "json"]
  },
  {
    id: "applescript",
    scopeName: "source.applescript",
    path: "applescript.tmLanguage.json",
    samplePath: "applescript.sample"
  },
  {
    id: "asm",
    scopeName: "source.asm.x86_64",
    path: "asm.tmLanguage.json",
    samplePath: "asm.sample"
  },
  {
    id: "astro",
    scopeName: "text.html.astro",
    path: "astro.tmLanguage.json",
    samplePath: "astro.sample",
    embeddedLangs: ["css", "sass", "scss", "tsx"]
  },
  {
    id: "awk",
    scopeName: "source.awk",
    path: "awk.tmLanguage.json",
    samplePath: "awk.sample"
  },
  {
    id: "ballerina",
    scopeName: "source.ballerina",
    path: "ballerina.tmLanguage.json",
    samplePath: "ballerina.sample"
  },
  {
    id: "bat",
    scopeName: "source.batchfile",
    path: "bat.tmLanguage.json",
    samplePath: "bat.sample",
    aliases: ["batch"]
  },
  {
    id: "c",
    scopeName: "source.c",
    path: "c.tmLanguage.json",
    samplePath: "c.sample"
  },
  {
    id: "clojure",
    scopeName: "source.clojure",
    path: "clojure.tmLanguage.json",
    samplePath: "clojure.sample",
    aliases: ["clj"]
  },
  {
    id: "cobol",
    scopeName: "source.cobol",
    path: "cobol.tmLanguage.json",
    samplePath: "cobol.sample",
    embeddedLangs: ["sql", "html", "java"]
  },
  {
    id: "coffee",
    scopeName: "source.coffee",
    path: "coffee.tmLanguage.json",
    samplePath: "coffee.sample",
    embeddedLangs: ["javascript"]
  },
  {
    id: "cpp",
    scopeName: "source.cpp",
    path: "cpp.tmLanguage.json",
    samplePath: "cpp.sample",
    embeddedLangs: ["sql"]
  },
  {
    id: "crystal",
    scopeName: "source.crystal",
    path: "crystal.tmLanguage.json",
    samplePath: "crystal.sample",
    embeddedLangs: ["html", "sql", "css", "c", "javascript", "shellscript"]
  },
  {
    id: "csharp",
    scopeName: "source.cs",
    path: "csharp.tmLanguage.json",
    samplePath: "csharp.sample",
    aliases: ["c#"]
  },
  {
    id: "css",
    scopeName: "source.css",
    path: "css.tmLanguage.json",
    samplePath: "css.sample"
  },
  {
    id: "d",
    scopeName: "source.d",
    path: "d.tmLanguage.json",
    samplePath: "d.sample"
  },
  {
    id: "dart",
    scopeName: "source.dart",
    path: "dart.tmLanguage.json",
    samplePath: "dart.sample"
  },
  {
    id: "diff",
    scopeName: "source.diff",
    path: "diff.tmLanguage.json",
    samplePath: "diff.sample"
  },
  {
    id: "docker",
    scopeName: "source.dockerfile",
    path: "docker.tmLanguage.json",
    samplePath: "docker.sample"
  },
  {
    id: "dream-maker",
    scopeName: "source.dm",
    path: "dream-maker.tmLanguage.json"
  },
  {
    id: "elixir",
    scopeName: "source.elixir",
    path: "elixir.tmLanguage.json",
    samplePath: "elixir.sample",
    embeddedLangs: ["html"]
  },
  {
    id: "elm",
    scopeName: "source.elm",
    path: "elm.tmLanguage.json",
    samplePath: "elm.sample"
  },
  {
    id: "erb",
    scopeName: "text.html.erb",
    path: "erb.tmLanguage.json",
    samplePath: "erb.sample",
    embeddedLangs: ["html", "ruby"]
  },
  {
    id: "erlang",
    scopeName: "source.erlang",
    path: "erlang.tmLanguage.json",
    samplePath: "erlang.sample"
  },
  {
    id: "fish",
    scopeName: "source.fish",
    path: "fish.tmLanguage.json",
    samplePath: "fish.sample"
  },
  {
    id: "fsharp",
    scopeName: "source.fsharp",
    path: "fsharp.tmLanguage.json",
    samplePath: "fsharp.sample",
    aliases: ["f#"],
    embeddedLangs: ["markdown"]
  },
  {
    id: "gherkin",
    scopeName: "text.gherkin.feature",
    path: "gherkin.tmLanguage.json"
  },
  {
    id: "git-commit",
    scopeName: "text.git-commit",
    path: "git-commit.tmLanguage.json",
    embeddedLangs: ["diff"]
  },
  {
    id: "git-rebase",
    scopeName: "text.git-rebase",
    path: "git-rebase.tmLanguage.json",
    embeddedLangs: ["shellscript"]
  },
  {
    id: "gnuplot",
    scopeName: "source.gnuplot",
    path: "gnuplot.tmLanguage.json"
  },
  {
    id: "go",
    scopeName: "source.go",
    path: "go.tmLanguage.json",
    samplePath: "go.sample"
  },
  {
    id: "graphql",
    scopeName: "source.graphql",
    path: "graphql.tmLanguage.json",
    embeddedLangs: ["javascript", "typescript", "jsx", "tsx"]
  },
  {
    id: "groovy",
    scopeName: "source.groovy",
    path: "groovy.tmLanguage.json"
  },
  {
    id: "hack",
    scopeName: "source.hack",
    path: "hack.tmLanguage.json",
    embeddedLangs: ["html", "sql"]
  },
  {
    id: "haml",
    scopeName: "text.haml",
    path: "haml.tmLanguage.json",
    embeddedLangs: ["ruby", "javascript", "sass", "coffee", "markdown", "css"]
  },
  {
    id: "handlebars",
    scopeName: "text.html.handlebars",
    path: "handlebars.tmLanguage.json",
    aliases: ["hbs"],
    embeddedLangs: ["html", "css", "javascript", "yaml"]
  },
  {
    id: "haskell",
    scopeName: "source.haskell",
    path: "haskell.tmLanguage.json"
  },
  {
    id: "hcl",
    scopeName: "source.hcl",
    path: "hcl.tmLanguage.json"
  },
  {
    id: "hlsl",
    scopeName: "source.hlsl",
    path: "hlsl.tmLanguage.json"
  },
  {
    id: "html",
    scopeName: "text.html.basic",
    path: "html.tmLanguage.json",
    samplePath: "html.sample",
    embeddedLangs: ["javascript", "css"]
  },
  {
    id: "ini",
    scopeName: "source.ini",
    path: "ini.tmLanguage.json"
  },
  {
    id: "java",
    scopeName: "source.java",
    path: "java.tmLanguage.json",
    samplePath: "java.sample"
  },
  {
    id: "javascript",
    scopeName: "source.js",
    path: "javascript.tmLanguage.json",
    samplePath: "javascript.sample",
    aliases: ["js"]
  },
  {
    id: "jinja-html",
    scopeName: "text.html.jinja",
    path: "jinja-html.tmLanguage.json",
    embeddedLangs: ["html"]
  },
  {
    id: "json",
    scopeName: "source.json",
    path: "json.tmLanguage.json"
  },
  {
    id: "jsonc",
    scopeName: "source.json.comments",
    path: "jsonc.tmLanguage.json"
  },
  {
    id: "jsonnet",
    scopeName: "source.jsonnet",
    path: "jsonnet.tmLanguage.json"
  },
  {
    id: "jssm",
    scopeName: "source.jssm",
    path: "jssm.tmLanguage.json",
    samplePath: "jssm.sample",
    aliases: ["fsl"]
  },
  {
    id: "jsx",
    scopeName: "source.js.jsx",
    path: "jsx.tmLanguage.json"
  },
  {
    id: "julia",
    scopeName: "source.julia",
    path: "julia.tmLanguage.json",
    embeddedLangs: ["cpp", "python", "javascript", "r", "sql"]
  },
  {
    id: "jupyter",
    scopeName: "source.jupyter",
    path: "jupyter.tmLanguage.json",
    embeddedLangs: ["json"]
  },
  {
    id: "kotlin",
    scopeName: "source.kotlin",
    path: "kotlin.tmLanguage.json"
  },
  {
    id: "latex",
    scopeName: "text.tex.latex",
    path: "latex.tmLanguage.json",
    embeddedLangs: ["tex", "css", "html", "java", "javascript", "typescript", "lua", "python", "julia", "ruby", "xml", "yaml", "cpp", "haskell", "scala", "gnuplot"]
  },
  {
    id: "less",
    scopeName: "source.css.less",
    path: "less.tmLanguage.json",
    embeddedLangs: ["css"]
  },
  {
    id: "lisp",
    scopeName: "source.lisp",
    path: "lisp.tmLanguage.json"
  },
  {
    id: "logo",
    scopeName: "source.logo",
    path: "logo.tmLanguage.json"
  },
  {
    id: "lua",
    scopeName: "source.lua",
    path: "lua.tmLanguage.json",
    embeddedLangs: ["c"]
  },
  {
    id: "make",
    scopeName: "source.makefile",
    path: "make.tmLanguage.json",
    aliases: ["makefile"]
  },
  {
    id: "markdown",
    scopeName: "text.html.markdown",
    path: "markdown.tmLanguage.json",
    aliases: ["md"],
    embeddedLangs: ["css", "html", "ini", "java", "lua", "make", "perl", "r", "ruby", "php", "sql", "vb", "xml", "xsl", "yaml", "bat", "clojure", "coffee", "c", "cpp", "diff", "docker", "git-commit", "git-rebase", "go", "groovy", "pug", "javascript", "json", "jsonc", "less", "objective-c", "swift", "scss", "raku", "powershell", "python", "rust", "scala", "shellscript", "typescript", "tsx", "csharp", "fsharp", "dart", "handlebars", "erlang", "elixir"]
  },
  {
    id: "matlab",
    scopeName: "source.matlab",
    path: "matlab.tmLanguage.json"
  },
  {
    id: "mdx",
    scopeName: "text.html.markdown.jsx",
    path: "mdx.tmLanguage.json",
    embeddedLangs: ["jsx", "markdown"]
  },
  {
    id: "nginx",
    scopeName: "source.nginx",
    path: "nginx.tmLanguage.json"
  },
  {
    id: "nim",
    scopeName: "source.nim",
    path: "nim.tmLanguage.json",
    embeddedLangs: ["c", "html", "xml", "javascript", "css", "markdown"]
  },
  {
    id: "nix",
    scopeName: "source.nix",
    path: "nix.tmLanguage.json"
  },
  {
    id: "objective-c",
    scopeName: "source.objc",
    path: "objective-c.tmLanguage.json",
    aliases: ["objc"]
  },
  {
    id: "objective-cpp",
    scopeName: "source.objcpp",
    path: "objective-cpp.tmLanguage.json"
  },
  {
    id: "ocaml",
    scopeName: "source.ocaml",
    path: "ocaml.tmLanguage.json"
  },
  {
    id: "pascal",
    scopeName: "source.pascal",
    path: "pascal.tmLanguage.json"
  },
  {
    id: "perl",
    scopeName: "source.perl",
    path: "perl.tmLanguage.json",
    embeddedLangs: ["html", "xml", "css", "javascript", "sql"]
  },
  {
    id: "php",
    scopeName: "source.php",
    path: "php.tmLanguage.json",
    embeddedLangs: ["html", "xml", "sql", "javascript", "json", "css"]
  },
  {
    id: "plsql",
    scopeName: "source.plsql.oracle",
    path: "plsql.tmLanguage.json"
  },
  {
    id: "postcss",
    scopeName: "source.css.postcss",
    path: "postcss.tmLanguage.json"
  },
  {
    id: "powershell",
    scopeName: "source.powershell",
    path: "powershell.tmLanguage.json",
    aliases: ["ps", "ps1"]
  },
  {
    id: "prisma",
    scopeName: "source.prisma",
    path: "prisma.tmLanguage.json",
    samplePath: "prisma.sample"
  },
  {
    id: "prolog",
    scopeName: "source.prolog",
    path: "prolog.tmLanguage.json"
  },
  {
    id: "pug",
    scopeName: "text.pug",
    path: "pug.tmLanguage.json",
    aliases: ["jade"],
    embeddedLangs: ["javascript", "css", "sass", "stylus", "coffee", "html"]
  },
  {
    id: "puppet",
    scopeName: "source.puppet",
    path: "puppet.tmLanguage.json"
  },
  {
    id: "purescript",
    scopeName: "source.purescript",
    path: "purescript.tmLanguage.json"
  },
  {
    id: "python",
    scopeName: "source.python",
    path: "python.tmLanguage.json",
    samplePath: "python.sample",
    aliases: ["py"]
  },
  {
    id: "r",
    scopeName: "source.r",
    path: "r.tmLanguage.json"
  },
  {
    id: "raku",
    scopeName: "source.perl.6",
    path: "raku.tmLanguage.json",
    aliases: ["perl6"]
  },
  {
    id: "razor",
    scopeName: "text.aspnetcorerazor",
    path: "razor.tmLanguage.json",
    embeddedLangs: ["html", "csharp"]
  },
  {
    id: "riscv",
    scopeName: "source.riscv",
    path: "riscv.tmLanguage.json"
  },
  {
    id: "ruby",
    scopeName: "source.ruby",
    path: "ruby.tmLanguage.json",
    samplePath: "ruby.sample",
    aliases: ["rb"],
    embeddedLangs: ["html", "xml", "sql", "css", "c", "javascript", "shellscript", "lua"]
  },
  {
    id: "rust",
    scopeName: "source.rust",
    path: "rust.tmLanguage.json"
  },
  {
    id: "sas",
    scopeName: "source.sas",
    path: "sas.tmLanguage.json",
    embeddedLangs: ["sql"]
  },
  {
    id: "sass",
    scopeName: "source.sass",
    path: "sass.tmLanguage.json"
  },
  {
    id: "scala",
    scopeName: "source.scala",
    path: "scala.tmLanguage.json"
  },
  {
    id: "scheme",
    scopeName: "source.scheme",
    path: "scheme.tmLanguage.json"
  },
  {
    id: "scss",
    scopeName: "source.css.scss",
    path: "scss.tmLanguage.json",
    embeddedLangs: ["css"]
  },
  {
    id: "shaderlab",
    scopeName: "source.shaderlab",
    path: "shaderlab.tmLanguage.json",
    aliases: ["shader"],
    embeddedLangs: ["hlsl"]
  },
  {
    id: "shellscript",
    scopeName: "source.shell",
    path: "shellscript.tmLanguage.json",
    aliases: ["shell", "bash", "sh", "zsh"],
    embeddedLangs: ["ruby", "python", "applescript", "html", "markdown"]
  },
  {
    id: "smalltalk",
    scopeName: "source.smalltalk",
    path: "smalltalk.tmLanguage.json"
  },
  {
    id: "solidity",
    scopeName: "source.solidity",
    path: "solidity.tmLanguage.json"
  },
  {
    id: "sparql",
    scopeName: "source.sparql",
    path: "sparql.tmLanguage.json",
    samplePath: "sparql.sample",
    embeddedLangs: ["turtle"]
  },
  {
    id: "sql",
    scopeName: "source.sql",
    path: "sql.tmLanguage.json"
  },
  {
    id: "ssh-config",
    scopeName: "source.ssh-config",
    path: "ssh-config.tmLanguage.json"
  },
  {
    id: "stylus",
    scopeName: "source.stylus",
    path: "stylus.tmLanguage.json",
    aliases: ["styl"]
  },
  {
    id: "svelte",
    scopeName: "source.svelte",
    path: "svelte.tmLanguage.json",
    embeddedLangs: ["javascript", "typescript", "coffee", "stylus", "sass", "css", "scss", "less", "postcss", "pug", "markdown"]
  },
  {
    id: "swift",
    scopeName: "source.swift",
    path: "swift.tmLanguage.json"
  },
  {
    id: "system-verilog",
    scopeName: "source.systemverilog",
    path: "system-verilog.tmLanguage.json"
  },
  {
    id: "tasl",
    scopeName: "source.tasl",
    path: "tasl.tmLanguage.json",
    samplePath: "tasl.sample"
  },
  {
    id: "tcl",
    scopeName: "source.tcl",
    path: "tcl.tmLanguage.json"
  },
  {
    id: "tex",
    scopeName: "text.tex",
    path: "tex.tmLanguage.json",
    embeddedLangs: ["r"]
  },
  {
    id: "toml",
    scopeName: "source.toml",
    path: "toml.tmLanguage.json"
  },
  {
    id: "tsx",
    scopeName: "source.tsx",
    path: "tsx.tmLanguage.json",
    samplePath: "tsx.sample"
  },
  {
    id: "turtle",
    scopeName: "source.turtle",
    path: "turtle.tmLanguage.json",
    samplePath: "turtle.sample"
  },
  {
    id: "twig",
    scopeName: "text.html.twig",
    path: "twig.tmLanguage.json",
    embeddedLangs: ["css", "javascript", "php", "python", "ruby"]
  },
  {
    id: "typescript",
    scopeName: "source.ts",
    path: "typescript.tmLanguage.json",
    aliases: ["ts"]
  },
  {
    id: "vb",
    scopeName: "source.asp.vb.net",
    path: "vb.tmLanguage.json",
    aliases: ["cmd"]
  },
  {
    id: "verilog",
    scopeName: "source.verilog",
    path: "verilog.tmLanguage.json"
  },
  {
    id: "vhdl",
    scopeName: "source.vhdl",
    path: "vhdl.tmLanguage.json"
  },
  {
    id: "viml",
    scopeName: "source.viml",
    path: "viml.tmLanguage.json"
  },
  {
    id: "vue-html",
    scopeName: "text.html.vue-html",
    path: "vue-html.tmLanguage.json",
    embeddedLangs: ["vue", "javascript"]
  },
  {
    id: "vue",
    scopeName: "source.vue",
    path: "vue.tmLanguage.json",
    embeddedLangs: ["json", "markdown", "pug", "haml", "vue-html", "sass", "scss", "less", "stylus", "postcss", "css", "typescript", "coffee", "javascript"]
  },
  {
    id: "wasm",
    scopeName: "source.wat",
    path: "wasm.tmLanguage.json"
  },
  {
    id: "wenyan",
    scopeName: "source.wenyan",
    path: "wenyan.tmLanguage.json",
    aliases: ["文言"]
  },
  {
    id: "xml",
    scopeName: "text.xml",
    path: "xml.tmLanguage.json",
    embeddedLangs: ["java"]
  },
  {
    id: "xsl",
    scopeName: "text.xml.xsl",
    path: "xsl.tmLanguage.json",
    embeddedLangs: ["xml"]
  },
  {
    id: "yaml",
    scopeName: "source.yaml",
    path: "yaml.tmLanguage.json"
  }
];
var FontStyle;
(function(FontStyle2) {
  FontStyle2[FontStyle2["NotSet"] = -1] = "NotSet";
  FontStyle2[FontStyle2["None"] = 0] = "None";
  FontStyle2[FontStyle2["Italic"] = 1] = "Italic";
  FontStyle2[FontStyle2["Bold"] = 2] = "Bold";
  FontStyle2[FontStyle2["Underline"] = 4] = "Underline";
})(FontStyle || (FontStyle = {}));
class StackElementMetadata {
  static toBinaryStr(metadata) {
    let r2 = metadata.toString(2);
    while (r2.length < 32) {
      r2 = "0" + r2;
    }
    return r2;
  }
  static printMetadata(metadata) {
    let languageId = StackElementMetadata.getLanguageId(metadata);
    let tokenType = StackElementMetadata.getTokenType(metadata);
    let fontStyle = StackElementMetadata.getFontStyle(metadata);
    let foreground = StackElementMetadata.getForeground(metadata);
    let background = StackElementMetadata.getBackground(metadata);
    console.log({
      languageId,
      tokenType,
      fontStyle,
      foreground,
      background
    });
  }
  static getLanguageId(metadata) {
    return (metadata & 255) >>> 0;
  }
  static getTokenType(metadata) {
    return (metadata & 1792) >>> 8;
  }
  static getFontStyle(metadata) {
    return (metadata & 14336) >>> 11;
  }
  static getForeground(metadata) {
    return (metadata & 8372224) >>> 14;
  }
  static getBackground(metadata) {
    return (metadata & 4286578688) >>> 23;
  }
  static set(metadata, languageId, tokenType, fontStyle, foreground, background) {
    let _languageId = StackElementMetadata.getLanguageId(metadata);
    let _tokenType = StackElementMetadata.getTokenType(metadata);
    let _fontStyle = StackElementMetadata.getFontStyle(metadata);
    let _foreground = StackElementMetadata.getForeground(metadata);
    let _background = StackElementMetadata.getBackground(metadata);
    if (languageId !== 0) {
      _languageId = languageId;
    }
    if (tokenType !== 0) {
      _tokenType = tokenType === 8 ? 0 : tokenType;
    }
    if (fontStyle !== FontStyle.NotSet) {
      _fontStyle = fontStyle;
    }
    if (foreground !== 0) {
      _foreground = foreground;
    }
    if (background !== 0) {
      _background = background;
    }
    return (_languageId << 0 | _tokenType << 8 | _fontStyle << 11 | _foreground << 14 | _background << 23) >>> 0;
  }
}
function trimEndSlash(str) {
  if (str.endsWith("/") || str.endsWith("\\"))
    return str.slice(0, -1);
  return str;
}
function trimStartDot(str) {
  if (str.startsWith("./"))
    return str.slice(2);
  return str;
}
function dirname(str) {
  const parts2 = str.split(/[\/\\]/g);
  return parts2[parts2.length - 2];
}
function join(...parts2) {
  return parts2.map(trimEndSlash).map(trimStartDot).join("/");
}
function createScanner(text3, ignoreTrivia) {
  if (ignoreTrivia === void 0) {
    ignoreTrivia = false;
  }
  var len = text3.length;
  var pos = 0, value = "", tokenOffset = 0, token2 = 16, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0;
  function scanHexDigits(count, exact) {
    var digits = 0;
    var value2 = 0;
    while (digits < count || !exact) {
      var ch = text3.charCodeAt(pos);
      if (ch >= 48 && ch <= 57) {
        value2 = value2 * 16 + ch - 48;
      } else if (ch >= 65 && ch <= 70) {
        value2 = value2 * 16 + ch - 65 + 10;
      } else if (ch >= 97 && ch <= 102) {
        value2 = value2 * 16 + ch - 97 + 10;
      } else {
        break;
      }
      pos++;
      digits++;
    }
    if (digits < count) {
      value2 = -1;
    }
    return value2;
  }
  function setPosition(newPosition) {
    pos = newPosition;
    value = "";
    tokenOffset = 0;
    token2 = 16;
    scanError = 0;
  }
  function scanNumber() {
    var start = pos;
    if (text3.charCodeAt(pos) === 48) {
      pos++;
    } else {
      pos++;
      while (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
        pos++;
      }
    }
    if (pos < text3.length && text3.charCodeAt(pos) === 46) {
      pos++;
      if (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
        pos++;
        while (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
          pos++;
        }
      } else {
        scanError = 3;
        return text3.substring(start, pos);
      }
    }
    var end = pos;
    if (pos < text3.length && (text3.charCodeAt(pos) === 69 || text3.charCodeAt(pos) === 101)) {
      pos++;
      if (pos < text3.length && text3.charCodeAt(pos) === 43 || text3.charCodeAt(pos) === 45) {
        pos++;
      }
      if (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
        pos++;
        while (pos < text3.length && isDigit(text3.charCodeAt(pos))) {
          pos++;
        }
        end = pos;
      } else {
        scanError = 3;
      }
    }
    return text3.substring(start, end);
  }
  function scanString() {
    var result = "", start = pos;
    while (true) {
      if (pos >= len) {
        result += text3.substring(start, pos);
        scanError = 2;
        break;
      }
      var ch = text3.charCodeAt(pos);
      if (ch === 34) {
        result += text3.substring(start, pos);
        pos++;
        break;
      }
      if (ch === 92) {
        result += text3.substring(start, pos);
        pos++;
        if (pos >= len) {
          scanError = 2;
          break;
        }
        var ch2 = text3.charCodeAt(pos++);
        switch (ch2) {
          case 34:
            result += '"';
            break;
          case 92:
            result += "\\";
            break;
          case 47:
            result += "/";
            break;
          case 98:
            result += "\b";
            break;
          case 102:
            result += "\f";
            break;
          case 110:
            result += "\n";
            break;
          case 114:
            result += "\r";
            break;
          case 116:
            result += "	";
            break;
          case 117:
            var ch3 = scanHexDigits(4, true);
            if (ch3 >= 0) {
              result += String.fromCharCode(ch3);
            } else {
              scanError = 4;
            }
            break;
          default:
            scanError = 5;
        }
        start = pos;
        continue;
      }
      if (ch >= 0 && ch <= 31) {
        if (isLineBreak(ch)) {
          result += text3.substring(start, pos);
          scanError = 2;
          break;
        } else {
          scanError = 6;
        }
      }
      pos++;
    }
    return result;
  }
  function scanNext() {
    value = "";
    scanError = 0;
    tokenOffset = pos;
    lineStartOffset = lineNumber;
    prevTokenLineStartOffset = tokenLineStartOffset;
    if (pos >= len) {
      tokenOffset = len;
      return token2 = 17;
    }
    var code3 = text3.charCodeAt(pos);
    if (isWhiteSpace(code3)) {
      do {
        pos++;
        value += String.fromCharCode(code3);
        code3 = text3.charCodeAt(pos);
      } while (isWhiteSpace(code3));
      return token2 = 15;
    }
    if (isLineBreak(code3)) {
      pos++;
      value += String.fromCharCode(code3);
      if (code3 === 13 && text3.charCodeAt(pos) === 10) {
        pos++;
        value += "\n";
      }
      lineNumber++;
      tokenLineStartOffset = pos;
      return token2 = 14;
    }
    switch (code3) {
      case 123:
        pos++;
        return token2 = 1;
      case 125:
        pos++;
        return token2 = 2;
      case 91:
        pos++;
        return token2 = 3;
      case 93:
        pos++;
        return token2 = 4;
      case 58:
        pos++;
        return token2 = 6;
      case 44:
        pos++;
        return token2 = 5;
      case 34:
        pos++;
        value = scanString();
        return token2 = 10;
      case 47:
        var start = pos - 1;
        if (text3.charCodeAt(pos + 1) === 47) {
          pos += 2;
          while (pos < len) {
            if (isLineBreak(text3.charCodeAt(pos))) {
              break;
            }
            pos++;
          }
          value = text3.substring(start, pos);
          return token2 = 12;
        }
        if (text3.charCodeAt(pos + 1) === 42) {
          pos += 2;
          var safeLength = len - 1;
          var commentClosed = false;
          while (pos < safeLength) {
            var ch = text3.charCodeAt(pos);
            if (ch === 42 && text3.charCodeAt(pos + 1) === 47) {
              pos += 2;
              commentClosed = true;
              break;
            }
            pos++;
            if (isLineBreak(ch)) {
              if (ch === 13 && text3.charCodeAt(pos) === 10) {
                pos++;
              }
              lineNumber++;
              tokenLineStartOffset = pos;
            }
          }
          if (!commentClosed) {
            pos++;
            scanError = 1;
          }
          value = text3.substring(start, pos);
          return token2 = 13;
        }
        value += String.fromCharCode(code3);
        pos++;
        return token2 = 16;
      case 45:
        value += String.fromCharCode(code3);
        pos++;
        if (pos === len || !isDigit(text3.charCodeAt(pos))) {
          return token2 = 16;
        }
      case 48:
      case 49:
      case 50:
      case 51:
      case 52:
      case 53:
      case 54:
      case 55:
      case 56:
      case 57:
        value += scanNumber();
        return token2 = 11;
      default:
        while (pos < len && isUnknownContentCharacter(code3)) {
          pos++;
          code3 = text3.charCodeAt(pos);
        }
        if (tokenOffset !== pos) {
          value = text3.substring(tokenOffset, pos);
          switch (value) {
            case "true":
              return token2 = 8;
            case "false":
              return token2 = 9;
            case "null":
              return token2 = 7;
          }
          return token2 = 16;
        }
        value += String.fromCharCode(code3);
        pos++;
        return token2 = 16;
    }
  }
  function isUnknownContentCharacter(code3) {
    if (isWhiteSpace(code3) || isLineBreak(code3)) {
      return false;
    }
    switch (code3) {
      case 125:
      case 93:
      case 123:
      case 91:
      case 34:
      case 58:
      case 44:
      case 47:
        return false;
    }
    return true;
  }
  function scanNextNonTrivia() {
    var result;
    do {
      result = scanNext();
    } while (result >= 12 && result <= 15);
    return result;
  }
  return {
    setPosition,
    getPosition: function() {
      return pos;
    },
    scan: ignoreTrivia ? scanNextNonTrivia : scanNext,
    getToken: function() {
      return token2;
    },
    getTokenValue: function() {
      return value;
    },
    getTokenOffset: function() {
      return tokenOffset;
    },
    getTokenLength: function() {
      return pos - tokenOffset;
    },
    getTokenStartLine: function() {
      return lineStartOffset;
    },
    getTokenStartCharacter: function() {
      return tokenOffset - prevTokenLineStartOffset;
    },
    getTokenError: function() {
      return scanError;
    }
  };
}
function isWhiteSpace(ch) {
  return ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch === 5760 || ch >= 8192 && ch <= 8203 || ch === 8239 || ch === 8287 || ch === 12288 || ch === 65279;
}
function isLineBreak(ch) {
  return ch === 10 || ch === 13 || ch === 8232 || ch === 8233;
}
function isDigit(ch) {
  return ch >= 48 && ch <= 57;
}
var ParseOptions;
(function(ParseOptions2) {
  ParseOptions2.DEFAULT = {
    allowTrailingComma: false
  };
})(ParseOptions || (ParseOptions = {}));
function parse$1(text3, errors2, options2) {
  if (errors2 === void 0) {
    errors2 = [];
  }
  if (options2 === void 0) {
    options2 = ParseOptions.DEFAULT;
  }
  var currentProperty = null;
  var currentParent = [];
  var previousParents = [];
  function onValue(value) {
    if (Array.isArray(currentParent)) {
      currentParent.push(value);
    } else if (currentProperty !== null) {
      currentParent[currentProperty] = value;
    }
  }
  var visitor = {
    onObjectBegin: function() {
      var object = {};
      onValue(object);
      previousParents.push(currentParent);
      currentParent = object;
      currentProperty = null;
    },
    onObjectProperty: function(name2) {
      currentProperty = name2;
    },
    onObjectEnd: function() {
      currentParent = previousParents.pop();
    },
    onArrayBegin: function() {
      var array = [];
      onValue(array);
      previousParents.push(currentParent);
      currentParent = array;
      currentProperty = null;
    },
    onArrayEnd: function() {
      currentParent = previousParents.pop();
    },
    onLiteralValue: onValue,
    onError: function(error2, offset2, length2) {
      errors2.push({ error: error2, offset: offset2, length: length2 });
    }
  };
  visit(text3, visitor, options2);
  return currentParent[0];
}
function visit(text3, visitor, options2) {
  if (options2 === void 0) {
    options2 = ParseOptions.DEFAULT;
  }
  var _scanner = createScanner(text3, false);
  function toNoArgVisit(visitFunction) {
    return visitFunction ? function() {
      return visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());
    } : function() {
      return true;
    };
  }
  function toOneArgVisit(visitFunction) {
    return visitFunction ? function(arg) {
      return visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());
    } : function() {
      return true;
    };
  }
  var onObjectBegin = toNoArgVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisit(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisit(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisit(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);
  var disallowComments = options2 && options2.disallowComments;
  var allowTrailingComma = options2 && options2.allowTrailingComma;
  function scanNext() {
    while (true) {
      var token2 = _scanner.scan();
      switch (_scanner.getTokenError()) {
        case 4:
          handleError2(
            14
            /* InvalidUnicode */
          );
          break;
        case 5:
          handleError2(
            15
            /* InvalidEscapeCharacter */
          );
          break;
        case 3:
          handleError2(
            13
            /* UnexpectedEndOfNumber */
          );
          break;
        case 1:
          if (!disallowComments) {
            handleError2(
              11
              /* UnexpectedEndOfComment */
            );
          }
          break;
        case 2:
          handleError2(
            12
            /* UnexpectedEndOfString */
          );
          break;
        case 6:
          handleError2(
            16
            /* InvalidCharacter */
          );
          break;
      }
      switch (token2) {
        case 12:
        case 13:
          if (disallowComments) {
            handleError2(
              10
              /* InvalidCommentToken */
            );
          } else {
            onComment();
          }
          break;
        case 16:
          handleError2(
            1
            /* InvalidSymbol */
          );
          break;
        case 15:
        case 14:
          break;
        default:
          return token2;
      }
    }
  }
  function handleError2(error2, skipUntilAfter, skipUntil) {
    if (skipUntilAfter === void 0) {
      skipUntilAfter = [];
    }
    if (skipUntil === void 0) {
      skipUntil = [];
    }
    onError(error2);
    if (skipUntilAfter.length + skipUntil.length > 0) {
      var token2 = _scanner.getToken();
      while (token2 !== 17) {
        if (skipUntilAfter.indexOf(token2) !== -1) {
          scanNext();
          break;
        } else if (skipUntil.indexOf(token2) !== -1) {
          break;
        }
        token2 = scanNext();
      }
    }
  }
  function parseString(isValue) {
    var value = _scanner.getTokenValue();
    if (isValue) {
      onLiteralValue(value);
    } else {
      onObjectProperty(value);
    }
    scanNext();
    return true;
  }
  function parseLiteral() {
    switch (_scanner.getToken()) {
      case 11:
        var tokenValue = _scanner.getTokenValue();
        var value = Number(tokenValue);
        if (isNaN(value)) {
          handleError2(
            2
            /* InvalidNumberFormat */
          );
          value = 0;
        }
        onLiteralValue(value);
        break;
      case 7:
        onLiteralValue(null);
        break;
      case 8:
        onLiteralValue(true);
        break;
      case 9:
        onLiteralValue(false);
        break;
      default:
        return false;
    }
    scanNext();
    return true;
  }
  function parseProperty() {
    if (_scanner.getToken() !== 10) {
      handleError2(3, [], [
        2,
        5
        /* CommaToken */
      ]);
      return false;
    }
    parseString(false);
    if (_scanner.getToken() === 6) {
      onSeparator(":");
      scanNext();
      if (!parseValue2()) {
        handleError2(4, [], [
          2,
          5
          /* CommaToken */
        ]);
      }
    } else {
      handleError2(5, [], [
        2,
        5
        /* CommaToken */
      ]);
    }
    return true;
  }
  function parseObject() {
    onObjectBegin();
    scanNext();
    var needsComma = false;
    while (_scanner.getToken() !== 2 && _scanner.getToken() !== 17) {
      if (_scanner.getToken() === 5) {
        if (!needsComma) {
          handleError2(4, [], []);
        }
        onSeparator(",");
        scanNext();
        if (_scanner.getToken() === 2 && allowTrailingComma) {
          break;
        }
      } else if (needsComma) {
        handleError2(6, [], []);
      }
      if (!parseProperty()) {
        handleError2(4, [], [
          2,
          5
          /* CommaToken */
        ]);
      }
      needsComma = true;
    }
    onObjectEnd();
    if (_scanner.getToken() !== 2) {
      handleError2(7, [
        2
        /* CloseBraceToken */
      ], []);
    } else {
      scanNext();
    }
    return true;
  }
  function parseArray() {
    onArrayBegin();
    scanNext();
    var needsComma = false;
    while (_scanner.getToken() !== 4 && _scanner.getToken() !== 17) {
      if (_scanner.getToken() === 5) {
        if (!needsComma) {
          handleError2(4, [], []);
        }
        onSeparator(",");
        scanNext();
        if (_scanner.getToken() === 4 && allowTrailingComma) {
          break;
        }
      } else if (needsComma) {
        handleError2(6, [], []);
      }
      if (!parseValue2()) {
        handleError2(4, [], [
          4,
          5
          /* CommaToken */
        ]);
      }
      needsComma = true;
    }
    onArrayEnd();
    if (_scanner.getToken() !== 4) {
      handleError2(8, [
        4
        /* CloseBracketToken */
      ], []);
    } else {
      scanNext();
    }
    return true;
  }
  function parseValue2() {
    switch (_scanner.getToken()) {
      case 3:
        return parseArray();
      case 1:
        return parseObject();
      case 10:
        return parseString(true);
      default:
        return parseLiteral();
    }
  }
  scanNext();
  if (_scanner.getToken() === 17) {
    if (options2.allowEmptyContent) {
      return true;
    }
    handleError2(4, [], []);
    return false;
  }
  if (!parseValue2()) {
    handleError2(4, [], []);
    return false;
  }
  if (_scanner.getToken() !== 17) {
    handleError2(9, [], []);
  }
  return true;
}
var parse = parse$1;
const isWebWorker = typeof self !== "undefined" && typeof self.WorkerGlobalScope !== "undefined";
const isBrowser = isWebWorker || typeof window !== "undefined" && typeof window.document !== "undefined" && typeof fetch !== "undefined";
let CDN_ROOT = "";
let ONIGASM_WASM = "";
function setOnigasmWASM(path) {
  ONIGASM_WASM = path;
}
let _onigasmPromise = null;
async function getOnigasm() {
  if (!_onigasmPromise) {
    let loader;
    if (isBrowser) {
      loader = loadWASM(ONIGASM_WASM || _resolvePath("dist/onigasm.wasm"));
    } else {
      const path = require("path");
      const onigasmPath = path.join(require.resolve("onigasm"), "../onigasm.wasm");
      const fs = require("fs");
      const wasmBin = fs.readFileSync(onigasmPath).buffer;
      loader = loadWASM(wasmBin);
    }
    _onigasmPromise = loader.then(() => {
      return {
        createOnigScanner(patterns2) {
          return new OnigScanner2(patterns2);
        },
        createOnigString(s2) {
          return new OnigString2(s2);
        }
      };
    });
  }
  return _onigasmPromise;
}
function _resolvePath(filepath) {
  if (isBrowser) {
    {
      console.warn("[Shiki] no CDN provider found, use `setCDN()` to specify the CDN for loading the resources before calling `getHighlighter()`");
    }
    return `${CDN_ROOT}${filepath}`;
  } else {
    const path = require("path");
    if (path.isAbsolute(filepath)) {
      return filepath;
    } else {
      return path.resolve(__dirname, "..", filepath);
    }
  }
}
async function _fetchAssets(filepath) {
  const path = _resolvePath(filepath);
  if (isBrowser) {
    return await fetch(path).then((r2) => r2.text());
  } else {
    const fs = require("fs");
    return await fs.promises.readFile(path, "utf-8");
  }
}
async function _fetchJSONAssets(filepath) {
  const errors2 = [];
  const rawTheme = parse(await _fetchAssets(filepath), errors2, {
    allowTrailingComma: true
  });
  if (errors2.length) {
    throw errors2[0];
  }
  return rawTheme;
}
async function fetchTheme(themePath) {
  let theme = await _fetchJSONAssets(themePath);
  const shikiTheme = toShikiTheme(theme);
  if (shikiTheme.include) {
    const includedTheme = await fetchTheme(join(dirname(themePath), shikiTheme.include));
    if (includedTheme.settings) {
      shikiTheme.settings = includedTheme.settings.concat(shikiTheme.settings);
    }
    if (includedTheme.bg && !shikiTheme.bg) {
      shikiTheme.bg = includedTheme.bg;
    }
    if (includedTheme.colors) {
      shikiTheme.colors = Object.assign(Object.assign({}, includedTheme.colors), shikiTheme.colors);
    }
    delete shikiTheme.include;
  }
  return shikiTheme;
}
async function fetchGrammar(filepath) {
  return await _fetchJSONAssets(filepath);
}
function repairTheme(theme) {
  if (!theme.settings)
    theme.settings = [];
  if (theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope) {
    return;
  }
  theme.settings.unshift({
    settings: {
      foreground: theme.fg,
      background: theme.bg
    }
  });
}
function toShikiTheme(rawTheme) {
  const type2 = rawTheme.type || "dark";
  const shikiTheme = Object.assign(Object.assign({ name: rawTheme.name, type: type2 }, rawTheme), getThemeDefaultColors(rawTheme));
  if (rawTheme.include) {
    shikiTheme.include = rawTheme.include;
  }
  if (rawTheme.tokenColors) {
    shikiTheme.settings = rawTheme.tokenColors;
    delete shikiTheme.tokenColors;
  }
  repairTheme(shikiTheme);
  return shikiTheme;
}
const VSCODE_FALLBACK_EDITOR_FG = { light: "#333333", dark: "#bbbbbb" };
const VSCODE_FALLBACK_EDITOR_BG = { light: "#fffffe", dark: "#1e1e1e" };
function getThemeDefaultColors(theme) {
  var _a2, _b2, _c, _d, _e, _f;
  let fg, bg;
  let settings = theme.settings ? theme.settings : theme.tokenColors;
  const globalSetting = settings ? settings.find((s2) => {
    return !s2.name && !s2.scope;
  }) : void 0;
  if ((_a2 = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _a2 === void 0 ? void 0 : _a2.foreground) {
    fg = globalSetting.settings.foreground;
  }
  if ((_b2 = globalSetting === null || globalSetting === void 0 ? void 0 : globalSetting.settings) === null || _b2 === void 0 ? void 0 : _b2.background) {
    bg = globalSetting.settings.background;
  }
  if (!fg && ((_d = (_c = theme) === null || _c === void 0 ? void 0 : _c.colors) === null || _d === void 0 ? void 0 : _d["editor.foreground"])) {
    fg = theme.colors["editor.foreground"];
  }
  if (!bg && ((_f = (_e = theme) === null || _e === void 0 ? void 0 : _e.colors) === null || _f === void 0 ? void 0 : _f["editor.background"])) {
    bg = theme.colors["editor.background"];
  }
  if (!fg) {
    fg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;
  }
  if (!bg) {
    bg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;
  }
  return {
    fg,
    bg
  };
}
class Resolver {
  constructor(onigLibPromise, onigLibName) {
    this.languagesPath = "languages/";
    this.languageMap = {};
    this.scopeToLangMap = {};
    this._onigLibPromise = onigLibPromise;
    this._onigLibName = onigLibName;
  }
  get onigLib() {
    return this._onigLibPromise;
  }
  getOnigLibName() {
    return this._onigLibName;
  }
  getLangRegistration(langIdOrAlias) {
    return this.languageMap[langIdOrAlias];
  }
  async loadGrammar(scopeName2) {
    const lang2 = this.scopeToLangMap[scopeName2];
    if (!lang2) {
      return null;
    }
    if (lang2.grammar) {
      return lang2.grammar;
    }
    const g = await fetchGrammar(languages.includes(lang2) ? `${this.languagesPath}${lang2.path}` : lang2.path);
    lang2.grammar = g;
    return g;
  }
  addLanguage(l2) {
    this.languageMap[l2.id] = l2;
    if (l2.aliases) {
      l2.aliases.forEach((a2) => {
        this.languageMap[a2] = l2;
      });
    }
    this.scopeToLangMap[l2.scopeName] = l2;
  }
}
function tokenizeWithTheme(theme, colorMap, fileContents, grammar, options2) {
  let lines = fileContents.split(/\r\n|\r|\n/);
  let ruleStack = mainExports.INITIAL;
  let actual = [];
  let final = [];
  for (let i2 = 0, len = lines.length; i2 < len; i2++) {
    let line = lines[i2];
    if (line === "") {
      actual = [];
      final.push([]);
      continue;
    }
    let resultWithScopes;
    let tokensWithScopes;
    let tokensWithScopesIndex;
    if (options2.includeExplanation) {
      resultWithScopes = grammar.tokenizeLine(line, ruleStack);
      tokensWithScopes = resultWithScopes.tokens;
      tokensWithScopesIndex = 0;
    }
    let result = grammar.tokenizeLine2(line, ruleStack);
    let tokensLength = result.tokens.length / 2;
    for (let j = 0; j < tokensLength; j++) {
      let startIndex = result.tokens[2 * j];
      let nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;
      if (startIndex === nextStartIndex) {
        continue;
      }
      let metadata = result.tokens[2 * j + 1];
      let foreground = StackElementMetadata.getForeground(metadata);
      let foregroundColor = colorMap[foreground];
      let fontStyle = StackElementMetadata.getFontStyle(metadata);
      let explanation = [];
      if (options2.includeExplanation) {
        let offset2 = 0;
        while (startIndex + offset2 < nextStartIndex) {
          let tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];
          let tokenWithScopesText = line.substring(tokenWithScopes.startIndex, tokenWithScopes.endIndex);
          offset2 += tokenWithScopesText.length;
          explanation.push({
            content: tokenWithScopesText,
            scopes: explainThemeScopes(theme, tokenWithScopes.scopes)
          });
          tokensWithScopesIndex++;
        }
      }
      actual.push({
        content: line.substring(startIndex, nextStartIndex),
        color: foregroundColor,
        fontStyle,
        explanation
      });
    }
    final.push(actual);
    actual = [];
    ruleStack = result.ruleStack;
  }
  return final;
}
function explainThemeScopes(theme, scopes) {
  let result = [];
  for (let i2 = 0, len = scopes.length; i2 < len; i2++) {
    let parentScopes = scopes.slice(0, i2);
    let scope = scopes[i2];
    result[i2] = {
      scopeName: scope,
      themeMatches: explainThemeScope(theme, scope, parentScopes)
    };
  }
  return result;
}
function matchesOne(selector, scope) {
  let selectorPrefix = selector + ".";
  if (selector === scope || scope.substring(0, selectorPrefix.length) === selectorPrefix) {
    return true;
  }
  return false;
}
function matches(selector, selectorParentScopes, scope, parentScopes) {
  if (!matchesOne(selector, scope)) {
    return false;
  }
  let selectorParentIndex = selectorParentScopes.length - 1;
  let parentIndex = parentScopes.length - 1;
  while (selectorParentIndex >= 0 && parentIndex >= 0) {
    if (matchesOne(selectorParentScopes[selectorParentIndex], parentScopes[parentIndex])) {
      selectorParentIndex--;
    }
    parentIndex--;
  }
  if (selectorParentIndex === -1) {
    return true;
  }
  return false;
}
function explainThemeScope(theme, scope, parentScopes) {
  let result = [], resultLen = 0;
  for (let i2 = 0, len = theme.settings.length; i2 < len; i2++) {
    let setting = theme.settings[i2];
    let selectors;
    if (typeof setting.scope === "string") {
      selectors = setting.scope.split(/,/).map((scope2) => scope2.trim());
    } else if (Array.isArray(setting.scope)) {
      selectors = setting.scope;
    } else {
      continue;
    }
    for (let j = 0, lenJ = selectors.length; j < lenJ; j++) {
      let rawSelector = selectors[j];
      let rawSelectorPieces = rawSelector.split(/ /);
      let selector = rawSelectorPieces[rawSelectorPieces.length - 1];
      let selectorParentScopes = rawSelectorPieces.slice(0, rawSelectorPieces.length - 1);
      if (matches(selector, selectorParentScopes, scope, parentScopes)) {
        result[resultLen++] = setting;
        j = lenJ;
      }
    }
  }
  return result;
}
function renderToHtml(lines, options2 = {}) {
  const bg = options2.bg || "#fff";
  let html = "";
  html += `<pre class="shiki" style="background-color: ${bg}">`;
  if (options2.langId) {
    html += `<div class="language-id">${options2.langId}</div>`;
  }
  html += `<code>`;
  lines.forEach((l2) => {
    html += `<span class="line">`;
    l2.forEach((token2) => {
      const cssDeclarations = [`color: ${token2.color || options2.fg}`];
      if (token2.fontStyle & FontStyle.Italic) {
        cssDeclarations.push("font-style: italic");
      }
      if (token2.fontStyle & FontStyle.Bold) {
        cssDeclarations.push("font-weight: bold");
      }
      if (token2.fontStyle & FontStyle.Underline) {
        cssDeclarations.push("text-decoration: underline");
      }
      html += `<span style="${cssDeclarations.join("; ")}">${escapeHtml(token2.content)}</span>`;
    });
    html += `</span>
`;
  });
  html = html.replace(/\n*$/, "");
  html += `</code></pre>`;
  return html;
}
const htmlEscapes = {
  "&": "&amp;",
  "<": "&lt;",
  ">": "&gt;",
  '"': "&quot;",
  "'": "&#39;"
};
function escapeHtml(html) {
  return html.replace(/[&<>"']/g, (chr) => htmlEscapes[chr]);
}
class Registry extends mainExports.Registry {
  constructor(_resolver2) {
    super(_resolver2);
    this._resolver = _resolver2;
    this.themesPath = "themes/";
    this._resolvedThemes = {};
    this._resolvedGrammars = {};
  }
  getTheme(theme) {
    if (typeof theme === "string") {
      return this._resolvedThemes[theme];
    } else {
      return theme;
    }
  }
  async loadTheme(theme) {
    if (typeof theme === "string") {
      if (!this._resolvedThemes[theme]) {
        this._resolvedThemes[theme] = await fetchTheme(`${this.themesPath}${theme}.json`);
      }
      return this._resolvedThemes[theme];
    } else {
      theme = toShikiTheme(theme);
      if (theme.name) {
        this._resolvedThemes[theme.name] = theme;
      }
      return theme;
    }
  }
  async loadThemes(themes) {
    return await Promise.all(themes.map((theme) => this.loadTheme(theme)));
  }
  getLoadedThemes() {
    return Object.keys(this._resolvedThemes);
  }
  getGrammer(name2) {
    return this._resolvedGrammars[name2];
  }
  async loadLanguage(lang2) {
    const g = await this.loadGrammar(lang2.scopeName);
    this._resolvedGrammars[lang2.id] = g;
    if (lang2.aliases) {
      lang2.aliases.forEach((la) => {
        this._resolvedGrammars[la] = g;
      });
    }
  }
  async loadLanguages(langs2) {
    for (const lang2 of langs2) {
      this._resolver.addLanguage(lang2);
    }
    for (const lang2 of langs2) {
      await this.loadLanguage(lang2);
    }
  }
  getLoadedLanguages() {
    return Object.keys(this._resolvedGrammars);
  }
}
function resolveLang(lang2) {
  return typeof lang2 === "string" ? languages.find((l2) => {
    var _a2;
    return l2.id === lang2 || ((_a2 = l2.aliases) === null || _a2 === void 0 ? void 0 : _a2.includes(lang2));
  }) : lang2;
}
function resolveOptions(options2) {
  var _a2;
  let _languages = languages;
  let _themes = options2.themes || [];
  if ((_a2 = options2.langs) === null || _a2 === void 0 ? void 0 : _a2.length) {
    _languages = options2.langs.map(resolveLang);
  }
  if (options2.theme) {
    _themes.unshift(options2.theme);
  }
  if (!_themes.length) {
    _themes = ["nord"];
  }
  return { _languages, _themes };
}
async function getHighlighter(options2) {
  var _a2, _b2;
  const { _languages, _themes } = resolveOptions(options2);
  const _resolver2 = new Resolver(getOnigasm(), "onigasm");
  const _registry = new Registry(_resolver2);
  if ((_a2 = options2.paths) === null || _a2 === void 0 ? void 0 : _a2.themes) {
    _registry.themesPath = options2.paths.themes;
  }
  if ((_b2 = options2.paths) === null || _b2 === void 0 ? void 0 : _b2.languages) {
    _resolver2.languagesPath = options2.paths.languages;
  }
  const themes = await _registry.loadThemes(_themes);
  const _defaultTheme = themes[0];
  let _currentTheme;
  await _registry.loadLanguages(_languages);
  const COLOR_REPLACEMENTS = {
    "#000001": "var(--shiki-color-text)",
    "#000002": "var(--shiki-color-background)",
    "#000004": "var(--shiki-token-constant)",
    "#000005": "var(--shiki-token-string)",
    "#000006": "var(--shiki-token-comment)",
    "#000007": "var(--shiki-token-keyword)",
    "#000008": "var(--shiki-token-parameter)",
    "#000009": "var(--shiki-token-function)",
    "#000010": "var(--shiki-token-string-expression)",
    "#000011": "var(--shiki-token-punctuation)",
    "#000012": "var(--shiki-token-link)"
  };
  function fixCssVariablesTheme(theme, colorMap) {
    theme.bg = COLOR_REPLACEMENTS[theme.bg] || theme.bg;
    theme.fg = COLOR_REPLACEMENTS[theme.fg] || theme.fg;
    colorMap.forEach((val, i2) => {
      colorMap[i2] = COLOR_REPLACEMENTS[val] || val;
    });
  }
  function getTheme(theme) {
    const _theme = theme ? _registry.getTheme(theme) : _defaultTheme;
    if (!_theme) {
      throw Error(`No theme registration for ${theme}`);
    }
    if (!_currentTheme || _currentTheme.name !== _theme.name) {
      _registry.setTheme(_theme);
      _currentTheme = _theme;
    }
    const _colorMap = _registry.getColorMap();
    if (_theme.name === "css-variables") {
      fixCssVariablesTheme(_theme, _colorMap);
    }
    return { _theme, _colorMap };
  }
  function getGrammer(lang2) {
    const _grammer = _registry.getGrammer(lang2);
    if (!_grammer) {
      throw Error(`No language registration for ${lang2}`);
    }
    return { _grammer };
  }
  function codeToThemedTokens(code3, lang2 = "text", theme, options3 = { includeExplanation: true }) {
    if (isPlaintext(lang2)) {
      return [[{ content: code3 }]];
    }
    const { _grammer } = getGrammer(lang2);
    const { _theme, _colorMap } = getTheme(theme);
    return tokenizeWithTheme(_theme, _colorMap, code3, _grammer, options3);
  }
  function codeToHtml(code3, lang2 = "text", theme) {
    const tokens = codeToThemedTokens(code3, lang2, theme, {
      includeExplanation: false
    });
    const { _theme } = getTheme(theme);
    return renderToHtml(tokens, {
      fg: _theme.fg,
      bg: _theme.bg
    });
  }
  async function loadTheme(theme) {
    await _registry.loadTheme(theme);
  }
  async function loadLanguage(lang2) {
    const _lang = resolveLang(lang2);
    _resolver2.addLanguage(_lang);
    await _registry.loadLanguage(_lang);
  }
  function getLoadedThemes() {
    return _registry.getLoadedThemes();
  }
  function getLoadedLanguages() {
    return _registry.getLoadedLanguages();
  }
  function getBackgroundColor(theme) {
    const { _theme } = getTheme(theme);
    return _theme.bg;
  }
  function getForegroundColor(theme) {
    const { _theme } = getTheme(theme);
    return _theme.fg;
  }
  return {
    codeToThemedTokens,
    codeToHtml,
    getTheme: (theme) => {
      return getTheme(theme)._theme;
    },
    loadTheme,
    loadLanguage,
    getBackgroundColor,
    getForegroundColor,
    getLoadedThemes,
    getLoadedLanguages
  };
}
function isPlaintext(lang2) {
  return !lang2 || ["plaintext", "txt", "text"].includes(lang2);
}
const onigasm = "" + new URL("onigasm-b63d2d2d.wasm", import.meta.url).href;
const name = "cypress";
const type = "light";
const tokenColors = [
  {
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "meta.embedded",
      "source.groovy.embedded"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "emphasis",
    settings: {
      fontStyle: "italic"
    }
  },
  {
    scope: "strong",
    settings: {
      fontStyle: "bold"
    }
  },
  {
    scope: "meta.diff.header",
    settings: {
      foreground: "#252E8F"
    }
  },
  {
    scope: "comment",
    settings: {
      foreground: "#9095AD"
    }
  },
  {
    scope: "constant.language",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: [
      "constant.numeric",
      "variable.other.enummember",
      "keyword.operator.plus.exponent",
      "keyword.operator.minus.exponent"
    ],
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "constant.regexp",
    settings: {
      foreground: "#4F0018"
    }
  },
  {
    name: "css tags in selectors, xml tags",
    scope: "entity.name.tag",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "entity.name.selector",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "entity.other.attribute-name",
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: [
      "entity.other.attribute-name.class.css",
      "entity.other.attribute-name.class.mixin.css",
      "entity.other.attribute-name.id.css",
      "entity.other.attribute-name.parent-selector.css",
      "entity.other.attribute-name.pseudo-class.css",
      "entity.other.attribute-name.pseudo-element.css",
      "source.css.less entity.other.attribute-name.id",
      "entity.other.attribute-name.scss"
    ],
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "invalid",
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: "markup.underline",
    settings: {
      fontStyle: "underline"
    }
  },
  {
    scope: "markup.bold",
    settings: {
      fontStyle: "bold",
      foreground: "#252E8F"
    }
  },
  {
    scope: "markup.heading",
    settings: {
      fontStyle: "bold",
      foreground: "#5E021B"
    }
  },
  {
    scope: "markup.italic",
    settings: {
      fontStyle: "italic"
    }
  },
  {
    scope: "markup.inserted",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "markup.deleted",
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: "markup.changed",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: [
      "punctuation.definition.quote.begin.markdown",
      "punctuation.definition.list.begin.markdown"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "markup.inline.raw",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    name: "brackets of XML/HTML tags",
    scope: "punctuation.definition.tag",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: [
      "meta.preprocessor",
      "entity.name.function.preprocessor"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: "meta.preprocessor.string",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "meta.preprocessor.numeric",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: "meta.structure.dictionary.key.python",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "storage",
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: "storage.type",
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: [
      "storage.modifier",
      "keyword.operator.noexcept"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    scope: [
      "string",
      "meta.embedded.assembly"
    ],
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: [
      "string.comment.buffered.block.pug",
      "string.quoted.pug",
      "string.interpolated.pug",
      "string.unquoted.plain.in.yaml",
      "string.unquoted.plain.out.yaml",
      "string.unquoted.block.yaml",
      "string.quoted.single.yaml",
      "string.quoted.double.xml",
      "string.quoted.single.xml",
      "string.unquoted.cdata.xml",
      "string.quoted.double.html",
      "string.quoted.single.html",
      "string.unquoted.html",
      "string.quoted.single.handlebars",
      "string.quoted.double.handlebars"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "string.regexp",
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    name: "String interpolation",
    scope: [
      "punctuation.definition.template-expression.begin",
      "punctuation.definition.template-expression.end",
      "punctuation.section.embedded"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    name: "Reset JavaScript string interpolation expression",
    scope: [
      "meta.template.expression"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "support.constant.property-value",
      "support.constant.font-name",
      "support.constant.media-type",
      "support.constant.media",
      "constant.other.color.rgb-value",
      "constant.other.rgb-value",
      "support.constant.color"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: [
      "support.type.vendored.property-name",
      "support.type.property-name",
      "variable.css",
      "variable.scss",
      "variable.other.less",
      "source.coffee.embedded"
    ],
    settings: {
      foreground: "#C62B49"
    }
  },
  {
    scope: [
      "support.type.property-name.json"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword.control",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword.operator",
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "keyword.operator.new",
      "keyword.operator.expression",
      "keyword.operator.cast",
      "keyword.operator.sizeof",
      "keyword.operator.alignof",
      "keyword.operator.typeid",
      "keyword.operator.alignas",
      "keyword.operator.instanceof",
      "keyword.operator.logical.python",
      "keyword.operator.wordlike"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "keyword.other.unit",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    scope: [
      "punctuation.section.embedded.begin.php",
      "punctuation.section.embedded.end.php"
    ],
    settings: {
      foreground: "#5E021B"
    }
  },
  {
    scope: "support.function.git-rebase",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "constant.sha.git-rebase",
    settings: {
      foreground: "#00814D"
    }
  },
  {
    name: "coloring of the Java import and package identifiers",
    scope: [
      "storage.modifier.import.java",
      "variable.language.wildcard.java",
      "storage.modifier.package.java"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "this.self",
    scope: "variable.language",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    name: "Function declarations",
    scope: [
      "entity.name.function",
      "support.function",
      "support.constant.handlebars",
      "source.powershell variable.other.member",
      "entity.name.operator.custom-literal"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    name: "Types declaration and references",
    scope: [
      "meta.return-type",
      "support.class",
      "support.type",
      "entity.name.type",
      "entity.name.namespace",
      "entity.other.attribute",
      "entity.name.scope-resolution",
      "entity.name.class",
      "storage.type.numeric.go",
      "storage.type.byte.go",
      "storage.type.boolean.go",
      "storage.type.string.go",
      "storage.type.uintptr.go",
      "storage.type.error.go",
      "storage.type.rune.go",
      "storage.type.cs",
      "storage.type.generic.cs",
      "storage.type.modifier.cs",
      "storage.type.variable.cs",
      "storage.type.annotation.java",
      "storage.type.generic.java",
      "storage.type.java",
      "storage.type.object.array.java",
      "storage.type.primitive.array.java",
      "storage.type.primitive.java",
      "storage.type.token.java",
      "storage.type.groovy",
      "storage.type.annotation.groovy",
      "storage.type.parameters.groovy",
      "storage.type.generic.groovy",
      "storage.type.object.array.groovy",
      "storage.type.primitive.array.groovy",
      "storage.type.primitive.groovy"
    ],
    settings: {
      foreground: "#C53282"
    }
  },
  {
    name: "Types declaration and references, TS grammar specific",
    scope: [
      "meta.type.cast.expr",
      "meta.type.new.expr",
      "support.constant.math",
      "support.constant.dom",
      "support.constant.json",
      "entity.other.inherited-class"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "Control flow / Special keywords",
    scope: [
      "keyword.control",
      "source.cpp keyword.operator.new",
      "source.cpp keyword.operator.delete",
      "keyword.other.using",
      "keyword.other.operator",
      "entity.name.operator"
    ],
    settings: {
      foreground: "#7F43C9"
    }
  },
  {
    name: "Variable and parameter name",
    scope: [
      "variable",
      "meta.definition.variable.name",
      "support.variable",
      "entity.name.variable",
      "constant.other.placeholder"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "Constants and enums",
    scope: [
      "variable.other.constant",
      "variable.other.enummember"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "Object keys, TS grammar specific",
    scope: [
      "meta.object-literal.key"
    ],
    settings: {
      foreground: "#434861"
    }
  },
  {
    name: "CSS property value",
    scope: [
      "support.constant.property-value",
      "support.constant.font-name",
      "support.constant.media-type",
      "support.constant.media",
      "constant.other.color.rgb-value",
      "constant.other.rgb-value",
      "support.constant.color"
    ],
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    name: "Regular expression groups",
    scope: [
      "punctuation.definition.group.regexp",
      "punctuation.definition.group.assertion.regexp",
      "punctuation.definition.character-class.regexp",
      "punctuation.character.set.begin.regexp",
      "punctuation.character.set.end.regexp",
      "keyword.operator.negation.regexp",
      "support.other.parenthesis.regexp"
    ],
    settings: {
      foreground: "#BD5800"
    }
  },
  {
    name: "Punctuation tokens",
    scope: [
      "punctuation"
    ],
    settings: {
      foreground: "#9095AD"
    }
  },
  {
    scope: [
      "constant.character.character-class.regexp",
      "constant.other.character-class.set.regexp",
      "constant.other.character-class.regexp",
      "constant.character.set.regexp"
    ],
    settings: {
      foreground: "#C53282"
    }
  },
  {
    scope: "keyword.operator.quantifier.regexp",
    settings: {
      foreground: "#434861"
    }
  },
  {
    scope: [
      "keyword.operator.or.regexp",
      "keyword.control.anchor.regexp"
    ],
    settings: {
      foreground: "#E45770"
    }
  },
  {
    scope: "constant.character",
    settings: {
      foreground: "#4956E3"
    }
  },
  {
    scope: "constant.character.escape",
    settings: {
      foreground: "#E45770"
    }
  },
  {
    scope: "entity.name.label",
    settings: {
      foreground: "#434861"
    }
  }
];
const shikiCyTheme = {
  name,
  type,
  tokenColors
};
const langJSONFilesArray = /* @__PURE__ */ Object.assign({ "../public/shiki/languages/css.tmLanguage.json": __vite_glob_0_0, "../public/shiki/languages/html.tmLanguage.json": __vite_glob_0_1, "../public/shiki/languages/javascript.tmLanguage.json": __vite_glob_0_2, "../public/shiki/languages/json.tmLanguage.json": __vite_glob_0_3, "../public/shiki/languages/jsonc.tmLanguage.json": __vite_glob_0_4, "../public/shiki/languages/jsx.tmLanguage.json": __vite_glob_0_5, "../public/shiki/languages/tsx.tmLanguage.json": __vite_glob_0_6, "../public/shiki/languages/typescript.tmLanguage.json": __vite_glob_0_7, "../public/shiki/languages/vue-html.tmLanguage.json": __vite_glob_0_8, "../public/shiki/languages/vue.tmLanguage.json": __vite_glob_0_9, "../public/shiki/languages/yaml.tmLanguage.json": __vite_glob_0_10 });
const langs = Object.values(langJSONFilesArray).map((grammar) => {
  return {
    grammar,
    id: grammar.name,
    scopeName: grammar.scopeName
  };
});
setOnigasmWASM(onigasm);
let highlighter;
const langsSupported = langs.map((lang2) => lang2.id);
async function initHighlighter() {
  if (highlighter) {
    return;
  }
  highlighter = await getHighlighter({
    theme: shikiCyTheme,
    langs
  });
}
const _hoisted_1$18 = { class: "text-left cursor-text" };
const _hoisted_2$10 = ["innerHTML"];
const _sfc_main$V = /* @__PURE__ */ defineComponent({
  __name: "ShikiHighlight",
  props: {
    code: null,
    initialLine: { default: 1 },
    lang: null,
    lineNumbers: { type: Boolean, default: false },
    wrap: { type: Boolean, default: false },
    copyOnClick: { type: Boolean, default: false },
    copyButton: { type: Boolean, default: false },
    codeframe: { type: Boolean, default: false },
    skipTrim: { type: Boolean, default: false },
    class: { default: void 0 }
  },
  setup(__props) {
    const props = __props;
    useCssVars((_ctx) => ({
      "74c38bf0": props.initialLine
    }));
    const highlighterInitialized = ref(false);
    onBeforeMount(async () => {
      await initHighlighter();
      highlighterInitialized.value = true;
    });
    const resolvedLang = computed(() => {
      switch (props.lang) {
        case "javascript":
        case "js":
        case "jsx":
          return "jsx";
        case "typescript":
        case "ts":
        case "tsx":
          return "tsx";
        default:
          return props.lang && langsSupported.includes(props.lang) ? props.lang : "plaintext";
      }
    });
    const trimmedCode = computed(() => props.skipTrim ? props.code : props.code.trim());
    const highlightedCode = computed(() => {
      return highlighter == null ? void 0 : highlighter.codeToHtml(trimmedCode.value, resolvedLang.value);
    });
    const codeEl = ref(null);
    const { copy: copy2 } = useClipboard();
    const copyCode = () => {
      if (codeEl.value) {
        const text3 = codeEl.value.innerText;
        copy2(text3);
      }
    };
    const numberOfLines = computed(() => props.code.trim().split("\n").length);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$18, [
        highlighterInitialized.value ? (openBlock(), createElementBlock("div", {
          key: 0,
          ref_key: "codeEl",
          ref: codeEl,
          class: normalizeClass([
            "shiki-wrapper",
            // All styles contain these utility classes
            "overflow-scroll hover:border-indigo-200 text-[14px] leading-[24px] font-normal",
            /**
             * 1. Single line is forced onto one line without any borders. It loses
             *    any additional padding.
             *
             * 2. Multi-line without line-numbers adds padding to compensate for the
             *    lack of margin-right that the line-numbers usually add. It has a
             *    border.
             *
             * 3. Multi-line with line-numbers doesn't have the padding, because the
             *    line numbers have margin-right.
             *
             * 4. Any of these can be wrapped with whitespace: pre-wrap. When using
             *    with line-numbers, the breaks will create a new line.
             */
            {
              "wrap": props.wrap,
              "line-numbers": props.lineNumbers,
              "p-[8px]": !props.lineNumbers && !props.codeframe,
              "p-[2px]": props.codeframe
            },
            props.class
          ]),
          onClick: _cache[0] || (_cache[0] = ($event) => __props.copyOnClick ? () => copyCode() : () => {
          }),
          innerHTML: unref(highlightedCode)
        }, null, 10, _hoisted_2$10)) : (openBlock(), createElementBlock("pre", {
          key: 1,
          class: normalizeClass(["border rounded font-normal border-gray-100 py-[8px] text-[14px] leading-[24px] overflow-scroll", [props.class, __props.lineNumbers ? "pl-[56px]" : "pl-[8px]"]])
        }, toDisplayString$1(unref(trimmedCode)), 3)),
        __props.copyButton ? (openBlock(), createBlock(_sfc_main$1f, {
          key: 2,
          variant: "outline",
          tabindex: "-1",
          class: normalizeClass(["bg-white ml-auto mt-[-32px] sticky", unref(numberOfLines) === 1 ? "bottom-[5px] right-[5px]" : "bottom-[8px] right-[8px]"]),
          text: __props.code,
          "no-icon": ""
        }, null, 8, ["class", "text"])) : createCommentVNode("", true)
      ]);
    };
  }
});
const ShikiHighlight_vue_vue_type_style_index_0_scoped_52636ce2_lang = "";
const ShikiHighlight = /* @__PURE__ */ _export_sfc$1(_sfc_main$V, [["__scopeId", "data-v-52636ce2"]]);
const _sfc_main$U = /* @__PURE__ */ defineComponent({
  __name: "OpenFileInIDE",
  props: {
    line: null,
    column: null,
    filePath: null
  },
  setup(__props) {
    const props = __props;
    gql`
query OpenFileInIDE {
  localSettings {
    preferences {
      preferredEditorBinary
    }
  }
  ...ChooseExternalEditorModal
}
`;
    gql`
mutation OpenFileInIDE_Mutation ($input: FileDetailsInput!) {
  openFileInIDE (input: $input)
}
`;
    const query2 = useQuery({ query: OpenFileInIdeDocument, requestPolicy: "network-only" });
    const OpenFileInIDE = useMutation(OpenFileInIde_MutationDocument);
    const openFileInIDE = () => {
      OpenFileInIDE.executeMutation({
        input: {
          filePath: props.filePath,
          line: props.line ?? 1,
          column: props.column ?? 1
        }
      });
    };
    const openFile = () => {
      isChooseEditorOpen.value = false;
      openFileInIDE();
    };
    const maybeShowFileInIDE = () => {
      var _a2, _b2;
      if (query2.fetching.value) {
        query2.then(() => {
          maybeShowFileInIDE();
        });
        return;
      }
      if ((_b2 = (_a2 = query2.data) == null ? void 0 : _a2.value) == null ? void 0 : _b2.localSettings.preferences.preferredEditorBinary) {
        openFileInIDE();
      } else {
        isChooseEditorOpen.value = true;
      }
    };
    const isChooseEditorOpen = ref(false);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        renderSlot(_ctx.$slots, "default", { onClick: maybeShowFileInIDE }),
        isChooseEditorOpen.value && unref(query2).data.value ? (openBlock(), createBlock(_sfc_main$X, {
          key: 0,
          open: isChooseEditorOpen.value,
          gql: unref(query2).data.value,
          onClose: _cache[0] || (_cache[0] = ($event) => isChooseEditorOpen.value = false),
          onSelected: openFile
        }, null, 8, ["open", "gql"])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$17 = ["onClick"];
const _hoisted_2$$ = { class: "break-all" };
const _sfc_main$T = /* @__PURE__ */ defineComponent({
  __name: "ErrorCodeFrame",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
fragment ErrorCodeFrame on CodeFrame {
  line
  column
  codeBlock
  file {
    id
    absolute
    relative
  }
}`;
    const fileText = computed(() => {
      const { file, line, column } = props.gql;
      return `${file.relative}${line && column ? `:${line}:${column}` : ""}`;
    });
    return (_ctx, _cache) => {
      const _component_i_cy_document_text_x16 = __unplugin_components_1$3;
      return openBlock(), createElementBlock(Fragment, null, [
        createVNode(_sfc_main$U, {
          "file-path": props.gql.file.absolute,
          line: props.gql.line ?? 0,
          column: props.gql.column ?? 0
        }, {
          default: withCtx(({ onClick }) => [
            createBaseVNode("div", {
              class: "border rounded cursor-pointer flex flex-row bg-gray-50 border-red-100 mt-[16px] text-indigo-500 text-[14px] leading-[24px] items-center",
              "tab-index": "1",
              "data-testid": "error-code-frame",
              onClick
            }, [
              createVNode(_component_i_cy_document_text_x16, { class: "h-[16px] m-[12px] mr-[8px] w-[16px] icon-dark-indigo-500 icon-light-indigo-100" }),
              createBaseVNode("code", _hoisted_2$$, toDisplayString$1(unref(fileText)), 1)
            ], 8, _hoisted_1$17)
          ]),
          _: 1
        }, 8, ["file-path", "line", "column"]),
        props.gql.codeBlock ? (openBlock(), createBlock(ShikiHighlight, {
          key: 0,
          code: props.gql.codeBlock,
          lang: "js",
          "skip-trim": "",
          codeframe: ""
        }, null, 8, ["code"])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
const _hoisted_1$16 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
function render$t(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$16, [
    createBaseVNode("path", {
      d: "M13 2H4C3.44772 2 3 2.44772 3 3V11H4H13V2Z",
      class: normalizeClass(["background", "icon-light"]),
      fill: "#D0D2E0",
      style: {}
    }),
    createBaseVNode("path", {
      d: "M13 11V2H4M13 11H4M13 11V14H4M3 11V13C3 13.5523 3.44772 14 4 14V14M3 11V3C3 2.44772 3.44772 2 4 2V2M3 11H4M4 2V11M4 11V14M10 5H7",
      class: normalizeClass(["border", "icon-dark"]),
      stroke: "#1B1E2E",
      "stroke-width": "2",
      "stroke-linecap": "round",
      "stroke-linejoin": "round"
    })
  ]);
}
const __unplugin_components_0$b = { name: "cy-book_x16", render: render$t };
const _hoisted_1$15 = {
  key: 0,
  class: "pt-[16px] min-w-[476px] max-w-[848px] m-auto"
};
const _hoisted_2$_ = { class: "pb-[24px] text-center" };
const _hoisted_3$R = {
  key: 0,
  class: "font-medium leading-snug text-[32px] text-gray-900",
  "data-cy": "error-header"
};
const _hoisted_4$w = {
  key: 1,
  class: "font-medium w-full pt-[12px] gap-4 inline-flex justify-center"
};
const _hoisted_5$i = { class: "border-b border-b-red-100 p-[16px] pt-0" };
const _hoisted_6$b = ["innerHTML"];
const _hoisted_7$9 = { class: "m-[16px] mb-0 overflow-hidden" };
const _hoisted_8$7 = ["data-cy"];
const _hoisted_9$7 = ["onClick", "onKeypress"];
const _hoisted_10$7 = ["innerHTML"];
const _sfc_main$S = /* @__PURE__ */ defineComponent({
  __name: "BaseError",
  props: {
    gql: null,
    showButtons: { type: Boolean, default: true }
  },
  emits: ["retry"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    gql`
fragment BaseError on ErrorWrapper {
  id
  title
  errorName
  errorStack
  errorType
  errorMessage
  isUserCodeError
  codeFrame {
    ...ErrorCodeFrame
  }
}
`;
    const { t: t2 } = useI18n();
    const markdownTarget = ref();
    const baseError = computed(() => props.gql);
    const { markdown } = useMarkdown(markdownTarget, computed(() => props.gql.errorMessage), { classes: { code: ["bg-error-200"] } });
    const getDocsType = () => {
      const { errorType, errorStack } = baseError.value;
      switch (true) {
        case errorStack.startsWith("UNKNOWN"):
          return "docsHomepage";
        case errorType.includes("RECORD"):
        case errorType.includes("PROJECT"):
        case errorType.includes("CLOUD"):
        case errorType.includes("PLAN"):
          return "cloudGuide";
        default:
          return "configGuide";
      }
    };
    const docsType = getDocsType();
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_right_small_x16 = __unplugin_components_0$c;
      return unref(baseError) ? (openBlock(), createElementBlock("div", _hoisted_1$15, [
        createBaseVNode("div", null, [
          createBaseVNode("div", _hoisted_2$_, [
            unref(baseError).title ? (openBlock(), createElementBlock("h1", _hoisted_3$R, [
              renderSlot(_ctx.$slots, "header", {}, () => [
                createTextVNode(toDisplayString$1(unref(baseError).title), 1)
              ])
            ])) : createCommentVNode("", true),
            __props.showButtons ? (openBlock(), createElementBlock("div", _hoisted_4$w, [
              createVNode(_sfc_main$1t, {
                variant: "outline",
                "data-testid": "error-retry-button",
                "prefix-icon": unref(RestartIcon),
                "prefix-icon-class": "icon-dark-indigo-500",
                onClick: _cache[0] || (_cache[0] = ($event) => emit2("retry", unref(baseError).id))
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("launchpadErrors.generic.retryButton")), 1)
                ]),
                _: 1
              }, 8, ["prefix-icon"]),
              createVNode(_sfc_main$1t, {
                variant: "outline",
                "data-testid": "error-docs-button",
                "prefix-icon": unref(__unplugin_components_0$b),
                "prefix-icon-class": "icon-dark-indigo-500 group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50",
                href: unref(t2)(`launchpadErrors.generic.docsButton.${unref(docsType)}.link`)
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)(`launchpadErrors.generic.docsButton.${unref(docsType)}.text`)), 1)
                ]),
                _: 1
              }, 8, ["prefix-icon", "href"])
            ])) : createCommentVNode("", true)
          ]),
          renderSlot(_ctx.$slots, "message", {}, () => [
            createVNode(_sfc_main$1i, {
              title: unref(baseError).errorName,
              status: "error",
              "body-class": "px-[0px] bg-red-50",
              "alert-class": "bg-red-50",
              "header-class": "bg-red-100 text-red-600 rounded-b-none",
              icon: unref(ErrorOutlineIcon),
              "icon-classes": "icon-dark-red-400",
              "max-height": "none"
            }, {
              default: withCtx(() => [
                createBaseVNode("div", _hoisted_5$i, [
                  createBaseVNode("div", {
                    ref_key: "markdownTarget",
                    ref: markdownTarget,
                    class: "text-red-500",
                    "data-testid": "error-message",
                    innerHTML: unref(markdown)
                  }, null, 8, _hoisted_6$b),
                  unref(baseError).codeFrame ? (openBlock(), createBlock(_sfc_main$T, {
                    key: 0,
                    gql: unref(baseError).codeFrame
                  }, null, 8, ["gql"])) : createCommentVNode("", true)
                ]),
                createBaseVNode("div", _hoisted_7$9, [
                  createVNode(_sfc_main$1j, {
                    disable: "",
                    "max-height": "none",
                    "initially-open": unref(baseError).isUserCodeError
                  }, {
                    target: withCtx(({ open, toggle }) => [
                      createBaseVNode("p", {
                        class: normalizeClass(["gap-[8px] inline-flex items-center justify-center", { "pb-[8px]": open }]),
                        "data-cy": `stack-open-${open}`
                      }, [
                        createVNode(_component_i_cy_chevron_right_small_x16, {
                          class: normalizeClass(["min-w-[8px] min-h-[8px] transform duration-150 icon-dark-red-400", { "rotate-90": open }])
                        }, null, 8, ["class"]),
                        createBaseVNode("a", {
                          href: "#",
                          class: "cursor-pointer font-medium outline-none text-red-600 hocus:underline",
                          onClick: ($event) => toggle(),
                          onKeypress: withKeys(withModifiers(($event) => toggle(), ["self", "prevent"]), ["space", "enter"])
                        }, toDisplayString$1(unref(t2)("launchpadErrors.generic.stackTraceLabel")), 41, _hoisted_9$7)
                      ], 10, _hoisted_8$7)
                    ]),
                    default: withCtx(() => [
                      createBaseVNode("pre", {
                        "data-testid": "error-header",
                        class: "bg-white rounded font-light border border-red-200 p-[16px] overflow-auto",
                        innerHTML: unref(baseError).errorStack
                      }, null, 8, _hoisted_10$7)
                    ]),
                    _: 1
                  }, 8, ["initially-open"])
                ])
              ]),
              _: 1
            }, 8, ["title", "icon"])
          ]),
          renderSlot(_ctx.$slots, "stack")
        ])
      ])) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$14 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$Z = /* @__PURE__ */ createBaseVNode("path", {
  d: "M8 1C4.13401 1 1 4.13401 1 8C1 9.95827 1.80412 11.7287 3.10018 12.9992C3.43799 11.3365 4.60091 9.97347 6.14289 9.35625C5.4468 8.80686 5 7.95561 5 7C5 5.34315 6.34315 4 8 4C9.65685 4 11 5.34315 11 7C11 7.95561 10.5532 8.80686 9.85711 9.35625C11.3991 9.97347 12.562 11.3365 12.8998 12.9992C14.1959 11.7287 15 9.95827 15 8C15 4.13401 11.866 1 8 1Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$Q = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6.14289 9.35625C6.6537 9.7594 7.29875 10 8 10C8.70125 10 9.3463 9.7594 9.85711 9.35625M6.14289 9.35625C5.4468 8.80686 5 7.95561 5 7C5 5.34315 6.34315 4 8 4C9.65685 4 11 5.34315 11 7C11 7.95561 10.5532 8.80686 9.85711 9.35625M6.14289 9.35625C4.60091 9.97347 3.43799 11.3365 3.10018 12.9992M9.85711 9.35625C11.3991 9.97347 12.562 11.3365 12.8998 12.9992M12.8998 12.9992C14.1959 11.7287 15 9.95827 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 9.95827 1.80412 11.7287 3.10018 12.9992M12.8998 12.9992C11.6372 14.2369 9.90772 15 8 15C6.09228 15 4.36279 14.2369 3.10018 12.9992",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2"
}, null, -1);
const _hoisted_4$v = [
  _hoisted_2$Z,
  _hoisted_3$Q
];
function render$s(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$14, _hoisted_4$v);
}
const __unplugin_components_1$2 = { name: "cy-profile_x16", render: render$s };
const _hoisted_1$13 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$Y = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6 12L10 8L6 4",
  stroke: "#1B1E2E",
  class: "icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$P = [
  _hoisted_2$Y
];
function render$r(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$13, _hoisted_3$P);
}
const __unplugin_components_0$a = { name: "cy-chevron-right_x16", render: render$r };
const _imports_0 = "" + new URL("cypress-dark-d55042cf.png", import.meta.url).href;
const _hoisted_1$12 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$X = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M8 1C11.866 1 15 4.13401 15 8H11C11 6.34315 9.65685 5 8 5V1ZM5 8H1C1 11.866 4.13401 15 8 15V11C6.34315 11 5 9.65685 5 8Z",
  fill: "#C5C9FD",
  class: "icon-light"
}, null, -1);
const _hoisted_3$O = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15 8C15 11.866 11.866 15 8 15M15 8C15 4.13401 11.866 1 8 1M15 8H11M8 15C4.13401 15 1 11.866 1 8M8 15V11M1 8C1 4.13401 4.13401 1 8 1M1 8H5M8 1V5M11 8C11 9.65685 9.65685 11 8 11M11 8C11 6.34315 9.65685 5 8 5M8 11C6.34315 11 5 9.65685 5 8M5 8C5 6.34315 6.34315 5 8 5",
  stroke: "#4956E3",
  class: "icon-dark",
  "stroke-width": "2"
}, null, -1);
const _hoisted_4$u = [
  _hoisted_2$X,
  _hoisted_3$O
];
function render$q(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$12, _hoisted_4$u);
}
const __unplugin_components_1$1 = { name: "cy-life-ring_x16", render: render$q };
const _hoisted_1$11 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$W = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M7.87174 8.85352C7.73926 9.16908 7.5428 9.45192 7.29832 9.68632C7.2355 9.74655 7.16951 9.80357 7.10061 9.85714C6.67114 10.1911 6.12892 10.3903 5.53951 10.3903C4.14608 10.3903 3.01648 9.27667 3.01648 7.90292C3.01648 6.52917 4.14608 5.41553 5.53951 5.41553C6.03261 5.41553 6.49267 5.55499 6.88132 5.79608C7.01087 5.87644 7.13248 5.96809 7.24473 6.06963C7.51416 6.31334 7.72971 6.61403 7.87174 6.95233L6.5334 7.41607C6.36444 7.03052 6.00101 6.76384 5.57993 6.76384C4.99763 6.76384 4.52558 7.27382 4.52558 7.90292C4.52558 8.53202 4.99763 9.04201 5.57993 9.04201C6.00101 9.04201 6.36444 8.77533 6.5334 8.38977L7.87174 8.85352Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_3$N = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M7.87174 8.85352C7.73926 9.16908 7.5428 9.45192 7.29832 9.68632C7.2355 9.74655 7.16951 9.80357 7.10061 9.85714C6.67114 10.1911 6.12892 10.3903 5.53951 10.3903C4.14608 10.3903 3.01648 9.27667 3.01648 7.90292C3.01648 6.52917 4.14608 5.41553 5.53951 5.41553C6.03261 5.41553 6.49267 5.55499 6.88132 5.79608C7.01087 5.87644 7.13248 5.96809 7.24473 6.06963C7.51416 6.31334 7.72971 6.61403 7.87174 6.95233L6.5334 7.41607C6.36444 7.03052 6.00101 6.76384 5.57993 6.76384C4.99763 6.76384 4.52558 7.27382 4.52558 7.90292C4.52558 8.53202 4.99763 9.04201 5.57993 9.04201C6.00101 9.04201 6.36444 8.77533 6.5334 8.38977L7.87174 8.85352Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_4$t = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M2 8C2 4.68629 4.68629 2 8 2C10.0081 2 11.7858 2.9865 12.8749 4.5013C13.2604 5.03749 13.5596 5.63988 13.7523 6.28815C13.9134 6.83061 14 7.4052 14 8C14 10.1687 12.8494 12.0703 11.1221 13.1249L10.126 15.7142C10.5774 15.59 11.0131 15.4272 11.4291 15.2296C14.1296 13.9468 16 11.1928 16 8C16 3.58172 12.4183 0 8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C8.1209 16 8.2412 15.9973 8.36084 15.992C8.73085 15.9755 9.04397 15.7267 9.17712 15.3811L12.9835 5.5013H11.5254L10.3889 8.71776L9.23097 5.5013H7.68707L9.61695 10.4761L8.25252 13.9948C7.89952 14.0094 7.54154 13.9928 7.19735 13.9468C4.26315 13.5545 2 11.0415 2 8Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_5$h = [
  _hoisted_2$W,
  _hoisted_3$N,
  _hoisted_4$t
];
function render$p(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$11, _hoisted_5$h);
}
const __unplugin_components_0$9 = { name: "cy-cypress-logo_x16", render: render$p };
const _hoisted_1$10 = { key: 0 };
const _hoisted_2$V = { class: "flex h-full items-center align-middle" };
const _hoisted_3$M = { class: "grow" };
const _hoisted_4$s = {
  key: 0,
  class: "flex h-full items-center align-middle"
};
const _sfc_main$R = /* @__PURE__ */ defineComponent({
  __name: "TopNavListItem",
  props: {
    selectable: null
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("li", {
        class: normalizeClass(["border-b flex border-b-gray-50 transition-colors duration-300", __props.selectable ? "hover:bg-indigo-50" : ""])
      }, [
        _ctx.$slots.prefix ? (openBlock(), createElementBlock("div", _hoisted_1$10, [
          createBaseVNode("div", _hoisted_2$V, [
            renderSlot(_ctx.$slots, "prefix")
          ])
        ])) : createCommentVNode("", true),
        createBaseVNode("div", _hoisted_3$M, [
          renderSlot(_ctx.$slots, "default")
        ]),
        createBaseVNode("div", null, [
          _ctx.$slots.suffix ? (openBlock(), createElementBlock("div", _hoisted_4$s, [
            renderSlot(_ctx.$slots, "suffix")
          ])) : createCommentVNode("", true)
        ])
      ], 2);
    };
  }
});
const _hoisted_1$$ = {
  key: 0,
  class: "flex flex-col max-h-[50vh] overflow-auto"
};
const _sfc_main$Q = /* @__PURE__ */ defineComponent({
  __name: "TopNavList",
  props: {
    variant: null,
    forceOpenState: { type: Boolean }
  },
  emits: ["clearForceOpen"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_down = __unplugin_components_0$k;
      return openBlock(), createBlock(unref(Popover), { class: "bg-white relative" }, {
        default: withCtx(({ open, close }) => [
          createVNode(unref(PopoverButton), {
            class: "grow h-full group focus:outline-none focus:ring-0",
            onClick: _cache[0] || (_cache[0] = ($event) => emit2("clearForceOpen"))
          }, {
            default: withCtx(() => [
              createBaseVNode("div", {
                class: normalizeClass(["flex gap-[8px] items-center group-hocus:text-indigo-600", open || props.forceOpenState ? "text-indigo-600" : "text-gray-600"])
              }, [
                renderSlot(_ctx.$slots, "heading", {
                  open,
                  close
                }),
                createVNode(_component_i_cy_chevron_down, {
                  class: normalizeClass(["transform transition-all w-[10px] duration-300 group-hocus:icon-dark-indigo-500", open || props.forceOpenState ? "rotate-180 icon-dark-indigo-500" : "icon-dark-gray-200"])
                }, null, 8, ["class"])
              ], 2)
            ]),
            _: 2
          }, 1024),
          createVNode(TransitionQuickFade, null, {
            default: withCtx(() => [
              createVNode(unref(PopoverPanel), {
                static: "",
                class: normalizeClass(["bg-white rounded shadow-dropdown top-[36px] right-0 z-10 absolute", __props.forceOpenState === true || open ? "" : "hidden"])
              }, {
                default: withCtx(() => [
                  __props.variant !== "panel" ? (openBlock(), createElementBlock("ul", _hoisted_1$$, [
                    renderSlot(_ctx.$slots, "default")
                  ])) : renderSlot(_ctx.$slots, "default", { key: 1 })
                ]),
                _: 2
              }, 1032, ["class"])
            ]),
            _: 2
          }, 1024)
        ]),
        _: 3
      });
    };
  }
});
const _hoisted_1$_ = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 10 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$U = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M5 3H8C8.55228 3 9 3.44772 9 4V4.5M5 3H2C1.44772 3 1 3.44772 1 4V7C1 7.55228 1.44772 8 2 8H5M5 3V1M5 3V8M5 13H8C8.55228 13 9 12.5523 9 12V9C9 8.44772 8.55228 8 8 8H5M5 13H2C1.44772 13 1 12.5523 1 12V11.5M5 13V15M5 13V8",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$L = [
  _hoisted_2$U
];
function render$o(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$_, _hoisted_3$L);
}
const __unplugin_components_4 = { name: "cy-dollar_x16", render: render$o };
const _hoisted_1$Z = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 14 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$T = /* @__PURE__ */ createBaseVNode("path", {
  d: "M7 1V6H12.5L7 15V10H1.5L7 1Z",
  fill: "#D0D2E0",
  class: "icon-light icon-dark-stroke",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$K = [
  _hoisted_2$T
];
function render$n(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$Z, _hoisted_3$K);
}
const __unplugin_components_3 = { name: "cy-lightning_x16", render: render$n };
const _hoisted_1$Y = {
  height: "1em",
  width: "1em",
  viewBox: "0 0 20 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$S = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M12 15L19 8M19 8L12 1M19 8L1 8",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$J = [
  _hoisted_2$S
];
function render$m(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$Y, _hoisted_3$J);
}
const __unplugin_components_2 = { name: "cy-arrow-outline-right", render: render$m };
const _hoisted_1$X = {
  height: "1em",
  width: "1em",
  style: { "min-width": "18px", "min-height": "18px" },
  viewBox: "0 0 20 20",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$R = /* @__PURE__ */ createBaseVNode("path", {
  class: "icon-dark",
  d: "M11 13V12H9V13H11ZM9 7V8H11V7H9ZM5.5 9C3.567 9 2 7.433 2 5.5H0C0 8.53757 2.46243 11 5.5 11V9ZM2 5.5C2 3.567 3.567 2 5.5 2V0C2.46243 0 0 2.46243 0 5.5H2ZM5.5 2C7.433 2 9 3.567 9 5.5H11C11 2.46243 8.53757 0 5.5 0V2ZM18 14.5C18 16.433 16.433 18 14.5 18V20C17.5376 20 20 17.5376 20 14.5H18ZM14.5 18C12.567 18 11 16.433 11 14.5H9C9 17.5376 11.4624 20 14.5 20V18ZM14.5 11C16.433 11 18 12.567 18 14.5H20C20 11.4624 17.5376 9 14.5 9V11ZM14.5 9H5.5V11H14.5V9ZM11 14.5V13H9V14.5H11ZM9 5.5V7H11V5.5H9Z",
  fill: "#1B1E2E"
}, null, -1);
const _hoisted_3$I = [
  _hoisted_2$R
];
function render$l(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$X, _hoisted_3$I);
}
const __unplugin_components_1 = { name: "cy-infinity-loop_x18", render: render$l };
const _hoisted_1$W = {
  height: "1em",
  width: "1em",
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$Q = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 2H4C3.44772 2 3 2.44772 3 3V11H4H13V2Z",
  fill: "#D0D2E0",
  class: "icon-light background",
  style: {}
}, null, -1);
const _hoisted_3$H = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 11V2H4M13 11H4M13 11V14H4M3 11V13C3 13.5523 3.44772 14 4 14V14M3 11V3C3 2.44772 3.44772 2 4 2V2M3 11H4M4 2V11M4 11V14M10 5H7",
  stroke: "#1B1E2E",
  class: "border icon-dark",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$r = [
  _hoisted_2$Q,
  _hoisted_3$H
];
function render$k(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$W, _hoisted_4$r);
}
const __unplugin_components_0$8 = { name: "cy-book", render: render$k };
const CircleCI = "" + new URL("circleci-24e4167f.svg", import.meta.url).href;
const GitHubActions = "" + new URL("github-actions-6dfde8a3.svg", import.meta.url).href;
const Bitbucket = "" + new URL("bitbucket-b0e5576f.svg", import.meta.url).href;
const Gitlab = "" + new URL("gitlab-af370db4.svg", import.meta.url).href;
const AwsCodeBuild = "" + new URL("aws-codebuild-bc37b58b.svg", import.meta.url).href;
const _hoisted_1$V = { key: 0 };
const _hoisted_2$P = { class: "p-[24px] pt-[20px]" };
const _hoisted_3$G = { class: "mb-[16px] text-gray-600" };
const _hoisted_4$q = {
  class: "flex flex-wrap gap-[16px]",
  "data-testid": "provider-list"
};
const _hoisted_5$g = ["src"];
const _hoisted_6$a = { class: "grow" };
const _hoisted_7$8 = { class: "pb-[4px] text-indigo-500" };
const _hoisted_8$6 = { class: "text-gray-600 text-[14px]" };
const _hoisted_9$6 = {
  key: 1,
  class: "p-[24px]"
};
const _hoisted_10$6 = { class: "border-b border-b-gray-50 pb-[12px] text-[14px]" };
const _hoisted_11$5 = { class: "font-bold" };
const _hoisted_12$5 = { class: "border-l border-l-jade-500 border-opacity-50 grid w-[28px] place-content-center" };
const _hoisted_13$4 = { class: "rounded flex bg-gray-500 text-white mb-[12px] pt-[9px] pr-[3px] pb-[7px] pl-[12px] justify-between" };
const _hoisted_14$3 = { class: "font-bold" };
const _hoisted_15$3 = { class: "border-l border-l-gray-600 border-opacity-50 grid w-[28px] place-content-center" };
const _hoisted_16$3 = { class: "mt-[20px] mb-[10px] text-gray-600" };
const _hoisted_17$3 = { class: "text-gray-700" };
const _sfc_main$P = /* @__PURE__ */ defineComponent({
  __name: "PromptContent",
  props: {
    type: null,
    automatic: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    const getUrl = (link4) => {
      return getUrlWithParams(link4);
    };
    const shrink = useTimeout(500);
    const utmMedium = "CI Prompt 1";
    const utmContent = computed(() => props.automatic ? "Automatic" : "Manual");
    const ciProviders = [
      {
        name: "Circle CI",
        icon: CircleCI,
        link: {
          url: "https://on.cypress.io/setup-ci-circleci",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "Circle",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "GitHub Actions",
        icon: GitHubActions,
        link: {
          url: "https://on.cypress.io/github-actions",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "GitHub",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "Bitbucket Pipelines",
        icon: Bitbucket,
        link: {
          url: "https://on.cypress.io/bitbucket-pipelines",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "Bitbucket",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "GitLab",
        icon: Gitlab,
        link: {
          url: "https://on.cypress.io/gitlab-ci",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "GitLab",
            utm_content: utmContent.value
          }
        }
      },
      {
        name: "AWS CodeBuild",
        icon: AwsCodeBuild,
        link: {
          url: "https://on.cypress.io/aws-codebuild",
          params: {
            utm_medium: utmMedium,
            utm_campaign: "AWS",
            utm_content: utmContent.value
          }
        }
      }
    ];
    const seeOtherGuidesInfo = {
      url: "https://on.cypress.io/setup-ci",
      params: {
        utm_medium: utmMedium,
        utm_campaign: "Other",
        utm_content: utmContent.value
      }
    };
    const orchestrationBullets = [
      t2("topNav.docsMenu.prompts.orchestration1.bullet1"),
      t2("topNav.docsMenu.prompts.orchestration1.bullet2"),
      t2("topNav.docsMenu.prompts.orchestration1.bullet3")
    ];
    return (_ctx, _cache) => {
      const _component_i_cy_book = __unplugin_components_0$8;
      const _component_i_cy_infinity_loop_x18 = __unplugin_components_1;
      const _component_i_cy_arrow_outline_right = __unplugin_components_2;
      const _component_i_cy_lightning_x16 = __unplugin_components_3;
      const _component_i_cy_dollar_x16 = __unplugin_components_4;
      const _component_i_cy_arrow_right_x16 = __unplugin_components_0$n;
      return __props.type === "ci1" ? (openBlock(), createElementBlock("div", _hoisted_1$V, [
        createBaseVNode("div", _hoisted_2$P, [
          createBaseVNode("p", _hoisted_3$G, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.description")), 1),
          createBaseVNode("ul", _hoisted_4$q, [
            (openBlock(), createElementBlock(Fragment, null, renderList(ciProviders, (provider) => {
              return createBaseVNode("li", {
                key: provider.name,
                class: ""
              }, [
                createVNode(_sfc_main$1t, {
                  href: getUrl(provider.link),
                  class: "!w-[210px]",
                  size: "lg",
                  variant: "outline"
                }, {
                  prefix: withCtx(() => [
                    createBaseVNode("img", {
                      src: provider.icon,
                      width: "14"
                    }, null, 8, _hoisted_5$g)
                  ]),
                  default: withCtx(() => [
                    createTextVNode(" " + toDisplayString$1(provider.name), 1)
                  ]),
                  _: 2
                }, 1032, ["href"])
              ]);
            }), 64)),
            createBaseVNode("li", null, [
              createVNode(_sfc_main$1t, {
                href: getUrl(seeOtherGuidesInfo),
                variant: "outline",
                size: "lg",
                class: "!w-[210px]"
              }, {
                prefix: withCtx(() => [
                  createVNode(_component_i_cy_book, { class: "h-[16px] w-[16px] icon-dark-gray-500 icon-light-gray-50" })
                ]),
                default: withCtx(() => [
                  createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.seeOtherGuides")), 1)
                ]),
                _: 1
              }, 8, ["href"])
            ])
          ])
        ]),
        createVNode(_sfc_main$1x, {
          href: getUrl({
            url: "https://on.cypress.io/ci",
            params: {
              utm_medium: utmMedium,
              utm_campaign: "Learn More"
            }
          }),
          "use-default-hocus": false,
          class: "border border-transparent flex outline-transparent bg-gray-50 py-[16px] px-[24px] box-border items-center group hocus-default"
        }, {
          default: withCtx(() => [
            createVNode(_component_i_cy_infinity_loop_x18, { class: "h-[20px] mr-[20px] w-[20px] icon-dark-indigo-500" }),
            createBaseVNode("div", _hoisted_6$a, [
              createBaseVNode("p", _hoisted_7$8, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.intro")), 1),
              createBaseVNode("p", _hoisted_8$6, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.ci1.learnTheBasics")), 1)
            ]),
            createVNode(_component_i_cy_arrow_outline_right, { class: "h-[20px] transform transition-transform ease-in w-[20px] duration-200 icon-dark-gray-400 group-hocus:translate-x-[2px]" })
          ]),
          _: 1
        }, 8, ["href"])
      ])) : __props.type === "orchestration1" ? (openBlock(), createElementBlock("div", _hoisted_9$6, [
        createBaseVNode("div", _hoisted_10$6, [
          createBaseVNode("div", {
            class: normalizeClass(["rounded flex bg-jade-400 text-white mb-[12px] w-full pt-[9px] pr-[3px] pb-[7px] pl-[12px] transition-all duration-800 justify-between", { "w-[50%]": unref(shrink) }])
          }, [
            createBaseVNode("span", null, [
              createBaseVNode("span", _hoisted_11$5, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.parallelTime")), 1),
              createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.withParallelization")), 1)
            ]),
            createBaseVNode("div", _hoisted_12$5, [
              createVNode(_component_i_cy_lightning_x16, { class: "h-[16px] w-[16px] icon-dark-white icon-light-jade-400" })
            ])
          ], 2),
          createBaseVNode("div", _hoisted_13$4, [
            createBaseVNode("span", null, [
              createBaseVNode("span", _hoisted_14$3, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.noParallelTime")), 1),
              createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.withoutParallelization")), 1)
            ]),
            createBaseVNode("div", _hoisted_15$3, [
              createVNode(_component_i_cy_dollar_x16, { class: "h-[16px] w-[16px] icon-dark-white" })
            ])
          ])
        ]),
        createBaseVNode("p", _hoisted_16$3, toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.intro")), 1),
        createBaseVNode("ul", _hoisted_17$3, [
          (openBlock(), createElementBlock(Fragment, null, renderList(orchestrationBullets, (bullet2) => {
            return createBaseVNode("li", {
              key: bullet2,
              class: "flex py-[4px] items-center"
            }, [
              createVNode(_component_i_cy_lightning_x16, { class: "h-[16px] mr-[10px] w-[16px] icon-dark-jade-400 icon-light-jade-200" }),
              createTextVNode(" " + toDisplayString$1(bullet2), 1)
            ]);
          }), 64))
        ]),
        createVNode(_sfc_main$1t, {
          href: getUrl(
            {
              url: "https://on.cypress.io/smart-orchestration",
              params: {
                utm_medium: utmMedium,
                utm_campaign: "Learn More"
              }
            }
          ),
          size: "lg",
          class: "mt-[12px]"
        }, {
          suffix: withCtx(() => [
            createVNode(_component_i_cy_arrow_right_x16, { class: "icon-dark-current" })
          ]),
          default: withCtx(() => [
            createTextVNode(toDisplayString$1(unref(t2)("topNav.docsMenu.prompts.orchestration1.learnMore")) + " ", 1)
          ]),
          _: 1
        }, 8, ["href"])
      ])) : createCommentVNode("", true);
    };
  }
});
const chromeIcon = "" + new URL("chrome-98045c79.svg", import.meta.url).href;
const firefoxIcon = "" + new URL("firefox-9be61e66.svg", import.meta.url).href;
const edgeIcon = "" + new URL("edge-e54a3dc2.svg", import.meta.url).href;
const electronIcon = "" + new URL("electron-fb07f5cc.svg", import.meta.url).href;
const canaryIcon = "" + new URL("chrome-canary-0acefc94.svg", import.meta.url).href;
const chromeBetaIcon = "" + new URL("chrome-beta-c9aa05de.svg", import.meta.url).href;
const chromiumIcon = "" + new URL("chromium-8e77d142.svg", import.meta.url).href;
const edgeBetaIcon = "" + new URL("edge-beta-133307b4.png", import.meta.url).href;
const edgeCanaryIcon = "" + new URL("edge-canary-1fc5e3a2.png", import.meta.url).href;
const edgeDevIcon = "" + new URL("edge-dev-51b8edea.png", import.meta.url).href;
const firefoxNightlyIcon = "" + new URL("firefox-nightly-fb69ff49.svg", import.meta.url).href;
const firefoxDeveloperEditionIcon = "" + new URL("firefox-developer-edition-8f88b864.svg", import.meta.url).href;
const webKitIcon = "" + new URL("webkit-53e0cd5c.svg", import.meta.url).href;
const genericBrowserLogo = "" + new URL("generic-browser-b2bc06f2.svg", import.meta.url).href;
const allBrowsersIcons = {
  "Electron": electronIcon,
  "Chrome": chromeIcon,
  "Firefox": firefoxIcon,
  "Edge": edgeIcon,
  "Chromium": chromiumIcon,
  "Canary": canaryIcon,
  "Chrome Beta": chromeBetaIcon,
  "Firefox Nightly": firefoxNightlyIcon,
  "Firefox Developer Edition": firefoxDeveloperEditionIcon,
  "Edge Canary": edgeCanaryIcon,
  "Edge Beta": edgeBetaIcon,
  "Edge Dev": edgeDevIcon,
  "WebKit": webKitIcon,
  "generic": genericBrowserLogo
};
const _hoisted_1$U = { class: "font-medium text-gray-800" };
const _hoisted_2$O = /* @__PURE__ */ createBaseVNode("hr", { class: "border-gray-50 my-[10px]" }, null, -1);
const _hoisted_3$F = ["onClick"];
const _sfc_main$O = /* @__PURE__ */ defineComponent({
  __name: "DocsMenuContent",
  props: {
    currentProjectExists: { type: Boolean }
  },
  emits: ["setDocsContent"],
  setup(__props, { emit: emit2 }) {
    const { t: t2 } = useI18n();
    const utm_medium = "Docs Menu";
    const switchToGrowthPrompt = (target2) => {
      emit2("setDocsContent", target2);
    };
    const getUrl = (link4) => {
      return getUrlWithParams(link4);
    };
    const docsMenu = [{
      title: t2("topNav.docsMenu.gettingStartedTitle"),
      children: [
        {
          text: t2("topNav.docsMenu.firstTest"),
          link: {
            url: "https://on.cypress.io/writing-first-test",
            params: {
              utm_medium,
              utm_content: "First Test"
            }
          }
        },
        {
          text: t2("topNav.docsMenu.testingApp"),
          link: {
            url: "https://on.cypress.io/testing-your-app",
            params: {
              utm_medium,
              utm_content: "Testing Your App"
            }
          }
        },
        {
          text: t2("topNav.docsMenu.organizingTests"),
          link: {
            url: "https://on.cypress.io/writing-and-organizing-tests",
            params: {
              utm_medium,
              utm_content: "Organizing Tests"
            }
          }
        }
      ]
    }, {
      title: t2("topNav.docsMenu.referencesTitle"),
      children: [{
        text: t2("topNav.docsMenu.bestPractices"),
        link: {
          url: "https://on.cypress.io/best-practices",
          params: {
            utm_medium,
            utm_content: "Best Practices"
          }
        }
      }, {
        text: t2("topNav.docsMenu.configuration"),
        link: {
          url: "https://on.cypress.io/configuration",
          params: {
            utm_medium,
            utm_content: "Configuration"
          }
        }
      }, {
        text: t2("topNav.docsMenu.api"),
        link: {
          url: "https://on.cypress.io/api",
          params: {
            utm_medium,
            utm_content: "API"
          }
        }
      }]
    }, {
      title: t2("topNav.docsMenu.ciTitle"),
      children: [{
        text: t2("topNav.docsMenu.ciSetup"),
        changeContent: "ci1",
        link: {
          url: "https://on.cypress.io/ci",
          params: {
            utm_medium,
            utm_content: "Set Up CI"
          }
        }
      }, {
        text: t2("topNav.docsMenu.fasterTests"),
        changeContent: "orchestration1",
        link: {
          url: "https://on.cypress.io/parallelization",
          params: {
            utm_medium,
            utm_content: "Parallelization"
          }
        }
      }]
    }];
    return (_ctx, _cache) => {
      const _component_i_cy_book_x16 = __unplugin_components_0$b;
      return openBlock(), createElementBlock(Fragment, null, renderList(docsMenu, (list3) => {
        return createBaseVNode("div", {
          key: list3.title,
          class: "min-w-[164px]"
        }, [
          createBaseVNode("h2", _hoisted_1$U, toDisplayString$1(list3.title), 1),
          _hoisted_2$O,
          createBaseVNode("ul", null, [
            (openBlock(true), createElementBlock(Fragment, null, renderList(list3.children, (item) => {
              return openBlock(), createElementBlock("li", {
                key: item.text,
                class: "flex mb-[4px] text-indigo-500 items-center"
              }, [
                createVNode(_component_i_cy_book_x16, { class: "icon-dark-indigo-500 icon-light-indigo-50" }),
                !item.changeContent || !__props.currentProjectExists ? (openBlock(), createBlock(_sfc_main$1x, {
                  key: 0,
                  href: getUrl(item.link),
                  class: "font-normal ml-[4px] whitespace-nowrap"
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(item.text), 1)
                  ]),
                  _: 2
                }, 1032, ["href"])) : (openBlock(), createElementBlock("button", {
                  key: 1,
                  class: "font-normal ml-[4px] whitespace-nowrap hocus-link-default",
                  onClick: ($event) => switchToGrowthPrompt(item.changeContent)
                }, toDisplayString$1(item.text), 9, _hoisted_3$F))
              ]);
            }), 128))
          ])
        ]);
      }), 64);
    };
  }
});
const _hoisted_1$T = { class: "p-[24px] text-gray-700" };
const _hoisted_2$N = { class: "mb-[16px]" };
const _hoisted_3$E = { class: "font-bold" };
const _sfc_main$N = /* @__PURE__ */ defineComponent({
  __name: "UpdateCypressModal",
  props: {
    installCommand: null,
    installedVersion: null,
    latestVersion: null,
    projectName: { default: "" },
    show: { type: Boolean }
  },
  emits: ["close"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const title = `${t2("topNav.updateCypress.title")} ${props.latestVersion}`;
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createBlock(_sfc_main$Y, {
        class: "transition transition-all w-[680px] duration-200",
        variant: "bare",
        title,
        "model-value": __props.show,
        "no-help": true,
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emits("close"))
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$T, [
            createBaseVNode("p", _hoisted_2$N, [
              createVNode(_component_i18n_t, {
                scope: "global",
                keypath: "topNav.updateCypress.currentlyRunning"
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(__props.installedVersion), 1)
                ]),
                _: 1
              }),
              createVNode(_component_i18n_t, {
                scope: "global",
                keypath: props.projectName ? "topNav.updateCypress.pasteToUpgradeProject" : "topNav.updateCypress.pasteToUpgradeGlobal"
              }, {
                default: withCtx(() => [
                  createBaseVNode("span", _hoisted_3$E, toDisplayString$1(unref(t2)("topNav.updateCypress.rememberToCloseInsert")), 1)
                ]),
                _: 1
              }, 8, ["keypath"])
            ]),
            createVNode(_sfc_main$1e, {
              command: __props.installCommand + "cypress@" + __props.latestVersion,
              "project-folder-name": __props.projectName
            }, null, 8, ["command", "project-folder-name"])
          ])
        ]),
        _: 1
      }, 8, ["model-value"]);
    };
  }
});
const _hoisted_1$S = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$M = /* @__PURE__ */ createBaseVNode("path", {
  d: "M20.4853 20.4853C15.799 25.1716 8.20101 25.1716 3.51472 20.4853C-1.17157 15.799 -1.17157 8.20101 3.51472 3.51472C8.20101 -1.17157 15.799 -1.17157 20.4853 3.51472C25.1716 8.20101 25.1716 15.799 20.4853 20.4853Z",
  fill: "#FFF",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$D = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15.999 9L11 15L8.00098 12",
  stroke: "white",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-light"
}, null, -1);
const _hoisted_4$p = /* @__PURE__ */ createBaseVNode("circle", {
  cx: "12",
  cy: "12",
  r: "12",
  stroke: "black",
  "stroke-width": "1",
  style: { "stroke": "rgba(0,0,0,0.1)" }
}, null, -1);
const _hoisted_5$f = [
  _hoisted_2$M,
  _hoisted_3$D,
  _hoisted_4$p
];
function render$j(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$S, _hoisted_5$f);
}
const __unplugin_components_0$7 = { name: "cy-circle-check_x24", render: render$j };
const _sfc_main$M = /* @__PURE__ */ defineComponent({
  __name: "Tooltip",
  props: {
    color: { default: void 0 },
    hideArrow: { type: Boolean, default: false },
    disabled: { type: Boolean, default: false },
    isInteractive: { type: Boolean, default: false },
    distance: { default: void 0 },
    skidding: { default: void 0 },
    placement: { default: void 0 },
    popperClass: { default: void 0 },
    showDelay: { default: 0 },
    hideDelay: { default: 100 },
    instantMove: { type: Boolean, default: void 0 },
    showGroup: { default: void 0 }
  },
  setup(__props) {
    const props = __props;
    options.disposeTimeout = 0;
    const theme = computed(() => {
      return props.isInteractive ? "menu" : "tooltip";
    });
    const actualPopperClass = computed(() => {
      const result = props.popperClass ? [props.popperClass] : [];
      if (props.hideArrow) {
        result.push("no-arrow");
      }
      if (props.color === "dark") {
        result.push("cypress-v-tooltip-dark");
      } else if (props.color === "light") {
        result.push("cypress-v-tooltip-light");
      } else if (!props.isInteractive) {
        result.push("cypress-v-tooltip-dark");
      } else {
        result.push("cypress-v-tooltip-light");
      }
      return result;
    });
    return (_ctx, _cache) => {
      return !__props.disabled ? (openBlock(), createBlock(resolveDynamicComponent(__props.isInteractive ? unref(Menu) : unref(Tooltip)), {
        key: 0,
        "popper-class": unref(actualPopperClass),
        theme: unref(theme),
        placement: __props.placement ?? "auto",
        distance: __props.distance,
        skidding: __props.skidding,
        "auto-hide": false,
        delay: { show: __props.showDelay, hide: __props.hideDelay },
        "show-group": __props.showGroup
      }, {
        popper: withCtx(({ shown, hide }) => [
          renderSlot(_ctx.$slots, "popper", {
            shown,
            hide
          })
        ]),
        default: withCtx(() => [
          renderSlot(_ctx.$slots, "default")
        ]),
        _: 3
      }, 8, ["popper-class", "theme", "placement", "distance", "skidding", "delay", "show-group"])) : renderSlot(_ctx.$slots, "default", { key: 1 });
    };
  }
});
const Tooltip_vue_vue_type_style_index_0_lang = "";
function sortBrowsers(browsers) {
  return browsers.sort((a2, b2) => a2.displayName > b2.displayName ? 1 : -1);
}
const _hoisted_1$R = ["data-browser-id", "onClick"];
const _hoisted_2$L = ["src"];
const _hoisted_3$C = { class: "grow" };
const _hoisted_4$o = { class: "font-normal mr-[20px] text-gray-500 text-[14px] filter whitespace-nowrap group-focus-within:mix-blend-luminosity group-hover:mix-blend-luminosity" };
const _hoisted_5$e = { key: 0 };
const _hoisted_6$9 = { class: "flex h-full items-center align-middle" };
const _hoisted_7$7 = {
  key: 0,
  "data-cy": "top-nav-browser-list-selected-item"
};
const _hoisted_8$5 = {
  key: 1,
  class: "h-[16px] relative"
};
const _hoisted_9$5 = { class: "text-center p-2 text-gray-300 text-[14px] leading-[20px]" };
const _hoisted_10$5 = /* @__PURE__ */ createBaseVNode("div", { class: "font-medium text-white mb-2" }, " Unsupported browser ", -1);
const _sfc_main$L = /* @__PURE__ */ defineComponent({
  __name: "VerticalBrowserListItems",
  props: {
    selectable: { type: Boolean, default: false },
    gql: null,
    specPath: { default: "" }
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment VerticalBrowserListItems on CurrentProject {
  id
  browsers {
    id
    isSelected
    displayName
    version
    majorVersion
    isVersionSupported
    warning
    disabled
  }
}
`;
    gql`
mutation VerticalBrowserListItems_SetBrowser($id: ID!, $specPath: String) {
  launchpadSetBrowser(id: $id) {
    id
    ...VerticalBrowserListItems
  }
  launchOpenProject(specPath: $specPath) {
    id
  }
}
`;
    const browsers = computed(() => {
      if (!props.gql.browsers) {
        return void 0;
      }
      return sortBrowsers([...props.gql.browsers]);
    });
    const setBrowser = useMutation(VerticalBrowserListItems_SetBrowserDocument);
    const handleBrowserChoice = async (browser2) => {
      if (browser2.disabled || !browser2.isVersionSupported || browser2.isSelected) {
        return;
      }
      const mutation = { id: browser2.id, specPath: props.specPath };
      await setBrowser.executeMutation(mutation);
    };
    return (_ctx, _cache) => {
      const _component_i_cy_circle_check_x24 = __unplugin_components_0$7;
      const _component_i_cy_circle_bg_question_mark_x16 = __unplugin_components_0$d;
      return props.gql ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(browsers), (browser2) => {
        return openBlock(), createElementBlock("li", {
          key: browser2.id,
          class: normalizeClass(["border-b border-transparent cursor-pointer flex border-b-gray-50 border-[1px] min-w-[240px] py-[12px] px-[16px] transition-colors duration-300 group focus-within-default", {
            "bg-jade-50": browser2.isSelected,
            "hover:bg-indigo-50 focus-within:bg-indigo-50": !browser2.isSelected && !browser2.disabled && browser2.isVersionSupported,
            "bg-gray-50 cursor-not-allowed": browser2.disabled || !browser2.isVersionSupported,
            "cursor-pointer": !browser2.disabled && browser2.isVersionSupported
          }]),
          "data-cy": "top-nav-browser-list-item",
          "data-browser-id": browser2.id,
          onClick: ($event) => handleBrowserChoice(browser2)
        }, [
          createBaseVNode("img", {
            class: normalizeClass(["mr-[16px] min-w-[26px] w-[26px]", { "filter grayscale": browser2.disabled || !browser2.isVersionSupported }]),
            src: unref(allBrowsersIcons)[browser2.displayName] || unref(allBrowsersIcons).generic,
            alt: ""
          }, null, 10, _hoisted_2$L),
          createBaseVNode("div", _hoisted_3$C, [
            createBaseVNode("div", null, [
              createBaseVNode("button", {
                class: normalizeClass(["font-medium box-border focus:outline-none", {
                  "text-indigo-500 group-hover:text-indigo-700": !browser2.isSelected && !browser2.disabled && browser2.isVersionSupported,
                  "text-jade-700": browser2.isSelected,
                  "text-gray-500": browser2.disabled || !browser2.isVersionSupported
                }])
              }, toDisplayString$1(browser2.displayName), 3),
              createBaseVNode("div", _hoisted_4$o, [
                createTextVNode(toDisplayString$1(unref(t2)("topNav.version")) + " " + toDisplayString$1(browser2.majorVersion) + " ", 1),
                browser2.version === "unsupported" ? (openBlock(), createElementBlock("span", _hoisted_5$e, " (" + toDisplayString$1(unref(t2)("topNav.versionUnsupported")) + ") ", 1)) : createCommentVNode("", true)
              ])
            ])
          ]),
          createBaseVNode("div", null, [
            createBaseVNode("div", _hoisted_6$9, [
              browser2.isSelected ? (openBlock(), createElementBlock("div", _hoisted_7$7, [
                createVNode(_component_i_cy_circle_check_x24, { class: "h-[24px] w-[24px] icon-dark-jade-100 icon-light-jade-500" })
              ])) : !browser2.isVersionSupported ? (openBlock(), createElementBlock("div", _hoisted_8$5, [
                createVNode(_sfc_main$M, null, {
                  popper: withCtx(() => [
                    createBaseVNode("div", _hoisted_9$5, [
                      _hoisted_10$5,
                      createTextVNode(" " + toDisplayString$1(browser2.warning), 1)
                    ])
                  ]),
                  default: withCtx(() => [
                    createVNode(_component_i_cy_circle_bg_question_mark_x16, {
                      class: "icon-dark-gray-700 icon-light-gray-200",
                      "data-cy": "unsupported-browser-tooltip-trigger"
                    })
                  ]),
                  _: 2
                }, 1024)
              ])) : createCommentVNode("", true)
            ])
          ])
        ], 10, _hoisted_1$R);
      }), 128)) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$Q = {
  "data-cy": "top-nav-version-list",
  class: "font-medium text-indigo-500 whitespace-nowrap"
};
const _hoisted_2$K = /* @__PURE__ */ createBaseVNode("span", {
  class: "text-indigo-300",
  "aria-hidden": "true"
}, "•", -1);
const _hoisted_3$B = { class: "font-medium" };
const _hoisted_4$n = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_5$d = { class: "text-gray-500 text-[14px] leading-[20px]" };
const _hoisted_6$8 = { class: "rounded-md bg-indigo-50" };
const _hoisted_7$6 = { class: "p-[5px] text-indigo-500" };
const _hoisted_8$4 = { class: "leading-normal py-[8px] pb-[16px] text-gray-500 text-[14px]" };
const _hoisted_9$4 = { class: "whitespace-nowrap" };
const _hoisted_10$4 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_11$4 = { class: "text-gray-600 text-[14px]" };
const _hoisted_12$4 = { class: "rounded-md bg-orange-100" };
const _hoisted_13$3 = { class: "p-[5px] text-amber-800" };
const _hoisted_14$2 = ["alt", "src"];
const _hoisted_15$2 = {
  "data-cy": "top-nav-active-browser",
  class: "font-medium whitespace-nowrap"
};
const _hoisted_16$2 = {
  key: 0,
  "data-cy": "docs-menu-container",
  class: "flex flex-col p-[16px] gap-[24px] md:flex-row"
};
const _hoisted_17$2 = { class: "border-b border-b-gray-50 py-3 px-6 text-lg relative" };
const _sfc_main$K = /* @__PURE__ */ defineComponent({
  __name: "TopNav",
  props: {
    gql: null,
    showBrowsers: { type: Boolean },
    forceOpenDocs: { type: Boolean }
  },
  emits: ["clearForceOpen"],
  setup(__props, { emit: emit2 }) {
    var _a2, _b2, _c, _d;
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment TopNav on Query {
  versions {
    current {
      id
      version
      released
    }
    latest {
      id
      version
      released
    }
  }

  currentProject {
    id
    title
    packageManager
    activeBrowser {
      id
      displayName
      majorVersion
    }
    ...VerticalBrowserListItems
  }
}
`;
    gql`
mutation TopNav_SetPromptShown($slug: String!) {
  setPromptShown(slug: $slug)
}
`;
    const setPromptShown = useMutation(TopNav_SetPromptShownDocument);
    const promptsEl = ref(null);
    const currentReleased = useTimeAgo(
      ((_b2 = (_a2 = props.gql.versions) == null ? void 0 : _a2.current) == null ? void 0 : _b2.released) ? new Date(props.gql.versions.current.released) : ""
    );
    const latestReleased = useTimeAgo(
      ((_d = (_c = props.gql.versions) == null ? void 0 : _c.latest) == null ? void 0 : _d.released) ? new Date(props.gql.versions.latest.released) : ""
    );
    const versions = computed(() => {
      if (!props.gql.versions) {
        return null;
      }
      return {
        current: {
          released: currentReleased.value,
          version: props.gql.versions.current.version
        },
        latest: {
          released: latestReleased.value,
          version: props.gql.versions.latest.version
        }
      };
    });
    const runningOldVersion = computed(() => {
      return props.gql.versions ? props.gql.versions.current.released < props.gql.versions.latest.released : false;
    });
    const showUpdateModal = ref(false);
    const docsMenuVariant = ref("main");
    watchEffect(() => {
      docsMenuVariant.value = props.forceOpenDocs ? "ci1" : "main";
    });
    watch(docsMenuVariant, (newVal, oldVal) => {
      if (oldVal !== "main") {
        setPromptShown.executeMutation({ slug: `${oldVal}` });
      }
    });
    onClickOutside(promptsEl, () => {
      emit2("clearForceOpen");
      setTimeout(() => {
        docsMenuVariant.value = "main";
      }, 300);
    });
    const resetPrompt = (event) => {
      var _a3;
      if (promptsEl.value === null) {
        return;
      }
      const target2 = event.target;
      if (!((_a3 = promptsEl.value) == null ? void 0 : _a3.$el.contains(target2))) {
        docsMenuVariant.value = "main";
      }
    };
    const installCommand = computed(() => {
      var _a3;
      switch ((_a3 = props.gql.currentProject) == null ? void 0 : _a3.packageManager) {
        case "npm":
          return "npm install -D ";
        case "yarn":
          return "yarn add -D ";
        case "pnpm":
          return "pnpm add -D ";
        default:
          return "npm install -D ";
      }
    });
    onKeyStroke(["Enter", " ", "Escape"], (event) => {
      resetPrompt(event);
    });
    const changelogLink = (version2) => {
      return `https://on.cypress.io/changelog#${version2.replaceAll(".", "-")}`;
    };
    return (_ctx, _cache) => {
      var _a3, _b3, _c2, _d2;
      const _component_i_cy_cypress_logo_x16 = __unplugin_components_0$9;
      const _component_i_cy_life_ring_x16 = __unplugin_components_1$1;
      const _component_i_cy_delete_x12 = __unplugin_components_2$1;
      return openBlock(), createElementBlock(Fragment, null, [
        unref(versions) && unref(runningOldVersion) ? (openBlock(), createBlock(_sfc_main$Q, {
          key: 0,
          "data-cy": "cypress-update-popover"
        }, {
          heading: withCtx(() => [
            createVNode(_component_i_cy_cypress_logo_x16, { class: "h-[16px] text-indigo-500 w-[16px] icon-dark-indigo-500 icon-light-indigo-50" }),
            createBaseVNode("span", _hoisted_1$Q, [
              createTextVNode("v" + toDisplayString$1(unref(versions).current.version) + " ", 1),
              _hoisted_2$K,
              createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.upgradeText")), 1)
            ])
          ]),
          default: withCtx(() => [
            createVNode(_sfc_main$R, {
              class: "min-w-[278px] py-[8px] px-[16px]",
              "data-cy": "update-hint"
            }, {
              suffix: withCtx(() => [
                createBaseVNode("span", _hoisted_6$8, [
                  createBaseVNode("span", _hoisted_7$6, toDisplayString$1(unref(t2)("topNav.latest")), 1)
                ])
              ]),
              default: withCtx(() => [
                createBaseVNode("div", _hoisted_3$B, [
                  createVNode(_sfc_main$1x, {
                    href: changelogLink(unref(versions).latest.version),
                    class: "text-indigo-500",
                    "data-cy": "latest-version"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(versions).latest.version), 1)
                    ]),
                    _: 1
                  }, 8, ["href"]),
                  _hoisted_4$n,
                  createBaseVNode("span", _hoisted_5$d, toDisplayString$1(unref(t2)("topNav.released")) + " " + toDisplayString$1(unref(versions).latest.released), 1)
                ])
              ]),
              _: 1
            }),
            createVNode(_sfc_main$R, { class: "py-[8px] px-[16px] pb-[16px]" }, {
              default: withCtx(() => [
                createBaseVNode("p", _hoisted_8$4, toDisplayString$1(unref(t2)("topNav.runningOldVersion")), 1),
                createVNode(_sfc_main$1t, {
                  class: "!w-full",
                  onClick: _cache[0] || (_cache[0] = ($event) => showUpdateModal.value = true)
                }, {
                  default: withCtx(() => [
                    createTextVNode(" Update to " + toDisplayString$1(unref(versions).latest.version), 1)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            createVNode(_sfc_main$R, {
              class: "bg-orange-50 py-[8px] px-[16px]",
              "data-cy": "current-hint"
            }, {
              suffix: withCtx(() => [
                createBaseVNode("span", _hoisted_12$4, [
                  createBaseVNode("span", _hoisted_13$3, toDisplayString$1(unref(t2)("topNav.installed")), 1)
                ])
              ]),
              default: withCtx(() => [
                createBaseVNode("div", _hoisted_9$4, [
                  createVNode(_sfc_main$1x, {
                    href: changelogLink(unref(versions).current.version),
                    class: "font-medium text-amber-800",
                    "data-cy": "current-version"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(versions).current.version), 1)
                    ]),
                    _: 1
                  }, 8, ["href"]),
                  _hoisted_10$4,
                  createBaseVNode("span", _hoisted_11$4, toDisplayString$1(unref(t2)("topNav.released")) + " " + toDisplayString$1(unref(versions).current.released), 1)
                ])
              ]),
              _: 1
            }),
            createVNode(_sfc_main$R, { class: "text-center p-[16px] text-indigo-600" }, {
              default: withCtx(() => [
                createVNode(_sfc_main$1x, {
                  href: "https://on.cypress.io/changelog",
                  class: "border-rounded border-gray-100 border w-full py-[8px] text-[12px] block whitespace-nowrap hover:border-gray-200 hover:no-underline"
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(t2)("topNav.seeAllReleases")), 1)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })
          ]),
          _: 1
        })) : unref(versions) ? (openBlock(), createBlock(_sfc_main$1x, {
          key: 1,
          href: changelogLink(unref(versions).current.version),
          class: "flex font-medium outline-transparent text-gray-600 gap-[8px] items-center group hocus:text-indigo-500 hocus:outline-0",
          "use-default-hocus": false,
          "data-cy": "top-nav-cypress-version-current-link"
        }, {
          default: withCtx(() => [
            createVNode(_component_i_cy_cypress_logo_x16, { class: "h-[16px] w-[16px] group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50 icon-dark-gray-500 icon-light-gray-100" }),
            createBaseVNode("span", null, " v" + toDisplayString$1(unref(versions).current.version), 1)
          ]),
          _: 1
        }, 8, ["href"])) : createCommentVNode("", true),
        ((_b3 = (_a3 = props.gql) == null ? void 0 : _a3.currentProject) == null ? void 0 : _b3.activeBrowser) && __props.showBrowsers ? (openBlock(), createBlock(_sfc_main$Q, { key: 2 }, {
          heading: withCtx(({ open }) => {
            var _a4, _b4, _c3, _d3, _e, _f, _g, _h, _i, _j;
            return [
              ((_c3 = (_b4 = (_a4 = props.gql) == null ? void 0 : _a4.currentProject) == null ? void 0 : _b4.activeBrowser) == null ? void 0 : _c3.displayName) ? (openBlock(), createElementBlock("img", {
                key: 0,
                class: normalizeClass(["w-[16px] filter group-hocus:grayscale-0", open ? "grayscale-0" : "grayscale"]),
                "data-cy": "top-nav-active-browser-icon",
                alt: (_f = (_e = (_d3 = props.gql) == null ? void 0 : _d3.currentProject) == null ? void 0 : _e.activeBrowser) == null ? void 0 : _f.displayName,
                src: unref(allBrowsersIcons)[props.gql.currentProject.activeBrowser.displayName] || unref(allBrowsersIcons).generic
              }, null, 10, _hoisted_14$2)) : createCommentVNode("", true),
              createBaseVNode("span", _hoisted_15$2, toDisplayString$1((_h = (_g = props.gql.currentProject) == null ? void 0 : _g.activeBrowser) == null ? void 0 : _h.displayName) + " " + toDisplayString$1((_j = (_i = props.gql.currentProject) == null ? void 0 : _i.activeBrowser) == null ? void 0 : _j.majorVersion), 1)
            ];
          }),
          default: withCtx(() => [
            createVNode(_sfc_main$L, {
              gql: props.gql.currentProject
            }, null, 8, ["gql"])
          ]),
          _: 1
        })) : createCommentVNode("", true),
        createVNode(_sfc_main$Q, {
          ref_key: "promptsEl",
          ref: promptsEl,
          variant: "panel",
          role: "region",
          "aria-live": "polite",
          "force-open-state": props.forceOpenDocs,
          onClearForceOpen: _cache[3] || (_cache[3] = ($event) => emit2("clearForceOpen"))
        }, {
          heading: withCtx(({ open }) => [
            createVNode(_component_i_cy_life_ring_x16, {
              class: normalizeClass(["h-[16px] w-[16px] group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50", open || props.forceOpenDocs ? "icon-dark-indigo-500 icon-light-indigo-50" : "icon-dark-gray-500 icon-light-gray-100"])
            }, null, 8, ["class"]),
            createBaseVNode("span", {
              class: normalizeClass(["font-medium", { "text-indigo-600": open }])
            }, toDisplayString$1(unref(t2)("topNav.docsMenu.docsHeading")), 3)
          ]),
          default: withCtx(() => {
            var _a4;
            return [
              docsMenuVariant.value === "main" ? (openBlock(), createElementBlock("div", _hoisted_16$2, [
                createVNode(_sfc_main$O, {
                  "current-project-exists": !!((_a4 = props.gql) == null ? void 0 : _a4.currentProject),
                  onSetDocsContent: _cache[1] || (_cache[1] = ($event) => docsMenuVariant.value = $event)
                }, null, 8, ["current-project-exists"])
              ])) : (openBlock(), createElementBlock("div", {
                key: 1,
                ref_key: "promptsEl",
                ref: promptsEl,
                class: "w-[484px]"
              }, [
                createBaseVNode("div", _hoisted_17$2, [
                  createTextVNode(toDisplayString$1(unref(t2)(`topNav.docsMenu.prompts.${docsMenuVariant.value}.title`)) + " ", 1),
                  createBaseVNode("button", {
                    "aria-label": "Close",
                    class: "border-transparent rounded-full border p-[5px] top-[15px] right-[20px] absolute hocus-default hover:border-indigo-300",
                    onClick: _cache[2] || (_cache[2] = ($event) => docsMenuVariant.value = "main")
                  }, [
                    createVNode(_component_i_cy_delete_x12, { class: "h-[12px] w-[12px] icon-dark-gray-400" })
                  ])
                ]),
                createVNode(_sfc_main$P, {
                  type: docsMenuVariant.value,
                  automatic: props.forceOpenDocs
                }, null, 8, ["type", "automatic"])
              ], 512))
            ];
          }),
          _: 1
        }, 8, ["force-open-state"]),
        _ctx.$slots["login-title"] ? (openBlock(), createBlock(_sfc_main$Q, {
          key: 3,
          variant: "panel"
        }, {
          heading: withCtx(() => [
            renderSlot(_ctx.$slots, "login-title")
          ]),
          default: withCtx(() => [
            renderSlot(_ctx.$slots, "login-panel")
          ]),
          _: 3
        })) : createCommentVNode("", true),
        unref(versions) ? (openBlock(), createBlock(_sfc_main$N, {
          key: 4,
          show: showUpdateModal.value,
          "installed-version": unref(versions).current.version,
          "latest-version": unref(versions).latest.version,
          "project-name": (_d2 = (_c2 = props.gql) == null ? void 0 : _c2.currentProject) == null ? void 0 : _d2.title,
          "install-command": unref(installCommand),
          onClose: _cache[4] || (_cache[4] = ($event) => showUpdateModal.value = false)
        }, null, 8, ["show", "installed-version", "latest-version", "project-name", "install-command"])) : createCommentVNode("", true)
      ], 64);
    };
  }
});
var gravatarExports$1 = {};
var gravatar$2 = {
  get exports() {
    return gravatarExports$1;
  },
  set exports(v) {
    gravatarExports$1 = v;
  }
};
var gravatarExports = {};
var gravatar$1 = {
  get exports() {
    return gravatarExports;
  },
  set exports(v) {
    gravatarExports = v;
  }
};
var md5Exports = {};
var md5$1 = {
  get exports() {
    return md5Exports;
  },
  set exports(v) {
    md5Exports = v;
  }
};
(function(module) {
  (function($) {
    function safeAdd(x2, y2) {
      var lsw = (x2 & 65535) + (y2 & 65535);
      var msw = (x2 >> 16) + (y2 >> 16) + (lsw >> 16);
      return msw << 16 | lsw & 65535;
    }
    function bitRotateLeft(num2, cnt) {
      return num2 << cnt | num2 >>> 32 - cnt;
    }
    function md5cmn(q, a2, b2, x2, s2, t2) {
      return safeAdd(bitRotateLeft(safeAdd(safeAdd(a2, q), safeAdd(x2, t2)), s2), b2);
    }
    function md5ff(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(b2 & c2 | ~b2 & d2, a2, b2, x2, s2, t2);
    }
    function md5gg(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(b2 & d2 | c2 & ~d2, a2, b2, x2, s2, t2);
    }
    function md5hh(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(b2 ^ c2 ^ d2, a2, b2, x2, s2, t2);
    }
    function md5ii(a2, b2, c2, d2, x2, s2, t2) {
      return md5cmn(c2 ^ (b2 | ~d2), a2, b2, x2, s2, t2);
    }
    function binlMD5(x2, len) {
      x2[len >> 5] |= 128 << len % 32;
      x2[(len + 64 >>> 9 << 4) + 14] = len;
      var i2;
      var olda;
      var oldb;
      var oldc;
      var oldd;
      var a2 = 1732584193;
      var b2 = -271733879;
      var c2 = -1732584194;
      var d2 = 271733878;
      for (i2 = 0; i2 < x2.length; i2 += 16) {
        olda = a2;
        oldb = b2;
        oldc = c2;
        oldd = d2;
        a2 = md5ff(a2, b2, c2, d2, x2[i2], 7, -680876936);
        d2 = md5ff(d2, a2, b2, c2, x2[i2 + 1], 12, -389564586);
        c2 = md5ff(c2, d2, a2, b2, x2[i2 + 2], 17, 606105819);
        b2 = md5ff(b2, c2, d2, a2, x2[i2 + 3], 22, -1044525330);
        a2 = md5ff(a2, b2, c2, d2, x2[i2 + 4], 7, -176418897);
        d2 = md5ff(d2, a2, b2, c2, x2[i2 + 5], 12, 1200080426);
        c2 = md5ff(c2, d2, a2, b2, x2[i2 + 6], 17, -1473231341);
        b2 = md5ff(b2, c2, d2, a2, x2[i2 + 7], 22, -45705983);
        a2 = md5ff(a2, b2, c2, d2, x2[i2 + 8], 7, 1770035416);
        d2 = md5ff(d2, a2, b2, c2, x2[i2 + 9], 12, -1958414417);
        c2 = md5ff(c2, d2, a2, b2, x2[i2 + 10], 17, -42063);
        b2 = md5ff(b2, c2, d2, a2, x2[i2 + 11], 22, -1990404162);
        a2 = md5ff(a2, b2, c2, d2, x2[i2 + 12], 7, 1804603682);
        d2 = md5ff(d2, a2, b2, c2, x2[i2 + 13], 12, -40341101);
        c2 = md5ff(c2, d2, a2, b2, x2[i2 + 14], 17, -1502002290);
        b2 = md5ff(b2, c2, d2, a2, x2[i2 + 15], 22, 1236535329);
        a2 = md5gg(a2, b2, c2, d2, x2[i2 + 1], 5, -165796510);
        d2 = md5gg(d2, a2, b2, c2, x2[i2 + 6], 9, -1069501632);
        c2 = md5gg(c2, d2, a2, b2, x2[i2 + 11], 14, 643717713);
        b2 = md5gg(b2, c2, d2, a2, x2[i2], 20, -373897302);
        a2 = md5gg(a2, b2, c2, d2, x2[i2 + 5], 5, -701558691);
        d2 = md5gg(d2, a2, b2, c2, x2[i2 + 10], 9, 38016083);
        c2 = md5gg(c2, d2, a2, b2, x2[i2 + 15], 14, -660478335);
        b2 = md5gg(b2, c2, d2, a2, x2[i2 + 4], 20, -405537848);
        a2 = md5gg(a2, b2, c2, d2, x2[i2 + 9], 5, 568446438);
        d2 = md5gg(d2, a2, b2, c2, x2[i2 + 14], 9, -1019803690);
        c2 = md5gg(c2, d2, a2, b2, x2[i2 + 3], 14, -187363961);
        b2 = md5gg(b2, c2, d2, a2, x2[i2 + 8], 20, 1163531501);
        a2 = md5gg(a2, b2, c2, d2, x2[i2 + 13], 5, -1444681467);
        d2 = md5gg(d2, a2, b2, c2, x2[i2 + 2], 9, -51403784);
        c2 = md5gg(c2, d2, a2, b2, x2[i2 + 7], 14, 1735328473);
        b2 = md5gg(b2, c2, d2, a2, x2[i2 + 12], 20, -1926607734);
        a2 = md5hh(a2, b2, c2, d2, x2[i2 + 5], 4, -378558);
        d2 = md5hh(d2, a2, b2, c2, x2[i2 + 8], 11, -2022574463);
        c2 = md5hh(c2, d2, a2, b2, x2[i2 + 11], 16, 1839030562);
        b2 = md5hh(b2, c2, d2, a2, x2[i2 + 14], 23, -35309556);
        a2 = md5hh(a2, b2, c2, d2, x2[i2 + 1], 4, -1530992060);
        d2 = md5hh(d2, a2, b2, c2, x2[i2 + 4], 11, 1272893353);
        c2 = md5hh(c2, d2, a2, b2, x2[i2 + 7], 16, -155497632);
        b2 = md5hh(b2, c2, d2, a2, x2[i2 + 10], 23, -1094730640);
        a2 = md5hh(a2, b2, c2, d2, x2[i2 + 13], 4, 681279174);
        d2 = md5hh(d2, a2, b2, c2, x2[i2], 11, -358537222);
        c2 = md5hh(c2, d2, a2, b2, x2[i2 + 3], 16, -722521979);
        b2 = md5hh(b2, c2, d2, a2, x2[i2 + 6], 23, 76029189);
        a2 = md5hh(a2, b2, c2, d2, x2[i2 + 9], 4, -640364487);
        d2 = md5hh(d2, a2, b2, c2, x2[i2 + 12], 11, -421815835);
        c2 = md5hh(c2, d2, a2, b2, x2[i2 + 15], 16, 530742520);
        b2 = md5hh(b2, c2, d2, a2, x2[i2 + 2], 23, -995338651);
        a2 = md5ii(a2, b2, c2, d2, x2[i2], 6, -198630844);
        d2 = md5ii(d2, a2, b2, c2, x2[i2 + 7], 10, 1126891415);
        c2 = md5ii(c2, d2, a2, b2, x2[i2 + 14], 15, -1416354905);
        b2 = md5ii(b2, c2, d2, a2, x2[i2 + 5], 21, -57434055);
        a2 = md5ii(a2, b2, c2, d2, x2[i2 + 12], 6, 1700485571);
        d2 = md5ii(d2, a2, b2, c2, x2[i2 + 3], 10, -1894986606);
        c2 = md5ii(c2, d2, a2, b2, x2[i2 + 10], 15, -1051523);
        b2 = md5ii(b2, c2, d2, a2, x2[i2 + 1], 21, -2054922799);
        a2 = md5ii(a2, b2, c2, d2, x2[i2 + 8], 6, 1873313359);
        d2 = md5ii(d2, a2, b2, c2, x2[i2 + 15], 10, -30611744);
        c2 = md5ii(c2, d2, a2, b2, x2[i2 + 6], 15, -1560198380);
        b2 = md5ii(b2, c2, d2, a2, x2[i2 + 13], 21, 1309151649);
        a2 = md5ii(a2, b2, c2, d2, x2[i2 + 4], 6, -145523070);
        d2 = md5ii(d2, a2, b2, c2, x2[i2 + 11], 10, -1120210379);
        c2 = md5ii(c2, d2, a2, b2, x2[i2 + 2], 15, 718787259);
        b2 = md5ii(b2, c2, d2, a2, x2[i2 + 9], 21, -343485551);
        a2 = safeAdd(a2, olda);
        b2 = safeAdd(b2, oldb);
        c2 = safeAdd(c2, oldc);
        d2 = safeAdd(d2, oldd);
      }
      return [a2, b2, c2, d2];
    }
    function binl2rstr(input) {
      var i2;
      var output = "";
      var length32 = input.length * 32;
      for (i2 = 0; i2 < length32; i2 += 8) {
        output += String.fromCharCode(input[i2 >> 5] >>> i2 % 32 & 255);
      }
      return output;
    }
    function rstr2binl(input) {
      var i2;
      var output = [];
      output[(input.length >> 2) - 1] = void 0;
      for (i2 = 0; i2 < output.length; i2 += 1) {
        output[i2] = 0;
      }
      var length8 = input.length * 8;
      for (i2 = 0; i2 < length8; i2 += 8) {
        output[i2 >> 5] |= (input.charCodeAt(i2 / 8) & 255) << i2 % 32;
      }
      return output;
    }
    function rstrMD5(s2) {
      return binl2rstr(binlMD5(rstr2binl(s2), s2.length * 8));
    }
    function rstrHMACMD5(key, data) {
      var i2;
      var bkey = rstr2binl(key);
      var ipad = [];
      var opad = [];
      var hash2;
      ipad[15] = opad[15] = void 0;
      if (bkey.length > 16) {
        bkey = binlMD5(bkey, key.length * 8);
      }
      for (i2 = 0; i2 < 16; i2 += 1) {
        ipad[i2] = bkey[i2] ^ 909522486;
        opad[i2] = bkey[i2] ^ 1549556828;
      }
      hash2 = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
      return binl2rstr(binlMD5(opad.concat(hash2), 512 + 128));
    }
    function rstr2hex(input) {
      var hexTab = "0123456789abcdef";
      var output = "";
      var x2;
      var i2;
      for (i2 = 0; i2 < input.length; i2 += 1) {
        x2 = input.charCodeAt(i2);
        output += hexTab.charAt(x2 >>> 4 & 15) + hexTab.charAt(x2 & 15);
      }
      return output;
    }
    function str2rstrUTF8(input) {
      return unescape(encodeURIComponent(input));
    }
    function rawMD5(s2) {
      return rstrMD5(str2rstrUTF8(s2));
    }
    function hexMD5(s2) {
      return rstr2hex(rawMD5(s2));
    }
    function rawHMACMD5(k, d2) {
      return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d2));
    }
    function hexHMACMD5(k, d2) {
      return rstr2hex(rawHMACMD5(k, d2));
    }
    function md52(string, key, raw) {
      if (!key) {
        if (!raw) {
          return hexMD5(string);
        }
        return rawMD5(string);
      }
      if (!raw) {
        return hexHMACMD5(key, string);
      }
      return rawHMACMD5(key, string);
    }
    if (module.exports) {
      module.exports = md52;
    } else {
      $.md5 = md52;
    }
  })(commonjsGlobal$1);
})(md5$1);
var querystring$1 = {};
function hasOwnProperty$1(obj, prop2) {
  return Object.prototype.hasOwnProperty.call(obj, prop2);
}
var decode$1 = function(qs, sep, eq, options2) {
  sep = sep || "&";
  eq = eq || "=";
  var obj = {};
  if (typeof qs !== "string" || qs.length === 0) {
    return obj;
  }
  var regexp = /\+/g;
  qs = qs.split(sep);
  var maxKeys = 1e3;
  if (options2 && typeof options2.maxKeys === "number") {
    maxKeys = options2.maxKeys;
  }
  var len = qs.length;
  if (maxKeys > 0 && len > maxKeys) {
    len = maxKeys;
  }
  for (var i2 = 0; i2 < len; ++i2) {
    var x2 = qs[i2].replace(regexp, "%20"), idx = x2.indexOf(eq), kstr, vstr, k, v;
    if (idx >= 0) {
      kstr = x2.substr(0, idx);
      vstr = x2.substr(idx + 1);
    } else {
      kstr = x2;
      vstr = "";
    }
    k = decodeURIComponent(kstr);
    v = decodeURIComponent(vstr);
    if (!hasOwnProperty$1(obj, k)) {
      obj[k] = v;
    } else if (Array.isArray(obj[k])) {
      obj[k].push(v);
    } else {
      obj[k] = [obj[k], v];
    }
  }
  return obj;
};
var stringifyPrimitive = function(v) {
  switch (typeof v) {
    case "string":
      return v;
    case "boolean":
      return v ? "true" : "false";
    case "number":
      return isFinite(v) ? v : "";
    default:
      return "";
  }
};
var encode$1 = function(obj, sep, eq, name2) {
  sep = sep || "&";
  eq = eq || "=";
  if (obj === null) {
    obj = void 0;
  }
  if (typeof obj === "object") {
    return Object.keys(obj).map(function(k) {
      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
      if (Array.isArray(obj[k])) {
        return obj[k].map(function(v) {
          return ks + encodeURIComponent(stringifyPrimitive(v));
        }).join(sep);
      } else {
        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
      }
    }).join(sep);
  }
  if (!name2)
    return "";
  return encodeURIComponent(stringifyPrimitive(name2)) + eq + encodeURIComponent(stringifyPrimitive(obj));
};
querystring$1.decode = querystring$1.parse = decode$1;
querystring$1.encode = querystring$1.stringify = encode$1;
var md5 = md5Exports, querystring = querystring$1, MD5_REGEX = /^[0-9a-f]{32}$/;
function params(options2) {
  var params2 = {}, removing = { protocol: 1, format: 1 };
  for (var key in options2) {
    if (!removing[key])
      params2[key] = options2[key];
  }
  return params2;
}
function proto(options2, protocol) {
  if (!options2)
    return;
  if (typeof options2.protocol === "boolean")
    return options2.protocol;
  return options2.protocol === "http" ? false : options2.protocol === "https" ? true : void 0;
}
function getHash(email) {
  email = typeof email === "string" ? email.trim().toLowerCase() : "unspecified";
  return email.match(MD5_REGEX) ? email : md5(email);
}
function getQueryString(options2) {
  var queryData = querystring.stringify(params(options2));
  return queryData && "?" + queryData || "";
}
gravatar$1.exports = {
  url: function(email, options2, protocol) {
    var baseURL = "//www.gravatar.com/avatar/";
    if (options2 && options2.cdn) {
      baseURL = options2.cdn + "/avatar/";
      delete options2.cdn;
    } else {
      if (options2 && options2.protocol)
        protocol = proto(options2);
      if (typeof protocol !== "undefined") {
        baseURL = protocol ? "https://s.gravatar.com/avatar/" : "http://www.gravatar.com/avatar/";
      }
    }
    var query2 = getQueryString(options2);
    return baseURL + getHash(email) + query2;
  },
  profile_url: function(email, options2, https) {
    var format3 = options2 != void 0 && options2.format != void 0 ? String(options2.format) : "json";
    var baseURL;
    if (options2 && options2.cdn) {
      baseURL = options2.cdn + "/";
      delete options2.cdn;
    } else {
      if (options2 && options2.protocol)
        https = proto(options2);
      var baseURL = https && "https://secure.gravatar.com/" || "http://www.gravatar.com/";
    }
    var query2 = getQueryString(options2);
    return baseURL + getHash(email) + "." + format3 + query2;
  }
};
(function(module) {
  module.exports = gravatarExports;
})(gravatar$2);
const gravatar = /* @__PURE__ */ getDefaultExportFromCjs$1(gravatarExports$1);
const _sfc_main$J = /* @__PURE__ */ defineComponent({
  __name: "UserAvatar",
  props: {
    email: null
  },
  setup(__props) {
    const props = __props;
    const gravatarUrl = computed(() => {
      let opts = { size: "48", default: "mm" };
      if (!props.email) {
        opts.forcedefault = "y";
      }
      return gravatar.url(props.email, opts, true);
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        style: normalizeStyle(`background-image: url(${unref(gravatarUrl)});`),
        class: "bg-cover border-[1px] border-gray-200 rounded-[50px] overflow-hidden",
        "data-cy": "user-avatar"
      }, null, 4);
    };
  }
});
const _hoisted_1$P = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$J = /* @__PURE__ */ createBaseVNode("path", {
  d: "M13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3H11M11 3L9 5M11 3L9 1",
  stroke: "currentColor",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-light"
}, null, -1);
const _hoisted_3$A = [
  _hoisted_2$J
];
function render$i(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$P, _hoisted_3$A);
}
const __unplugin_components_0$6 = { name: "cy-action-restart_x16", render: render$i };
const _hoisted_1$O = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$I = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10 3C9.44771 3 9 3.44772 9 4C9 4.55228 9.44771 5 10 5V3ZM10 11C9.44771 11 9 11.4477 9 12C9 12.5523 9.44771 13 10 13V11ZM6 5C6.55228 5 7 4.55228 7 4C7 3.44772 6.55228 3 6 3V5ZM6 13C6.55228 13 7 12.5523 7 12C7 11.4477 6.55228 11 6 11V13ZM5 7C4.44772 7 4 7.44772 4 8C4 8.55228 4.44772 9 5 9V7ZM11 9C11.5523 9 12 8.55228 12 8C12 7.44772 11.5523 7 11 7V9ZM10 5H11V3H10V5ZM11 11H10V13H11V11ZM5 5H6V3H5V5ZM6 11H5V13H6V11ZM5 9H11V7H5V9ZM2 8C2 6.34315 3.34315 5 5 5V3C2.23858 3 0 5.23858 0 8H2ZM0 8C0 10.7614 2.23858 13 5 13V11C3.34315 11 2 9.65685 2 8H0ZM14 8C14 9.65685 12.6569 11 11 11V13C13.7614 13 16 10.7614 16 8H14ZM16 8C16 5.23858 13.7614 3 11 3V5C12.6569 5 14 6.34315 14 8H16Z",
  fill: "currentColor",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$z = [
  _hoisted_2$I
];
function render$h(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$O, _hoisted_3$z);
}
const ConnectIcon = { name: "cy-chain-link_x16", render: render$h };
/*!
  * pinia v2.0.0-rc.14
  * (c) 2021 Eduardo San Martin Morote
  * @license MIT
  */
let activePinia;
const setActivePinia = (pinia) => activePinia = pinia;
const piniaSymbol = (
  /* istanbul ignore next */
  Symbol()
);
function isPlainObject(o2) {
  return o2 && typeof o2 === "object" && Object.prototype.toString.call(o2) === "[object Object]" && typeof o2.toJSON !== "function";
}
var MutationType;
(function(MutationType2) {
  MutationType2["direct"] = "direct";
  MutationType2["patchObject"] = "patch object";
  MutationType2["patchFunction"] = "patch function";
})(MutationType || (MutationType = {}));
function createPinia$1() {
  const scope = effectScope(true);
  const state = scope.run(() => ref({}));
  let _p = [];
  const toBeInstalled = [];
  const pinia = markRaw({
    install(app2) {
      setActivePinia(pinia);
      {
        pinia._a = app2;
        app2.provide(piniaSymbol, pinia);
        app2.config.globalProperties.$pinia = pinia;
        toBeInstalled.forEach((plugin) => _p.push(plugin));
      }
    },
    use(plugin) {
      if (!this._a && !isVue2) {
        toBeInstalled.push(plugin);
      } else {
        _p.push(plugin);
      }
      return this;
    },
    _p,
    // it's actually undefined here
    // @ts-expect-error
    _a: null,
    _e: scope,
    _s: /* @__PURE__ */ new Map(),
    state
  });
  return pinia;
}
function addSubscription(subscriptions, callback, detached) {
  subscriptions.push(callback);
  const removeSubscription = () => {
    const idx = subscriptions.indexOf(callback);
    if (idx > -1) {
      subscriptions.splice(idx, 1);
    }
  };
  if (!detached && getCurrentInstance()) {
    onUnmounted(removeSubscription);
  }
  return removeSubscription;
}
function triggerSubscriptions(subscriptions, ...args) {
  subscriptions.forEach((callback) => {
    callback(...args);
  });
}
function innerPatch(target2, patchToApply) {
  for (const key in patchToApply) {
    const subPatch = patchToApply[key];
    const targetValue = target2[key];
    if (isPlainObject(targetValue) && isPlainObject(subPatch) && !isRef(subPatch) && !isReactive(subPatch)) {
      target2[key] = innerPatch(targetValue, subPatch);
    } else {
      target2[key] = subPatch;
    }
  }
  return target2;
}
const { assign } = Object;
function isComputed(o2) {
  return !!(isRef(o2) && o2.effect);
}
function createOptionsStore(id2, options2, pinia, hot) {
  const { state, actions, getters } = options2;
  const initialState = pinia.state.value[id2];
  let store;
  function setup24() {
    if (!initialState && true) {
      {
        pinia.state.value[id2] = state ? state() : {};
      }
    }
    const localState = toRefs(pinia.state.value[id2]);
    return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name2) => {
      computedGetters[name2] = markRaw(computed(() => {
        setActivePinia(pinia);
        const store2 = pinia._s.get(id2);
        return getters[name2].call(store2, store2);
      }));
      return computedGetters;
    }, {}));
  }
  store = createSetupStore(id2, setup24, options2, pinia);
  store.$reset = function $reset() {
    const newState = state ? state() : {};
    this.$patch(($state) => {
      assign($state, newState);
    });
  };
  return store;
}
const noop = () => {
};
function createSetupStore($id, setup24, options2 = {}, pinia, hot) {
  let scope;
  const buildState = options2.state;
  const optionsForPlugin = {
    actions: {},
    ...options2
  };
  const $subscribeOptions = {
    deep: true
    // flush: 'post',
  };
  let isListening;
  let subscriptions = markRaw([]);
  let actionSubscriptions = markRaw([]);
  let debuggerEvents;
  const initialState = pinia.state.value[$id];
  if (!buildState && !initialState && true) {
    {
      pinia.state.value[$id] = {};
    }
  }
  ref({});
  function $patch(partialStateOrMutator) {
    let subscriptionMutation;
    isListening = false;
    if (typeof partialStateOrMutator === "function") {
      partialStateOrMutator(pinia.state.value[$id]);
      subscriptionMutation = {
        type: MutationType.patchFunction,
        storeId: $id,
        events: debuggerEvents
      };
    } else {
      innerPatch(pinia.state.value[$id], partialStateOrMutator);
      subscriptionMutation = {
        type: MutationType.patchObject,
        payload: partialStateOrMutator,
        storeId: $id,
        events: debuggerEvents
      };
    }
    isListening = true;
    triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);
  }
  const $reset = noop;
  function $dispose() {
    scope.stop();
    subscriptions = [];
    actionSubscriptions = [];
    pinia._s.delete($id);
  }
  function wrapAction(name2, action) {
    return function() {
      setActivePinia(pinia);
      const args = Array.from(arguments);
      let afterCallback = noop;
      let onErrorCallback = noop;
      function after(callback) {
        afterCallback = callback;
      }
      function onError(callback) {
        onErrorCallback = callback;
      }
      triggerSubscriptions(actionSubscriptions, {
        args,
        name: name2,
        store,
        after,
        onError
      });
      let ret;
      try {
        ret = action.apply(this && this.$id === $id ? this : store, args);
      } catch (error2) {
        if (onErrorCallback(error2) !== false) {
          throw error2;
        }
      }
      if (ret instanceof Promise) {
        return ret.then((value) => {
          const newRet2 = afterCallback(value);
          return newRet2 === void 0 ? value : newRet2;
        }).catch((error2) => {
          if (onErrorCallback(error2) !== false) {
            return Promise.reject(error2);
          }
        });
      }
      const newRet = afterCallback(ret);
      return newRet === void 0 ? ret : newRet;
    };
  }
  const partialStore = {
    _p: pinia,
    // _s: scope,
    $id,
    $onAction: addSubscription.bind(null, actionSubscriptions),
    $patch,
    $reset,
    $subscribe(callback, options3 = {}) {
      const _removeSubscription = addSubscription(
        subscriptions,
        callback,
        // @ts-expect-error: until the deprecation is removed
        options3.detached
      );
      const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state, oldState) => {
        if (isListening) {
          callback({
            storeId: $id,
            type: MutationType.direct,
            events: debuggerEvents
          }, state);
        }
      }, assign({}, $subscribeOptions, options3)));
      const removeSubscription = () => {
        stopWatcher();
        _removeSubscription();
      };
      return removeSubscription;
    },
    $dispose
  };
  const store = reactive(assign(
    {},
    partialStore
    // must be added later
    // setupStore
  ));
  pinia._s.set($id, store);
  const setupStore = pinia._e.run(() => {
    scope = effectScope();
    return scope.run(() => setup24());
  });
  for (const key in setupStore) {
    const prop2 = setupStore[key];
    if (isRef(prop2) && !isComputed(prop2) || isReactive(prop2)) {
      if (!buildState) {
        if (initialState) {
          if (isRef(prop2)) {
            prop2.value = initialState[key];
          } else {
            innerPatch(prop2, initialState[key]);
          }
        }
        {
          pinia.state.value[$id][key] = prop2;
        }
      }
    } else if (typeof prop2 === "function") {
      const actionValue = wrapAction(key, prop2);
      {
        setupStore[key] = actionValue;
      }
      optionsForPlugin.actions[key] = prop2;
    } else
      ;
  }
  {
    assign(store, setupStore);
  }
  Object.defineProperty(store, "$state", {
    get: () => pinia.state.value[$id],
    set: (state) => {
      $patch(($state) => {
        assign($state, state);
      });
    }
  });
  pinia._p.forEach((extender) => {
    {
      assign(store, scope.run(() => extender({
        store,
        app: pinia._a,
        pinia,
        // @ts-expect-error
        options: optionsForPlugin
      })));
    }
  });
  if (initialState && buildState) {
    (options2.hydrate || innerPatch)(store, initialState);
  }
  isListening = true;
  return store;
}
function defineStore(idOrOptions, setup24, setupOptions) {
  let id2;
  let options2;
  const isSetupStore = typeof setup24 === "function";
  if (typeof idOrOptions === "string") {
    id2 = idOrOptions;
    options2 = isSetupStore ? setupOptions : setup24;
  } else {
    options2 = idOrOptions;
    id2 = idOrOptions.id;
  }
  function useStore(pinia, hot) {
    const currentInstance2 = getCurrentInstance();
    pinia = // in test mode, ignore the argument provided as we can always retrieve a
    // pinia instance with getActivePinia()
    pinia || currentInstance2 && inject(piniaSymbol);
    if (pinia)
      setActivePinia(pinia);
    pinia = activePinia;
    if (!pinia._s.has(id2)) {
      if (isSetupStore) {
        createSetupStore(id2, setup24, options2, pinia);
      } else {
        createOptionsStore(id2, options2, pinia);
      }
    }
    const store = pinia._s.get(id2);
    return store;
  }
  useStore.$id = id2;
  return useStore;
}
const useUserProjectStatusStore = defineStore({
  id: "userProjectStatus",
  state() {
    return {
      hasInitiallyLoaded: false,
      utmMedium: "",
      utmContent: void 0,
      isLoginConnectOpen: false,
      cypressFirstOpened: void 0,
      userData: void 0,
      testingType: void 0,
      projectId: void 0,
      user: {
        isLoggedIn: false,
        loginError: false,
        isOrganizationLoaded: false,
        isMemberOfOrganization: false
      },
      project: {
        isProjectConnected: false,
        isConfigLoaded: false,
        hasNoRecordedRuns: false,
        hasNonExampleSpec: false,
        isNotAuthorized: false,
        isNotFound: false,
        isCTConfigured: false,
        hasDetectedCtFramework: false,
        isUsingGit: false
      },
      promptsShown: {},
      bannersState: {},
      _latestBannerShownTimeForTesting: void 0
    };
  },
  actions: {
    setHasInitiallyLoaded() {
      this.hasInitiallyLoaded = true;
    },
    openLoginConnectModal({ utmMedium, utmContent }) {
      this.isLoginConnectOpen = true;
      this.utmMedium = utmMedium;
      this.utmContent = utmContent;
    },
    closeLoginConnectModal() {
      this.isLoginConnectOpen = false;
      this.utmMedium = "";
      this.utmContent = void 0;
    },
    setUserFlag(name2, newVal) {
      this.user[name2] = newVal;
    },
    setProjectFlag(name2, newVal) {
      this.project[name2] = newVal;
    },
    setLoginError(error2) {
      this.user.loginError = error2;
    },
    setUserData(userData) {
      this.userData = userData;
    },
    setPromptShown(slug, timestamp) {
      this.promptsShown[slug] = timestamp;
    },
    setCypressFirstOpened(timestamp) {
      this.cypressFirstOpened = timestamp;
    },
    setTestingType(testingType) {
      this.testingType = testingType;
    },
    setProjectId(projectId) {
      this.projectId = projectId;
    },
    setBannersState(banners) {
      this.bannersState = banners;
    },
    setLatestBannerShownTime(timestamp) {
      this._latestBannerShownTimeForTesting = timestamp;
    }
  },
  getters: {
    cloudStatus(state) {
      const { user, project } = state;
      switch (true) {
        case !user.isLoggedIn:
          return "isLoggedOut";
        case (user.isLoggedIn && user.isOrganizationLoaded && !user.isMemberOfOrganization):
          return "needsOrgConnect";
        case (user.isLoggedIn && user.isMemberOfOrganization && !project.isProjectConnected && project.isConfigLoaded):
          return "needsProjectConnect";
        case (user.isLoggedIn && user.isMemberOfOrganization && project.isProjectConnected && project.hasNoRecordedRuns && project.hasNonExampleSpec && project.isConfigLoaded):
          return "needsRecordedRun";
        default:
          return "allTasksCompleted";
      }
    },
    projectStatus(state) {
      const { project } = state;
      if (state.testingType === "e2e" && !project.isCTConfigured && project.hasDetectedCtFramework) {
        return "isComponentTestingCandidate";
      }
      return "allTasksCompleted";
    },
    cloudStatusMatches() {
      return (status) => this.cloudStatus === status;
    },
    projectStatusMatches() {
      return (status) => this.projectStatus === status;
    },
    latestBannerShownTime(state) {
      return state._latestBannerShownTimeForTesting;
    }
  }
});
const _hoisted_1$N = {
  key: 0,
  class: "flex gap-[16px]"
};
const _hoisted_2$H = { key: 1 };
const _hoisted_3$y = { key: 2 };
const _sfc_main$I = /* @__PURE__ */ defineComponent({
  __name: "Auth",
  props: {
    gql: null,
    showRetry: { type: Boolean },
    showLogout: { type: Boolean },
    utmMedium: null,
    utmContent: null
  },
  emits: ["close", "cancel"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const userProjectStatusStore = useUserProjectStatusStore();
    const { t: t2 } = useI18n();
    const isOnline = useOnline();
    gql`
fragment Auth on Query {
  ...SelectCloudProjectModal
  cloudViewer {
    id
    email
    fullName
    firstOrganization: organizations(first: 1) {
      nodes {
        id
      }
    }
  }
  authState {
    browserOpened
    name
    message
  }
  currentProject {
    id
    cloudProject {
      __typename
      ... on CloudProject {
        id
      }
    }
  }
}
`;
    gql`
mutation Auth_Logout {
  logout {
    ...Auth
  }
}
`;
    gql`
mutation Auth_Login ($utmSource: String!, $utmMedium: String!, $utmContent: String) {
  login (utmSource: $utmSource, utmContent: $utmContent, utmMedium: $utmMedium) {
    ...Auth
  }
}
`;
    gql`
mutation Auth_ResetAuthState {
  resetAuthState {
    ...Auth
  }
}
`;
    const login = useMutation(Auth_LoginDocument);
    const logout = useMutation(Auth_LogoutDocument);
    const reset = useMutation(Auth_ResetAuthStateDocument);
    const loginButtonRef = ref(_sfc_main$1t);
    const loginInitiated = ref(false);
    onMounted(() => {
      var _a2, _b2;
      (_b2 = (_a2 = loginButtonRef == null ? void 0 : loginButtonRef.value) == null ? void 0 : _a2.$el) == null ? void 0 : _b2.focus();
    });
    onBeforeUnmount(() => {
      if (loginInitiated.value) {
        reset.executeMutation({});
      }
    });
    const showConnectButton = computed(() => {
      return userProjectStatusStore.project.isConfigLoaded && userProjectStatusStore.cloudStatusMatches("needsProjectConnect");
    });
    const cloudViewer = computed(() => {
      return props.gql.cloudViewer;
    });
    const browserOpened = computed(() => {
      return props.gql.authState.browserOpened;
    });
    const loginMutationIsPending = computed(() => {
      return !cloudViewer.value && (loginInitiated.value || browserOpened.value);
    });
    const handleLoginOrContinue = async () => {
      if (userProjectStatusStore.user.isLoggedIn) {
        emit2("close");
        return;
      }
      loginInitiated.value = true;
      login.executeMutation({ utmMedium: props.utmMedium, utmContent: props.utmContent || null, utmSource: getUtmSource() });
    };
    const handleCancel = () => {
      emit2("cancel");
    };
    const handleLogout = () => {
      logout.executeMutation({});
    };
    const handleTryAgain = async () => {
      await reset.executeMutation({});
      login.executeMutation({ utmMedium: props.utmMedium, utmContent: props.utmContent || null, utmSource: getUtmSource() });
    };
    const buttonText = computed(() => {
      const strings = {
        login: t2("topNav.login.actionLogin"),
        connectProject: t2("runs.connect.modal.selectProject.connectProject"),
        continue: t2("topNav.login.actionContinue")
      };
      if (showConnectButton.value) {
        return strings.connectProject;
      }
      if (userProjectStatusStore.user.isLoggedIn) {
        return strings.continue;
      }
      return strings.login;
    });
    const buttonPrefixIcon = computed(() => {
      return showConnectButton.value ? ConnectIcon : void 0;
    });
    return (_ctx, _cache) => {
      const _component_i_cy_action_restart_x16 = __unplugin_components_0$6;
      const _component_i_cy_loading_x16 = __unplugin_components_0$l;
      return props.showRetry ? (openBlock(), createElementBlock("div", _hoisted_1$N, [
        createVNode(_sfc_main$1t, {
          size: "lg",
          onClick: handleTryAgain
        }, {
          prefix: withCtx(() => [
            createVNode(_component_i_cy_action_restart_x16, { class: "icon-light-white" })
          ]),
          default: withCtx(() => [
            createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.login.actionTryAgain")), 1)
          ]),
          _: 1
        }),
        createVNode(_sfc_main$1t, {
          variant: "outline",
          size: "lg",
          onClick: handleCancel
        }, {
          default: withCtx(() => [
            createTextVNode(toDisplayString$1(unref(t2)("topNav.login.actionCancel")), 1)
          ]),
          _: 1
        })
      ])) : props.showLogout ? (openBlock(), createElementBlock("div", _hoisted_2$H, [
        createBaseVNode("button", {
          class: "bg-white border-rounded outline-transparent border-gray-100 border w-full py-[8px] text-[14px] text-indigo-500 block whitespace-nowrap hocus:border-gray-200 hover:no-underline",
          onClick: handleLogout
        }, toDisplayString$1(unref(t2)("topNav.login.actionLogout")), 1)
      ])) : (openBlock(), createElementBlock("div", _hoisted_3$y, [
        unref(loginMutationIsPending) ? (openBlock(), createBlock(_sfc_main$1t, {
          key: 0,
          size: "lg",
          variant: "pending",
          "aria-live": "polite",
          disabled: true
        }, {
          prefix: withCtx(() => [
            createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
          ]),
          default: withCtx(() => [
            createTextVNode(" " + toDisplayString$1(unref(browserOpened) ? unref(t2)("topNav.login.actionWaiting") : unref(t2)("topNav.login.actionOpening")), 1)
          ]),
          _: 1
        })) : (openBlock(), createBlock(_sfc_main$1t, {
          key: 1,
          ref_key: "loginButtonRef",
          ref: loginButtonRef,
          size: "lg",
          variant: "primary",
          "aria-live": "polite",
          disabled: !unref(cloudViewer) && !unref(isOnline),
          "prefix-icon": unref(buttonPrefixIcon),
          onClick: handleLoginOrContinue
        }, {
          default: withCtx(() => [
            createTextVNode(toDisplayString$1(unref(buttonText)), 1)
          ]),
          _: 1
        }, 8, ["disabled", "prefix-icon"]))
      ]));
    };
  }
});
const units = {};
units.second = 1e3;
units.minute = units.second * 60;
units.hour = units.minute * 60;
units.day = units.hour * 24;
units.week = units.day * 7;
units.month = units.day * 30;
units.year = units.day * 365;
const languageMap = {
  one: 1,
  two: 2,
  three: 3,
  four: 4,
  five: 5,
  six: 6,
  seven: 7,
  eight: 8,
  nine: 9,
  ten: 10
};
const swapLanguageToDecimals = (time) => {
  const language = languageMap;
  const languageMapRegex = new RegExp("(" + Object.keys(language).join("|") + ")", "g");
  const matches2 = time.match(languageMapRegex);
  if (!matches2) {
    return time;
  }
  matches2.forEach((match3) => {
    const matchStr = language[match3] > 1 ? language[match3] : language[match3].toString().slice(1);
    time = time.replace(match3, matchStr);
  });
  return time;
};
const processUnits = (time) => {
  if (time.match(/(second|minute|hour|day|week|month|year)s?/) === null) {
    return void 0;
  }
  const num2 = parseFloat(time, 10) || 1;
  const unit = time.match(/(second|minute|hour|day|week|month|year)s?/)[1];
  return units[unit] * num2;
};
const humanInterval = (time) => {
  if (!time) {
    return time;
  }
  if (typeof time === "number") {
    return time;
  }
  time = swapLanguageToDecimals(time);
  time = time.replace(/(second|minute|hour|day|week|month|year)s?(?! ?(s )?and |s?$)/, "$1,");
  return time.split(/and|,/).reduce((sum2, group) => {
    return sum2 + (group ? processUnits(group) : 0);
  }, 0);
};
humanInterval.languageMap = languageMap;
var humanInterval_1 = humanInterval;
const _hoisted_1$M = {
  "data-cy": "header-bar-content",
  class: "bg-white border-b border-b-gray-100 h-[64px] py-[15px] px-6"
};
const _hoisted_2$G = { class: "flex h-full gap-[12px] items-center justify-between" };
const _hoisted_3$x = {
  key: 0,
  class: "whitespace-nowrap"
};
const _hoisted_4$m = {
  key: 1,
  class: "flex font-medium text-gray-700 items-center children:leading-[24px]"
};
const _hoisted_5$c = /* @__PURE__ */ createBaseVNode("img", {
  class: "h-[32px] mr-[18px] w-[32px]",
  src: _imports_0,
  alt: "cypress"
}, null, -1);
const _hoisted_6$7 = {
  key: 0,
  class: "inline-block"
};
const _hoisted_7$5 = ["role", "href", "ariaDisabled", "onClick"];
const _hoisted_8$3 = {
  key: 0,
  class: "mx-[2px] align-middle inline-block",
  "aria-hidden": "true"
};
const _hoisted_9$3 = { class: "inline-block" };
const _hoisted_10$3 = { class: "font-medium" };
const _hoisted_11$3 = { class: "font-normal max-w-[200px] text-gray-500 inline-block truncate align-top" };
const _hoisted_12$3 = {
  class: "mx-[2px] inline-block align-middle",
  "aria-hidden": "true"
};
const _hoisted_13$2 = { class: "inline-block" };
const _hoisted_14$1 = { class: "flex gap-6" };
const _hoisted_15$1 = { class: "sr-only" };
const _hoisted_16$1 = {
  class: "min-w-[248px]",
  "data-cy": "login-panel"
};
const _hoisted_17$1 = { class: "border-b flex border-b-gray-100 p-[16px]" };
const _hoisted_18$1 = { class: "text-gray-800" };
const _hoisted_19$1 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_20$1 = { class: "text-gray-600" };
const _hoisted_21$1 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
const _hoisted_22$1 = { class: "p-[16px]" };
const _hoisted_23$1 = { key: 0 };
const _hoisted_24$1 = { class: "font-medium whitespace-nowrap group-hocus:text-indigo-500" };
const _sfc_main$H = /* @__PURE__ */ defineComponent({
  __name: "HeaderBarContent",
  props: {
    gql: null,
    showBrowsers: { type: Boolean },
    pageName: null,
    allowAutomaticPromptOpen: { type: Boolean }
  },
  setup(__props) {
    const props = __props;
    const userProjectStatusStore = useUserProjectStatusStore();
    gql`
fragment HeaderBarContent_Auth on Query {
  cloudViewer {
    id
    fullName
    email
  }
  cachedUser {
    id
    fullName
    email
  }
}
`;
    gql`
subscription HeaderBarContent_authChange {
  authChange {
    ...Auth
    ...HeaderBarContent_Auth
  }
}
`;
    useSubscription({ query: HeaderBarContent_AuthChangeDocument });
    gql`
mutation GlobalPageHeader_clearCurrentProject {
  clearCurrentProject {
    baseError {
      id
      ...BaseError
    }
    warnings {
      id
    }
    currentProject {
      id
    }
    # This ensures the cache is updated with null after clearing project
    migration {
      configFileNameBefore
    }
  }
}
`;
    gql`
fragment HeaderBar_HeaderBarContent on Query {
  currentProject {
    id
    title
    config
    savedState
    currentTestingType
    branch
  }
  isGlobalMode
  ...TopNav
  ...Auth
  ...HeaderBarContent_Auth
}
`;
    const savedState = computed(() => {
      var _a2, _b2;
      return (_b2 = (_a2 = props.gql) == null ? void 0 : _a2.currentProject) == null ? void 0 : _b2.savedState;
    });
    const currentProject = computed(() => props.gql.currentProject);
    const cloudProjectId = computed(() => {
      var _a2, _b2, _c, _d;
      return (_d = (_c = (_b2 = (_a2 = props.gql) == null ? void 0 : _a2.currentProject) == null ? void 0 : _b2.config) == null ? void 0 : _c.find((item) => item.field === "projectId")) == null ? void 0 : _d.value;
    });
    const clearCurrentProjectMutation = useMutation(GlobalPageHeader_ClearCurrentProjectDocument);
    const clearCurrentProject = () => {
      if (currentProject.value) {
        clearCurrentProjectMutation.executeMutation({});
      }
    };
    const { t: t2 } = useI18n();
    const prompts = lodashExports.sortBy([
      {
        slug: "ci1",
        interval: humanInterval_1("4 days"),
        noProjectId: true
      },
      {
        slug: "orchestration1",
        noProjectId: true
      }
    ], "interval");
    const isForceOpenAllowed = ref(true);
    const isOpenDelayElapsed = ref(false);
    onMounted(() => {
      setTimeout(() => isOpenDelayElapsed.value = true, 2e3);
    });
    const isShowablePromptInSavedState = computed(() => {
      if (!isOpenDelayElapsed.value) {
        return false;
      }
      if (savedState.value) {
        for (const prompt of prompts) {
          if (shouldShowPrompt(prompt)) {
            return true;
          }
        }
      }
      return false;
    });
    function shouldShowPrompt(prompt) {
      var _a2, _b2, _c, _d, _e;
      if (props.allowAutomaticPromptOpen !== true) {
        return false;
      }
      const now = Date.now();
      const timeSinceOpened = now - (((_a2 = savedState.value) == null ? void 0 : _a2.firstOpened) ?? now);
      const allPromptShownTimes = Object.values(((_b2 = savedState.value) == null ? void 0 : _b2.promptsShown) ?? {});
      const bannersLastShown = Object.values(((_c = savedState.value) == null ? void 0 : _c.banners) ?? {}).map((banner) => typeof banner === "object" && (banner == null ? void 0 : banner.lastShown)).filter((val) => !!val);
      if ((_e = (_d = savedState.value) == null ? void 0 : _d.promptsShown) == null ? void 0 : _e[prompt.slug]) {
        return false;
      }
      if (allPromptShownTimes == null ? void 0 : allPromptShownTimes.find((time) => now - time < humanInterval_1("24 hours"))) {
        return false;
      }
      if (bannersLastShown.some((bannerLastShown) => now - bannerLastShown < humanInterval_1("24 hours"))) {
        return false;
      }
      if (!prompt.interval || timeSinceOpened < prompt.interval) {
        return false;
      }
      if (prompt.noProjectId && cloudProjectId.value) {
        return false;
      }
      return true;
    }
    return (_ctx, _cache) => {
      var _a2;
      const _component_i_cy_chevron_right_x16 = __unplugin_components_0$a;
      const _component_i_cy_profile_x16 = __unplugin_components_1$2;
      return openBlock(), createElementBlock("div", _hoisted_1$M, [
        createBaseVNode("div", _hoisted_2$G, [
          props.pageName ? (openBlock(), createElementBlock("div", _hoisted_3$x, toDisplayString$1(props.pageName), 1)) : (openBlock(), createElementBlock("div", _hoisted_4$m, [
            _hoisted_5$c,
            createBaseVNode("nav", null, [
              createBaseVNode("ol", null, [
                props.gql.isGlobalMode ? (openBlock(), createElementBlock("li", _hoisted_6$7, [
                  (openBlock(), createElementBlock("a", {
                    key: Boolean(unref(currentProject)).toString(),
                    class: normalizeClass(["font-medium", unref(currentProject) ? "text-indigo-500 hocus-link-default" : "text-gray-700"]),
                    role: unref(currentProject) ? void 0 : "link",
                    href: unref(currentProject) ? "select-project" : void 0,
                    ariaDisabled: !unref(currentProject),
                    onClick: withModifiers(clearCurrentProject, ["prevent"])
                  }, toDisplayString$1(unref(t2)("topNav.global.projects")), 11, _hoisted_7$5))
                ])) : createCommentVNode("", true),
                ((_a2 = unref(currentProject)) == null ? void 0 : _a2.title) ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                  props.gql.isGlobalMode ? (openBlock(), createElementBlock("li", _hoisted_8$3, [
                    createVNode(_component_i_cy_chevron_right_x16, { class: "icon-dark-gray-200" })
                  ])) : createCommentVNode("", true),
                  createBaseVNode("li", _hoisted_9$3, [
                    createBaseVNode("span", _hoisted_10$3, toDisplayString$1(unref(currentProject).title), 1),
                    unref(currentProject).branch ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                      createTextVNode(toDisplayString$1(" ") + " "),
                      createVNode(_sfc_main$M, {
                        placement: "bottom",
                        class: "inline-block"
                      }, {
                        popper: withCtx(() => [
                          createTextVNode(toDisplayString$1(unref(currentProject).branch), 1)
                        ]),
                        default: withCtx(() => [
                          createBaseVNode("span", _hoisted_11$3, " (" + toDisplayString$1(unref(currentProject).branch) + ") ", 1)
                        ]),
                        _: 1
                      })
                    ], 64)) : createCommentVNode("", true)
                  ]),
                  unref(currentProject).currentTestingType ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                    createBaseVNode("li", _hoisted_12$3, [
                      createVNode(_component_i_cy_chevron_right_x16, { class: "icon-dark-gray-200" })
                    ]),
                    createBaseVNode("li", _hoisted_13$2, toDisplayString$1(unref(t2)(`testingType.${unref(currentProject).currentTestingType}.name`)), 1)
                  ], 64)) : createCommentVNode("", true)
                ], 64)) : createCommentVNode("", true)
              ])
            ])
          ])),
          createBaseVNode("div", _hoisted_14$1, [
            createVNode(_sfc_main$K, {
              gql: props.gql,
              "show-browsers": props.showBrowsers,
              "force-open-docs": isForceOpenAllowed.value && unref(isShowablePromptInSavedState),
              onClearForceOpen: _cache[0] || (_cache[0] = ($event) => isForceOpenAllowed.value = false)
            }, createSlots({ _: 2 }, [
              unref(userProjectStatusStore).user.isLoggedIn ? {
                name: "login-title",
                fn: withCtx(() => {
                  var _a3;
                  return [
                    createVNode(_sfc_main$J, {
                      email: (_a3 = unref(userProjectStatusStore).userData) == null ? void 0 : _a3.email,
                      class: "h-[24px] w-[24px]",
                      "data-cy": "user-avatar-title"
                    }, null, 8, ["email"]),
                    createBaseVNode("span", _hoisted_15$1, toDisplayString$1(unref(t2)("topNav.login.profileMenuLabel")), 1)
                  ];
                }),
                key: "0"
              } : void 0,
              unref(userProjectStatusStore).userData ? {
                name: "login-panel",
                fn: withCtx(() => {
                  var _a3, _b2, _c;
                  return [
                    createBaseVNode("div", _hoisted_16$1, [
                      createBaseVNode("div", _hoisted_17$1, [
                        createVNode(_sfc_main$J, {
                          email: (_a3 = unref(userProjectStatusStore).userData) == null ? void 0 : _a3.email,
                          class: "h-[48px] mr-[16px] w-[48px]",
                          "data-cy": "user-avatar-panel"
                        }, null, 8, ["email"]),
                        createBaseVNode("div", null, [
                          createBaseVNode("span", _hoisted_18$1, toDisplayString$1((_b2 = unref(userProjectStatusStore).userData) == null ? void 0 : _b2.fullName), 1),
                          _hoisted_19$1,
                          createBaseVNode("span", _hoisted_20$1, toDisplayString$1((_c = unref(userProjectStatusStore).userData) == null ? void 0 : _c.email), 1),
                          _hoisted_21$1,
                          createVNode(_sfc_main$1x, { href: "https://on.cypress.io/dashboard/profile" }, {
                            default: withCtx(() => [
                              createTextVNode(" Profile Settings ")
                            ]),
                            _: 1
                          })
                        ])
                      ]),
                      createBaseVNode("div", _hoisted_22$1, [
                        createVNode(_sfc_main$I, {
                          gql: props.gql,
                          "show-logout": true,
                          "utm-medium": "Nav"
                        }, null, 8, ["gql"])
                      ])
                    ])
                  ];
                }),
                key: "1"
              } : void 0
            ]), 1032, ["gql", "show-browsers", "force-open-docs"]),
            !unref(userProjectStatusStore).user.isLoggedIn ? (openBlock(), createElementBlock("div", _hoisted_23$1, [
              createBaseVNode("button", {
                class: "flex text-gray-600 items-center group focus:outline-transparent",
                onClick: _cache[1] || (_cache[1] = ($event) => unref(userProjectStatusStore).openLoginConnectModal({ utmMedium: "Nav" }))
              }, [
                createVNode(_component_i_cy_profile_x16, { class: "h-[16px] mr-[8px] w-[16px] block icon-dark-gray-500 icon-light-gray-100 group-hocus:icon-dark-indigo-500 group-hocus:icon-light-indigo-50" }),
                createBaseVNode("span", _hoisted_24$1, toDisplayString$1(unref(t2)("topNav.login.actionLogin")), 1)
              ])
            ])) : createCommentVNode("", true)
          ])
        ])
      ]);
    };
  }
});
const _hoisted_1$L = { key: 0 };
const _sfc_main$G = /* @__PURE__ */ defineComponent({
  __name: "HeaderBar",
  props: {
    showBrowsers: { type: Boolean },
    pageName: { default: void 0 },
    allowAutomaticPromptOpen: { type: Boolean, default: false }
  },
  emits: ["connect-project"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    gql`
query HeaderBar_HeaderBarQuery {
  ...HeaderBar_HeaderBarContent
}
`;
    const query2 = useQuery({ query: HeaderBar_HeaderBarQueryDocument });
    return (_ctx, _cache) => {
      return unref(query2).data.value ? (openBlock(), createElementBlock("div", _hoisted_1$L, [
        createVNode(_sfc_main$H, {
          gql: unref(query2).data.value,
          "show-browsers": props.showBrowsers,
          "page-name": props.pageName,
          "allow-automatic-prompt-open": props.allowAutomaticPromptOpen,
          onConnectProject: _cache[0] || (_cache[0] = ($event) => emit2("connect-project"))
        }, null, 8, ["gql", "show-browsers", "page-name", "allow-automatic-prompt-open"]),
        renderSlot(_ctx.$slots, "banner")
      ])) : createCommentVNode("", true);
    };
  }
});
const Spinner_vue_vue_type_style_index_0_scoped_16f1736f_lang = "";
const _sfc_main$F = {};
const _withScopeId$1 = (n) => (pushScopeId("data-v-16f1736f"), n = n(), popScopeId(), n);
const _hoisted_1$K = {
  class: "flex top-0 right-0 bottom-0 left-0 absolute items-center justify-center",
  "data-cy": "loading-spinner"
};
const _hoisted_2$F = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createBaseVNode("p", {
  "aria-live": "assertive",
  role: "alert",
  class: "sr-only"
}, " Loading... ", -1));
const _hoisted_3$w = /* @__PURE__ */ createStaticVNode('<svg width="48" height="48" viewBox="0 0 48 48" fill="none" class="spinner" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-v-16f1736f><defs data-v-16f1736f><mask id="y_and_circle" data-v-16f1736f><path d="M37.3061 16.0737L32.658 27.8353L27.979 16.0737H24.1514L30.7133 32.1268L26.0446 43.449L25.828 43.963C25.6788 44.3224 25.3533 44.5752 24.9776 44.6273C24.6537 44.6423 24.3277 44.65 24 44.65C23.9323 44.65 23.8647 44.6497 23.7972 44.649C12.4859 44.5402 3.35 35.337 3.35 24C3.35 12.5953 12.5953 3.35 24 3.35C35.4047 3.35 44.65 12.5953 44.65 24C44.65 32.5719 39.4271 39.924 31.99 43.0474L30.7772 45.9958C30.5987 46.43 30.3755 46.8377 30.1141 47.2142C40.4075 44.5105 48 35.1419 48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.1872 10.6357 47.8902 23.7972 47.9992C23.8247 47.9994 25.0196 47.9794 25.0177 47.9794C26.736 47.9075 28.2717 46.8308 28.9276 45.235L29.4694 43.9179L40.9228 16.0737H37.3061Z" fill="white" data-v-16f1736f></path></mask></defs><path d="M16.877 19.0494C18.819 19.0494 20.401 20.085 21.2139 21.8915L21.2782 22.0329L24.5398 20.9253L24.4704 20.7583C23.2074 17.6823 20.2981 15.7704 16.877 15.7704C14.4719 15.7704 12.5169 16.5414 10.9015 18.1243C9.29635 19.697 8.48353 21.6757 8.48353 24.0064C8.48353 26.3166 9.29635 28.285 10.9015 29.8577C12.5169 31.4407 14.4719 32.2116 16.877 32.2116C20.2981 32.2116 23.2074 30.2997 24.4704 27.2263L24.5398 27.0593L21.273 25.9491L21.2113 26.0956C20.4833 27.8713 18.8628 28.9326 16.877 28.9326C15.5239 28.9326 14.3818 28.4598 13.4763 27.5295C12.5606 26.5864 12.0976 25.4018 12.0976 24.009C12.0976 22.6059 12.5503 21.4444 13.4763 20.4576C14.3792 19.5222 15.5239 19.0494 16.877 19.0494Z" data-v-16f1736f></path><rect x="0" y="0" width="48" height="48" mask="url(#y_and_circle)" data-v-16f1736f></rect><circle cx="24" cy="24" r="23" stroke-width="5" mask="url(#y_and_circle)" data-v-16f1736f></circle></svg>', 1);
const _hoisted_4$l = [
  _hoisted_2$F,
  _hoisted_3$w
];
function _sfc_render$2(_ctx, _cache) {
  return openBlock(), createElementBlock("div", _hoisted_1$K, _hoisted_4$l);
}
const Spinner = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["render", _sfc_render$2], ["__scopeId", "data-v-16f1736f"]]);
const _sfc_main$E = /* @__PURE__ */ defineComponent({
  __name: "InlineCodeFragment",
  props: {
    variant: { default: "default" }
  },
  setup(__props) {
    const props = __props;
    const colorClasses = {
      default: "bg-purple-100 text-purple-600",
      error: "bg-red-200 text-red-700"
    };
    const color = computed(() => {
      return colorClasses[props.variant];
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("code", {
        class: normalizeClass(["rounded p-[2px]", unref(color)])
      }, [
        renderSlot(_ctx.$slots, "default")
      ], 2);
    };
  }
});
const _hoisted_1$J = { class: "cursor-default w-full px-[24px]" };
const _hoisted_2$E = { class: "mb-[12px] text-gray-900 text-[18px]" };
const _hoisted_3$v = { class: "mb-[10px] text-gray-600" };
const _hoisted_4$k = { class: "mb-[4px] ml-[12px] relative" };
const _hoisted_5$b = /* @__PURE__ */ createBaseVNode("div", { class: "border bg-jade-300 border-jade-400 rounded-[10px] h-[6px] top-[9px] left-[-11px] w-[6px] absolute block" }, null, -1);
const _hoisted_6$6 = { class: "mb-[4px] ml-[12px] relative" };
const _hoisted_7$4 = /* @__PURE__ */ createBaseVNode("div", { class: "border bg-jade-300 border-jade-400 rounded-[10px] h-[6px] top-[9px] left-[-11px] w-[6px] absolute block" }, null, -1);
const _hoisted_8$2 = { class: "mb-[4px] ml-[12px] relative" };
const _hoisted_9$2 = /* @__PURE__ */ createBaseVNode("div", { class: "border bg-jade-300 border-jade-400 rounded-[10px] h-[6px] top-[9px] left-[-11px] w-[6px] absolute block" }, null, -1);
const _hoisted_10$2 = /* @__PURE__ */ createBaseVNode("h3", { class: "mb-[8px] text-gray-900" }, " Code Example ", -1);
const _sfc_main$D = /* @__PURE__ */ defineComponent({
  __name: "CompareTestingCard",
  props: {
    title: null,
    code: { default: "" },
    listItems: null,
    codeFragment: null
  },
  setup(__props) {
    const props = __props;
    const localCode = ref(props.code);
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$J, [
        createBaseVNode("h3", _hoisted_2$E, toDisplayString$1(__props.title), 1),
        createBaseVNode("ul", _hoisted_3$v, [
          createBaseVNode("li", _hoisted_4$k, [
            _hoisted_5$b,
            createTextVNode(" " + toDisplayString$1(__props.listItems[0]) + " ", 1),
            createVNode(_sfc_main$E, { class: "text-[14px]" }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(__props.codeFragment), 1)
              ]),
              _: 1
            })
          ]),
          createBaseVNode("li", _hoisted_6$6, [
            _hoisted_7$4,
            createTextVNode(" " + toDisplayString$1(__props.listItems[1]), 1)
          ]),
          createBaseVNode("li", _hoisted_8$2, [
            _hoisted_9$2,
            createTextVNode(" " + toDisplayString$1(__props.listItems[2]), 1)
          ])
        ]),
        _hoisted_10$2,
        createVNode(ShikiHighlight, {
          class: "rounded border border-gray-100",
          code: localCode.value,
          lang: "javascript",
          "line-numbers": ""
        }, null, 8, ["code"])
      ]);
    };
  }
});
const _hoisted_1$I = { class: "grid-cols-2 sm:grid md:w-full" };
const _sfc_main$C = /* @__PURE__ */ defineComponent({
  __name: "CompareTestingTypes",
  setup(__props) {
    const { t: t2 } = useI18n();
    const ctCode = `
import BaseModal from './BaseModal'

it('closes when the X button is pressed', () => {
  cy.mount(<BaseModal />)
    .get('[aria-label=Close]')
    .click()
    .get('[data-testid=modal]')
    .should('not.exist')
})
`;
    const e2eCode = `
it('only shows a modal on first visit', () => {
  cy.visit('http://localhost:3000/')
    .get('[data-testid=modal]')
    .should('be.visible')
    .get('[aria-label=Close]')
    .click()

    // should not load a second time
    .reload()
    .get('[data-testid=modal]')
    .should('not.exist')
})
`;
    const e2eItems = [
      t2("welcomePage.compareTypes.content.e2eBullet1"),
      t2("welcomePage.compareTypes.content.e2eBullet2"),
      t2("welcomePage.compareTypes.content.e2eBullet3")
    ];
    const ctItems = [
      t2("welcomePage.compareTypes.content.ctBullet1"),
      t2("welcomePage.compareTypes.content.ctBullet2"),
      t2("welcomePage.compareTypes.content.ctBullet3")
    ];
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$I, [
        createVNode(_sfc_main$D, {
          "data-cy": "end-to-end-comparison",
          class: "border-r border-r-gray-100",
          title: unref(t2)("welcomePage.compareTypes.content.e2eTitle") + ":",
          code: e2eCode,
          "list-items": e2eItems,
          "code-fragment": "cy.visit()"
        }, null, 8, ["title"]),
        createVNode(_sfc_main$D, {
          "data-cy": "component-comparison",
          title: unref(t2)("welcomePage.compareTypes.content.componentTitle") + ":",
          code: ctCode,
          "list-items": ctItems,
          "code-fragment": "cy.mount()"
        }, null, 8, ["title"])
      ]);
    };
  }
});
const _hoisted_1$H = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$D = /* @__PURE__ */ createBaseVNode("path", {
  d: "M8 4V8L10 9.5M15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8Z",
  stroke: "currentColor",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$u = [
  _hoisted_2$D
];
function render$g(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$H, _hoisted_3$u);
}
const __unplugin_components_0$5 = { name: "cy-clock_x16", render: render$g };
const _hoisted_1$G = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$C = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z",
  fill: "#C2F1DE",
  class: "icon-light"
}, null, -1);
const _hoisted_3$t = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15.999 9L11 15L8.00098 12",
  stroke: "#00814D",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$j = [
  _hoisted_2$C,
  _hoisted_3$t
];
function render$f(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$G, _hoisted_4$j);
}
const __unplugin_components_0$4 = { name: "cy-status-pass-duotone_x24", render: render$f };
const _hoisted_1$F = { class: "rounded flex text-left w-full py-[14px] items-center" };
const _hoisted_2$B = { class: "flex h-[40px] px-[24px] items-center" };
const _hoisted_3$s = { class: "flex flex-row grow flex-wrap h-auto border-gray-100 border-l-[1px] px-[16px] gap-[4px] justify-between" };
const _hoisted_4$i = { class: "font-normal text-sm text-gray-700 select-none" };
const _hoisted_5$a = {
  key: 0,
  class: "flex items-center"
};
const _hoisted_6$5 = {
  key: 0,
  class: "flex px-[16px] items-center"
};
const _sfc_main$B = /* @__PURE__ */ defineComponent({
  __name: "ListRowHeader",
  props: {
    description: { default: void 0 },
    icon: { default: void 0 },
    gray: { type: Boolean, default: false },
    bigHeader: { type: Boolean, default: false }
  },
  setup(__props) {
    const slots = useSlots();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$F, [
        createBaseVNode("div", _hoisted_2$B, [
          renderSlot(_ctx.$slots, "icon", {}, () => [
            (openBlock(), createBlock(resolveDynamicComponent(__props.icon), { class: "h-[24px] w-[24px]" }))
          ])
        ]),
        createBaseVNode("div", _hoisted_3$s, [
          createBaseVNode("div", null, [
            createBaseVNode("h2", {
              class: normalizeClass(["text-indigo-500 whitespace-nowrap", { "text-[18px] leading-[24px]": __props.bigHeader }])
            }, [
              renderSlot(_ctx.$slots, "header")
            ], 2),
            createBaseVNode("p", _hoisted_4$i, [
              renderSlot(_ctx.$slots, "description", {}, () => [
                createBaseVNode("span", null, toDisplayString$1(__props.description), 1)
              ])
            ])
          ]),
          unref(slots).middle ? (openBlock(), createElementBlock("div", _hoisted_5$a, [
            renderSlot(_ctx.$slots, "middle")
          ])) : createCommentVNode("", true)
        ]),
        unref(slots).right ? (openBlock(), createElementBlock("div", _hoisted_6$5, [
          renderSlot(_ctx.$slots, "right")
        ])) : createCommentVNode("", true)
      ]);
    };
  }
});
const _hoisted_1$E = ["data-cy"];
const _hoisted_2$A = {
  key: 0,
  class: "border-b border-b-gray-100 p-[24px]"
};
const _hoisted_3$r = {
  key: 1,
  class: "p-[24px]"
};
const _sfc_main$A = /* @__PURE__ */ defineComponent({
  __name: "MigrationStep",
  props: {
    step: null,
    title: null,
    description: null
  },
  emits: ["toggle"],
  setup(__props, { emit: emit2 }) {
    gql`
fragment MigrationStep on MigrationStep {
  id
  name
  isCurrentStep
  isCompleted
  index
}`;
    return (_ctx, _cache) => {
      var _a2;
      const _component_i_cy_status_pass_duotone_x24 = __unplugin_components_0$4;
      return __props.step ? (openBlock(), createElementBlock("div", {
        key: 0,
        "data-cy": `migration-step ${(_a2 = __props.step) == null ? void 0 : _a2.name}`,
        class: "border rounded bg-light-50 border-gray-100 mb-4 w-full block"
      }, [
        createVNode(_sfc_main$B, {
          class: normalizeClass([{
            "rounded-b-none default-ring": __props.step.isCurrentStep,
            "bg-gray-50": !__props.step.isCurrentStep
          }, "m-[-1px] w-auto"]),
          description: __props.description,
          onClick: _cache[0] || (_cache[0] = ($event) => emit2("toggle"))
        }, {
          icon: withCtx(() => [
            __props.step.isCompleted ? (openBlock(), createBlock(_component_i_cy_status_pass_duotone_x24, {
              key: 0,
              class: "h-[24px] w-[24px]"
            })) : (openBlock(), createElementBlock("div", {
              key: 1,
              class: normalizeClass(["rounded-full h-[24px] text-center w-[24px]", __props.step.isCurrentStep ? "bg-indigo-100 text-indigo-600" : "bg-gray-100 text-gray-600"])
            }, toDisplayString$1(__props.step.index), 3))
          ]),
          header: withCtx(() => [
            createBaseVNode("span", {
              class: normalizeClass(["font-semibold inline-block align-top", __props.step.isCurrentStep ? "text-indigo-600" : "text-gray-600"])
            }, toDisplayString$1(__props.title), 3)
          ]),
          _: 1
        }, 8, ["class", "description"]),
        __props.step.isCurrentStep ? (openBlock(), createElementBlock("div", _hoisted_2$A, [
          renderSlot(_ctx.$slots, "default")
        ])) : createCommentVNode("", true),
        __props.step.isCurrentStep ? (openBlock(), createElementBlock("div", _hoisted_3$r, [
          renderSlot(_ctx.$slots, "footer")
        ])) : createCommentVNode("", true)
      ], 8, _hoisted_1$E)) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$z = /* @__PURE__ */ defineComponent({
  __name: "CodeTag",
  props: {
    bg: { type: Boolean }
  },
  setup(__props) {
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("code", {
        class: normalizeClass(["font-medium rounded-[4px] mx-[4px] px-[8px] pb-0 text-[14px] leading-[24px] inline-block", { "bg-gray-50": !__props.bg }])
      }, [
        renderSlot(_ctx.$slots, "default")
      ], 2);
    };
  }
});
const _hoisted_1$D = { class: "border rounded bg-gray-100 border-gray-100 mt-[16px] w-full grid gap-[1px] grid-rows-[48px,1fr] grid-cols-2 overflow-hidden" };
const _hoisted_2$z = { class: "flex font-semibold bg-gray-50 px-[16px] text-gray-800 items-center" };
const _hoisted_3$q = { class: "flex font-semibold bg-gray-50 px-[16px] text-gray-800 items-center" };
const _hoisted_4$h = {
  class: "bg-white",
  "data-cy": "migrate-before"
};
const _hoisted_5$9 = {
  class: "bg-white",
  "data-cy": "migrate-after"
};
const _sfc_main$y = /* @__PURE__ */ defineComponent({
  __name: "BeforeAfter",
  setup(__props) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1$D, [
        createBaseVNode("div", _hoisted_2$z, [
          renderSlot(_ctx.$slots, "beforeHeader", {}, () => [
            createTextVNode(toDisplayString$1(unref(t2)("migration.before")), 1)
          ])
        ]),
        createBaseVNode("div", _hoisted_3$q, [
          renderSlot(_ctx.$slots, "afterHeader", {}, () => [
            createTextVNode(toDisplayString$1(unref(t2)("migration.after")), 1)
          ])
        ]),
        createBaseVNode("div", _hoisted_4$h, [
          renderSlot(_ctx.$slots, "before")
        ]),
        createBaseVNode("div", _hoisted_5$9, [
          renderSlot(_ctx.$slots, "after")
        ])
      ]);
    };
  }
});
const _hoisted_1$C = { class: "text-[14px] leading-[24px]" };
const _sfc_main$x = /* @__PURE__ */ defineComponent({
  __name: "HighlightedFile",
  props: {
    parts: null,
    highlightClass: null
  },
  setup(__props) {
    const props = __props;
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("code", _hoisted_1$C, [
        (openBlock(true), createElementBlock(Fragment, null, renderList(__props.parts, (part2, index2) => {
          return openBlock(), createElementBlock(Fragment, { key: index2 }, [
            part2.highlight ? (openBlock(), createElementBlock("span", {
              key: 0,
              class: normalizeClass(props.highlightClass)
            }, toDisplayString$1(part2.text), 3)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
              createTextVNode(toDisplayString$1(part2.text), 1)
            ], 64))
          ], 64);
        }), 128))
      ]);
    };
  }
});
const _hoisted_1$B = { class: "py-[4px]" };
const _sfc_main$w = /* @__PURE__ */ defineComponent({
  __name: "HighlightedFilesList",
  props: {
    files: null,
    highlightClass: { default: "text-gray-500" }
  },
  setup(__props) {
    return (_ctx, _cache) => {
      const _component_i_cy_document_text_x16 = __unplugin_components_1$3;
      return openBlock(), createElementBlock("div", _hoisted_1$B, [
        (openBlock(true), createElementBlock(Fragment, null, renderList(__props.files, (file, index2) => {
          return openBlock(), createElementBlock("div", {
            key: index2,
            class: normalizeClass(["flex border-t-gray-50 h-[40px] mx-[16px] items-center", { "border-t": index2 > 0 }])
          }, [
            createVNode(_component_i_cy_document_text_x16, { class: "h-[16px] mr-[8px] w-[16px] inline-block icon-dark-gray-400 icon-light-gray-50" }),
            createVNode(_sfc_main$x, {
              parts: file.parts,
              "highlight-class": __props.highlightClass
            }, null, 8, ["parts", "highlight-class"])
          ], 2);
        }), 128))
      ]);
    };
  }
});
const _sfc_main$v = {};
const _hoisted_1$A = { class: "list-disc pl-[24px] text-jade-400" };
function _sfc_render$1(_ctx, _cache) {
  return openBlock(), createElementBlock("ul", _hoisted_1$A, [
    renderSlot(_ctx.$slots, "default")
  ]);
}
const MigrationList = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["render", _sfc_render$1]]);
const _sfc_main$u = {};
const _hoisted_1$z = { class: "mb-[4px]" };
const _hoisted_2$y = { class: "text-gray-600" };
function _sfc_render(_ctx, _cache) {
  return openBlock(), createElementBlock("li", _hoisted_1$z, [
    createBaseVNode("span", _hoisted_2$y, [
      renderSlot(_ctx.$slots, "default")
    ])
  ]);
}
const MigrationListItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["render", _sfc_render]]);
const _hoisted_1$y = { class: "font-medium mb-[8px] text-gray-900 leading-[28px]" };
const _hoisted_2$x = /* @__PURE__ */ createBaseVNode("span", { class: "text-gray-500" }, " — ", -1);
const _sfc_main$t = /* @__PURE__ */ defineComponent({
  __name: "MigrationTitle",
  props: {
    title: null
  },
  setup(__props) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("h3", _hoisted_1$y, [
        createTextVNode(toDisplayString$1(__props.title), 1),
        _hoisted_2$x,
        createTextVNode(toDisplayString$1(unref(t2)("migration.heresWhy")), 1)
      ]);
    };
  }
});
const _hoisted_1$x = ["for"];
const _hoisted_2$w = { class: "flex text-[16px] leading-[24px] items-center" };
const _hoisted_3$p = ["name", "value", "checked", "onClick"];
const _hoisted_4$g = { class: "text-gray-800" };
const _hoisted_5$8 = { class: "text-gray-500" };
const _sfc_main$s = /* @__PURE__ */ defineComponent({
  __name: "Radio",
  props: {
    name: null,
    label: null,
    value: null,
    options: null
  },
  emits: ["update:value"],
  setup(__props, { emit: emits }) {
    const props = __props;
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createBaseVNode("label", {
          class: "mt-[24px] text-gray-800 block font-bold",
          for: props.name
        }, toDisplayString$1(props.label), 9, _hoisted_1$x),
        (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (opt) => {
          return openBlock(), createElementBlock("div", {
            key: opt.value,
            class: "mt-[8px]"
          }, [
            createBaseVNode("label", _hoisted_2$w, [
              createBaseVNode("input", {
                type: "radio",
                name: props.name,
                value: opt.value,
                class: "mr-[8px] radio hocus-default checked:bg-transparent checked:hocus:bg-transparent checked:border-indigo-500 checked:hocus:border-indigo-500",
                checked: props.value === opt.value,
                onClick: ($event) => emits("update:value", opt.value)
              }, null, 8, _hoisted_3$p),
              renderSlot(_ctx.$slots, "option", {
                option: opt,
                checked: props.value === opt.value
              }, () => [
                createBaseVNode("span", _hoisted_4$g, toDisplayString$1(opt.label), 1),
                createBaseVNode("span", _hoisted_5$8, " - " + toDisplayString$1(opt.description), 1)
              ], true)
            ])
          ]);
        }), 128))
      ], 64);
    };
  }
});
const Radio_vue_vue_type_style_index_0_scoped_8872dbd3_lang = "";
const Radio = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__scopeId", "data-v-8872dbd3"]]);
const _hoisted_1$w = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$v = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8ZM8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0ZM9 5C9 4.44772 8.55228 4 8 4C7.44772 4 7 4.44772 7 5V8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8V5ZM8 12C8.55228 12 9 11.5523 9 11C9 10.4477 8.55228 10 8 10C7.44772 10 7 10.4477 7 11C7 11.5523 7.44772 12 8 12Z",
  fill: "currentColor",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$o = [
  _hoisted_2$v
];
function render$e(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$w, _hoisted_3$o);
}
const WarningIcon$1 = { name: "cy-warning_x16", render: render$e };
const _hoisted_1$v = {
  key: 0,
  class: "text-jade-500 leading-7"
};
const _hoisted_2$u = {
  key: 1,
  class: "text-gray-800 leading-7"
};
const _hoisted_3$n = { class: "flex gap-[16px]" };
const _sfc_main$r = /* @__PURE__ */ defineComponent({
  __name: "OptOutModal",
  props: {
    hasCustomIntegrationFolder: { type: Boolean }
  },
  emits: ["save", "cancel"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const selectedValue = ref("rename");
    const options2 = [
      {
        label: "",
        value: "rename"
      },
      {
        label: "",
        value: props.hasCustomIntegrationFolder ? "skip" : "renameFolder"
      }
    ];
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createBlock(_sfc_main$Y, {
        "model-value": true,
        title: unref(t2)("migration.renameAuto.modal.title"),
        "no-help": true,
        "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => emit2("cancel"))
      }, {
        footer: withCtx(() => [
          createBaseVNode("div", _hoisted_3$n, [
            createVNode(_sfc_main$1t, {
              onClick: _cache[1] || (_cache[1] = ($event) => emit2("save", selectedValue.value))
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.modal.buttonSave")), 1)
              ]),
              _: 1
            }),
            createVNode(_sfc_main$1t, {
              variant: "outline",
              onClick: _cache[2] || (_cache[2] = ($event) => emit2("cancel"))
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.modal.buttonCancel")), 1)
              ]),
              _: 1
            })
          ])
        ]),
        default: withCtx(() => [
          createVNode(_sfc_main$1i, {
            status: "warning",
            title: unref(t2)("migration.renameAuto.modal.warning"),
            icon: unref(WarningIcon$1),
            "icon-classes": "icon-dark-orange-400"
          }, null, 8, ["title", "icon"]),
          createVNode(_sfc_main$t, {
            title: unref(t2)("migration.renameAuto.title"),
            class: "mt-[24px]"
          }, null, 8, ["title"]),
          createVNode(MigrationList, null, {
            default: withCtx(() => [
              createVNode(MigrationListItem, null, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.modal.line1")), 1)
                ]),
                _: 1
              }),
              createVNode(MigrationListItem, null, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.modal.line2")) + " ", 1),
                  createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                    default: withCtx(() => [
                      createTextVNode(" [filename].cy.[ext] ")
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(MigrationListItem, null, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.modal.line3")), 1)
                ]),
                _: 1
              }),
              createVNode(MigrationListItem, null, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.modal.line4")) + " ", 1),
                  createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                    default: withCtx(() => [
                      createTextVNode(" [filename].cy.[ext] ")
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(MigrationListItem, null, {
                default: withCtx(() => [
                  createVNode(_component_i18n_t, {
                    scope: "global",
                    keypath: "migration.renameAuto.modal.line5"
                  }, {
                    default: withCtx(() => [
                      createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" [filename].cy.[ext] ")
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              createVNode(MigrationListItem, null, {
                default: withCtx(() => [
                  createVNode(_component_i18n_t, {
                    scope: "global",
                    keypath: "migration.renameAuto.modal.line6"
                  }, {
                    default: withCtx(() => [
                      createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" [filename].cy.[ext] ")
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          createVNode(Radio, {
            value: selectedValue.value,
            "onUpdate:value": _cache[0] || (_cache[0] = ($event) => selectedValue.value = $event),
            options: options2,
            name: "skipRename",
            label: unref(t2)("migration.renameAuto.modal.label")
          }, {
            option: withCtx(({ option, checked }) => [
              option.value === "rename" ? (openBlock(), createElementBlock("span", _hoisted_1$v, [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.renameAuto.modal.option1"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "ml-0 text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" [filename].cy.[ext] ")
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ])) : (openBlock(), createElementBlock("span", _hoisted_2$u, [
                createTextVNode(toDisplayString$1(props.hasCustomIntegrationFolder ? unref(t2)("migration.renameAuto.modal.option2") : unref(t2)("migration.renameAuto.modal.option3")) + " ", 1),
                checked ? (openBlock(), createBlock(_component_i18n_t, {
                  key: 0,
                  scope: "global",
                  keypath: "migration.renameAuto.modal.optOutAdditional"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" specPattern ")
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })) : createCommentVNode("", true)
              ]))
            ]),
            _: 1
          }, 8, ["value", "label"])
        ]),
        _: 1
      }, 8, ["title"]);
    };
  }
});
const _hoisted_1$u = { class: "text-[16px] leading-[24px]" };
const _hoisted_2$t = /* @__PURE__ */ createBaseVNode("span", { class: "m-[8px] text-gray-100" }, "——", -1);
const _sfc_main$q = /* @__PURE__ */ defineComponent({
  __name: "RenameSpecsAuto",
  props: {
    gql: null
  },
  emits: ["selectOption"],
  setup(__props, { emit: emits }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment RenameSpecsAuto on Migration {
  shouldMigratePreExtension
  hasCustomIntegrationFolder
  specFiles {
    before {
      id
      parts {
        id
        text
        highlight
        group
      }
    }

    after {
      id
      parts {
        id
        text
        highlight
        group
      }
    }
  }
}`;
    const showOptOutModal = ref(false);
    const selectOption = ref();
    function applySkipResult(val) {
      selectOption.value = val;
      emits("selectOption", selectOption.value);
    }
    const specFiles = computed(() => {
      if (selectOption.value !== "renameFolder") {
        return props.gql.specFiles;
      }
      return _$1.cloneDeep(props.gql.specFiles).map((specFile) => {
        const spec = specFile;
        spec.before.parts = spec.before.parts.map((spec2) => {
          if (spec2.group === "preExtension") {
            spec2.highlight = false;
          }
          return spec2;
        });
        const beforePreExtension = _$1.find(spec.before.parts, { group: "preExtension" });
        spec.after.parts = spec.after.parts.map((spec2) => {
          if (spec2.group === "preExtension") {
            spec2.highlight = false;
            if (beforePreExtension) {
              spec2.text = beforePreExtension.text;
            }
          }
          return spec2;
        });
        return spec;
      });
    });
    return (_ctx, _cache) => {
      const _component_i_cy_arrow_right_x16 = __unplugin_components_0$n;
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createElementBlock("div", _hoisted_1$u, [
        createVNode(_sfc_main$t, {
          title: unref(t2)("migration.renameAuto.title")
        }, null, 8, ["title"]),
        createVNode(MigrationList, null, {
          default: withCtx(() => [
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.changedSpecFolder")) + " ", 1),
                createVNode(_sfc_main$z, { class: "text-red-500" }, {
                  default: withCtx(() => [
                    createTextVNode(" cypress/integration ")
                  ]),
                  _: 1
                }),
                createVNode(_component_i_cy_arrow_right_x16, { class: "h-[16px] w-[16px] inline-block icon-dark-gray-300" }),
                createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                  default: withCtx(() => [
                    createTextVNode(" cypress/e2e ")
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            props.gql.shouldMigratePreExtension ? (openBlock(), createBlock(MigrationListItem, { key: 0 }, {
              default: withCtx(() => [
                selectOption.value === "skip" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.optedOutMessage")), 1)
                ], 64)) : selectOption.value === "renameFolder" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.folderRenameMessage")), 1)
                ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.renameAuto.changedSpecExt")) + " ", 1),
                  createVNode(_sfc_main$z, { class: "text-red-500" }, {
                    default: withCtx(() => [
                      createTextVNode(" [filename].spec.[ext] ")
                    ]),
                    _: 1
                  }),
                  createVNode(_component_i_cy_arrow_right_x16, { class: "h-[16px] w-[16px] inline-block icon-dark-gray-300" }),
                  createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                    default: withCtx(() => [
                      createTextVNode(" [filename].cy.[ext] ")
                    ]),
                    _: 1
                  })
                ], 64)),
                _hoisted_2$t,
                createBaseVNode("a", {
                  class: "cursor-pointer text-indigo-500 hover:underline",
                  onClick: _cache[0] || (_cache[0] = ($event) => showOptOutModal.value = true)
                }, toDisplayString$1(unref(t2)("migration.renameAuto.changeButton")), 1)
              ]),
              _: 1
            })) : createCommentVNode("", true),
            !selectOption.value && props.gql.shouldMigratePreExtension ? (openBlock(), createBlock(MigrationListItem, { key: 1 }, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.renameAuto.changedSpecPatternExplain"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" [filename].cy.[ext] ")
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })) : createCommentVNode("", true)
          ]),
          _: 1
        }),
        selectOption.value !== "skip" ? (openBlock(), createBlock(_sfc_main$y, { key: 0 }, {
          before: withCtx(() => [
            createVNode(_sfc_main$w, {
              files: unref(specFiles).map((x2) => x2.before),
              "highlight-class": "text-red-500"
            }, null, 8, ["files"])
          ]),
          after: withCtx(() => [
            createVNode(_sfc_main$w, {
              files: unref(specFiles).map((x2) => x2.after),
              "highlight-class": "text-jade-500"
            }, null, 8, ["files"])
          ]),
          _: 1
        })) : createCommentVNode("", true),
        showOptOutModal.value ? (openBlock(), createBlock(_sfc_main$r, {
          key: 1,
          "has-custom-integration-folder": props.gql.hasCustomIntegrationFolder,
          onSave: _cache[1] || (_cache[1] = (val) => {
            showOptOutModal.value = false;
            applySkipResult(val);
          }),
          onCancel: _cache[2] || (_cache[2] = ($event) => showOptOutModal.value = false)
        }, null, 8, ["has-custom-integration-folder"])) : createCommentVNode("", true)
      ]);
    };
  }
});
const _hoisted_1$t = { class: "text-[16px] leading-[24px]" };
const _hoisted_2$s = { class: "border rounded border-gray-100 mt-[16px]" };
const _hoisted_3$m = { class: "py-[4px]" };
const _hoisted_4$f = {
  class: "text-gray-600 line-through pl-[8px]",
  "data-cy": "moved"
};
const _sfc_main$p = /* @__PURE__ */ defineComponent({
  __name: "RenameSpecsManual",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
fragment RenameSpecsManual on Migration {
  manualFiles {
    id
    completed
    files {
      id
      relative
      moved
    }
  }
}`;
    gql`
mutation RenameSpecsManual_CloseWatcher {
  migrateCloseManualRenameWatcher
}
`;
    const closeWatcherMutation = useMutation(RenameSpecsManual_CloseWatcherDocument);
    onUnmounted(() => {
      closeWatcherMutation.executeMutation({});
    });
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      var _a2;
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_status_pass_duotone_x24 = __unplugin_components_0$4;
      const _component_i_cy_document_text_x16 = __unplugin_components_1$3;
      return openBlock(), createElementBlock("div", _hoisted_1$t, [
        createVNode(_sfc_main$t, {
          title: unref(t2)("migration.renameManual.title")
        }, null, 8, ["title"]),
        createVNode(MigrationList, null, {
          default: withCtx(() => [
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.renameManual.componentFolderRemoved"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-red-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" componentFolder ")
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.renameManual.addedSpecPattern"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" specPattern ")
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.renameManual.cannotAuto"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" src/component/button/button.cy.js ")
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.renameManual.ifSkipNote"
                })
              ]),
              _: 1
            })
          ]),
          _: 1
        }),
        createBaseVNode("div", _hoisted_2$s, [
          createBaseVNode("div", _hoisted_3$m, [
            (openBlock(true), createElementBlock(Fragment, null, renderList((_a2 = props.gql.manualFiles) == null ? void 0 : _a2.files, (file, index2) => {
              return openBlock(), createElementBlock("div", {
                key: index2,
                class: normalizeClass(["flex border-t-gray-50 h-[40px] mx-[16px] items-center", { "border-t": index2 > 0 }])
              }, [
                file.moved ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                  createVNode(_component_i_cy_status_pass_duotone_x24, { class: "h-[16px] w-[16px]" }),
                  createBaseVNode("span", _hoisted_4$f, toDisplayString$1(file.relative), 1)
                ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                  createVNode(_component_i_cy_document_text_x16, { class: "h-[16px] mr-[8px] w-[16px] inline-block icon-dark-gray-400 icon-light-gray-50" }),
                  createBaseVNode("span", null, toDisplayString$1(file.relative), 1)
                ], 64))
              ], 2);
            }), 128))
          ])
        ])
      ]);
    };
  }
});
const _sfc_main$o = /* @__PURE__ */ defineComponent({
  __name: "RenameSupport",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment RenameSupport on Migration {
  supportFiles {
    before {
      id
      parts {
        id
        text
        highlight
      }
    }
    after {
      id
      parts {
        id
        text
        highlight
      }
    }
  }
}`;
    return (_ctx, _cache) => {
      const _component_i_cy_arrow_right_x16 = __unplugin_components_0$n;
      return openBlock(), createElementBlock(Fragment, null, [
        createVNode(_sfc_main$t, {
          title: unref(t2)("migration.renameSupport.title")
        }, null, 8, ["title"]),
        createVNode(MigrationList, null, {
          default: withCtx(() => [
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.renameSupport.serveDifferentTypes")), 1)
              ]),
              _: 1
            }),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.renameSupport.changedSupportFile")) + " ", 1),
                createVNode(_sfc_main$z, { class: "text-red-500" }, {
                  default: withCtx(() => [
                    createTextVNode("cypress/support/index.js")
                  ]),
                  _: 1
                }),
                createVNode(_component_i_cy_arrow_right_x16, { class: "h-[16px] w-[16px] inline-block icon-dark-gray-300" }),
                createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                  default: withCtx(() => [
                    createTextVNode("cypress/support/e2e.js")
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })
          ]),
          _: 1
        }),
        createVNode(_sfc_main$y, null, {
          before: withCtx(() => {
            var _a2;
            return [
              createVNode(_sfc_main$w, {
                files: ((_a2 = props.gql.supportFiles) == null ? void 0 : _a2.before) ? [props.gql.supportFiles.before] : [],
                "highlight-class": "text-red-500"
              }, null, 8, ["files"])
            ];
          }),
          after: withCtx(() => {
            var _a2;
            return [
              createVNode(_sfc_main$w, {
                files: ((_a2 = props.gql.supportFiles) == null ? void 0 : _a2.after) ? [props.gql.supportFiles.after] : [],
                "highlight-class": "text-jade-500"
              }, null, 8, ["files"])
            ];
          }),
          _: 1
        })
      ], 64);
    };
  }
});
const _hoisted_1$s = { class: "text-[16px] leading-[24px]" };
const _hoisted_2$r = { class: "mr-[8px]" };
const _hoisted_3$l = { class: "mr-[8px]" };
const _sfc_main$n = /* @__PURE__ */ defineComponent({
  __name: "ConvertConfigFile",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment ConvertConfigFile on Migration {
  configFileNameBefore
  configFileNameAfter
  configBeforeCode
  configAfterCode
  hasCustomIntegrationFolder
  hasCustomIntegrationTestFiles
  hasCustomComponentFolder
  hasCustomComponentTestFiles
  isUsingTypeScript
}`;
    const gqlCodeBeforeLines = computed(() => props.gql.configBeforeCode.split("\n").length);
    const gqlCodeAfterLines = computed(() => props.gql.configAfterCode.split("\n").length);
    const gqlCodeMaxLines = computed(() => Math.max(gqlCodeBeforeLines.value, gqlCodeAfterLines.value));
    const codeBefore = computed(() => {
      return props.gql.configBeforeCode + Array(gqlCodeMaxLines.value - gqlCodeBeforeLines.value).fill("\n").join("");
    });
    const codeAfter = computed(() => {
      return props.gql.configAfterCode + Array(gqlCodeMaxLines.value - gqlCodeAfterLines.value).fill("\n").join("");
    });
    const fileName = computed(() => props.gql.isUsingTypeScript ? "cypress.config.ts" : "cypress.config.js");
    return (_ctx, _cache) => {
      const _component_i_cy_arrow_right_x16 = __unplugin_components_0$n;
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createElementBlock("div", _hoisted_1$s, [
        createVNode(_sfc_main$t, {
          title: unref(t2)("migration.configFile.title")
        }, null, 8, ["title"]),
        createVNode(MigrationList, null, {
          default: withCtx(() => [
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.configFile.changedDefault")) + " ", 1),
                createVNode(_sfc_main$z, { class: "text-red-500" }, {
                  default: withCtx(() => [
                    createTextVNode(" cypress.json ")
                  ]),
                  _: 1
                }),
                createVNode(_component_i_cy_arrow_right_x16, { class: "inline-block h-[16px] w-[16px] icon-dark-gray-300" }),
                createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(fileName)), 1)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            }),
            props.gql.hasCustomIntegrationFolder || props.gql.hasCustomIntegrationTestFiles ? (openBlock(), createBlock(MigrationListItem, { key: 0 }, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.configFile.customOptions"
                }, {
                  specPattern: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" e2e.specPattern ")
                      ]),
                      _: 1
                    })
                  ]),
                  options: withCtx(() => [
                    props.gql.hasCustomIntegrationFolder && props.gql.hasCustomIntegrationTestFiles ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" integrationFolder ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" and "),
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" testFiles ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" options ")
                    ], 64)) : props.gql.hasCustomIntegrationFolder ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" integrationFolder ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" option ")
                    ], 64)) : props.gql.hasCustomIntegrationTestFiles ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" testFiles ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" option ")
                    ], 64)) : createCommentVNode("", true)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })) : createCommentVNode("", true),
            props.gql.hasCustomComponentFolder || props.gql.hasCustomComponentTestFiles ? (openBlock(), createBlock(MigrationListItem, { key: 1 }, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.configFile.customOptions"
                }, {
                  specPattern: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(" component.specPattern ")
                      ]),
                      _: 1
                    })
                  ]),
                  options: withCtx(() => [
                    props.gql.hasCustomComponentFolder && props.gql.hasCustomComponentTestFiles ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" componentFolder ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" and "),
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" testFiles ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" options ")
                    ], 64)) : props.gql.hasCustomComponentFolder ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" componentFolder ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" option ")
                    ], 64)) : props.gql.hasCustomComponentTestFiles ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
                      createVNode(_sfc_main$z, { class: "text-red-500" }, {
                        default: withCtx(() => [
                          createTextVNode(" testFiles ")
                        ]),
                        _: 1
                      }),
                      createTextVNode(" option ")
                    ], 64)) : createCommentVNode("", true)
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })) : createCommentVNode("", true),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createVNode(_component_i18n_t, {
                  scope: "global",
                  keypath: "migration.configFile.willConvert"
                }, {
                  jsonFile: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-red-500" }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString$1(props.gql.configFileNameBefore), 1)
                      ]),
                      _: 1
                    })
                  ]),
                  jsFile: withCtx(() => [
                    createVNode(_sfc_main$z, { class: "text-jade-500" }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString$1(props.gql.configFileNameAfter), 1)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                })
              ]),
              _: 1
            })
          ]),
          _: 1
        }),
        createVNode(_sfc_main$y, null, {
          beforeHeader: withCtx(() => [
            createBaseVNode("span", _hoisted_2$r, toDisplayString$1(unref(t2)("migration.before")), 1),
            createVNode(_sfc_main$z, {
              bg: "",
              class: "text-red-600 bg-red-100"
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(props.gql.configFileNameBefore), 1)
              ]),
              _: 1
            })
          ]),
          afterHeader: withCtx(() => [
            createBaseVNode("span", _hoisted_3$l, toDisplayString$1(unref(t2)("migration.after")), 1),
            createVNode(_sfc_main$z, {
              bg: "",
              class: "bg-jade-100 text-jade-600"
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(props.gql.configFileNameAfter), 1)
              ]),
              _: 1
            })
          ]),
          before: withCtx(() => [
            createVNode(ShikiHighlight, {
              code: unref(codeBefore),
              lang: "json",
              "line-numbers": "",
              "skip-trim": ""
            }, null, 8, ["code"])
          ]),
          after: withCtx(() => [
            createVNode(ShikiHighlight, {
              code: unref(codeAfter),
              lang: "js",
              "line-numbers": "",
              "skip-trim": ""
            }, null, 8, ["code"])
          ]),
          _: 1
        })
      ]);
    };
  }
});
const ConvertConfigFile_vue_vue_type_style_index_0_scoped_cb1af325_lang = "";
const ConvertConfigFile = /* @__PURE__ */ _export_sfc$1(_sfc_main$n, [["__scopeId", "data-v-cb1af325"]]);
const _sfc_main$m = /* @__PURE__ */ defineComponent({
  __name: "SetupComponentTesting",
  setup(__props) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createVNode(_sfc_main$t, {
          title: unref(t2)("migration.setupComponent.title")
        }, null, 8, ["title"]),
        createVNode(MigrationList, null, {
          default: withCtx(() => [
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.setupComponent.line1")), 1)
              ]),
              _: 1
            }),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.setupComponent.line2")), 1)
              ]),
              _: 1
            }),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.setupComponent.line3")), 1)
              ]),
              _: 1
            }),
            createVNode(MigrationListItem, null, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("migration.setupComponent.line4")), 1)
              ]),
              _: 1
            })
          ]),
          _: 1
        })
      ], 64);
    };
  }
});
const _hoisted_1$r = { class: "pb-[8px]" };
const _hoisted_2$q = { class: "font-medium text-center text-[32px] leading-snug text-body-gray-900" };
const _hoisted_3$k = { class: "mt-2 text-center text-body-gray-600 text-lg" };
const _hoisted_4$e = { class: "flex mb-[24px] text-sm text-gray-700 justify-center items-center" };
const _hoisted_5$7 = /* @__PURE__ */ createBaseVNode("span", { "data-cy": "migration-wizard" }, null, -1);
const _hoisted_6$4 = { class: "flex gap-[16px]" };
const _sfc_main$l = /* @__PURE__ */ defineComponent({
  __name: "MigrationWizard",
  setup(__props) {
    const { t: t2 } = useI18n();
    gql`
fragment MigrationBaseError on Query {
  baseError {
    id
    ...BaseError
  }
}
`;
    gql`
fragment MigrationWizardData on Query {
  versions {
    current {
      id
      version
    }
  }
  migration {
    filteredSteps {
      id
      name
      ...MigrationStep
    }
    ...RenameSpecsAuto
    ...RenameSpecsManual
    ...RenameSupport
    ...ConvertConfigFile
  }
}`;
    gql`
query MigrationWizardQuery {
  ...MigrationWizardData
}
`;
    const query2 = useQuery({ query: MigrationWizardQueryDocument, requestPolicy: "cache-and-network", pause: true });
    const migration = computed(() => {
      var _a2;
      return (_a2 = query2.data.value) == null ? void 0 : _a2.migration;
    });
    const steps = computed(() => {
      var _a2;
      return ((_a2 = migration.value) == null ? void 0 : _a2.filteredSteps) || [];
    });
    onBeforeMount(async () => {
      await query2.executeQuery();
    });
    const selectedOption = ref();
    gql`
mutation MigrationWizard_RenameSpecs($skip: Boolean, $before: [String!], $after: [String!]) {
  migrateRenameSpecs(skip: $skip, before: $before, after: $after) {
    ...MigrationBaseError
    migration {
      filteredSteps {
        id
        isCurrentStep
        isCompleted
      }
    }
  }
}
`;
    gql`
mutation MigrationWizard_RenameSpecsFolder {
  migrateRenameSpecsFolder {
    ...MigrationBaseError
    migration {
      ...ConvertConfigFile
      ...RenameSpecsManual
      filteredSteps {
        id
        isCurrentStep
        isCompleted
      }
    }
  }
}
`;
    const renameMutation = useMutation(MigrationWizard_RenameSpecsDocument);
    const renameFolderMutation = useMutation(MigrationWizard_RenameSpecsFolderDocument);
    function renameSpecs() {
      var _a2, _b2;
      if (selectedOption.value === "skip") {
        renameMutation.executeMutation({
          skip: true,
          before: null,
          after: null
        });
      } else if (selectedOption.value === "renameFolder") {
        renameFolderMutation.executeMutation({});
      } else {
        const relativePath = (arr) => arr.map((x2) => x2.text).join("");
        const result = (_b2 = (_a2 = migration.value) == null ? void 0 : _a2.specFiles) == null ? void 0 : _b2.reduce((acc, curr) => {
          return {
            before: acc.before.concat(relativePath(curr.before.parts)),
            after: acc.after.concat(relativePath(curr.after.parts))
          };
        }, { before: [], after: [] });
        renameMutation.executeMutation({
          skip: false,
          before: (result == null ? void 0 : result.before) || [],
          after: (result == null ? void 0 : result.after) || []
        });
      }
    }
    gql`
mutation MigrationWizard_SkipManualRename {
  migrateSkipManualRename {
    migration {
      filteredSteps {
        id
        isCurrentStep
        isCompleted
      }
    }
  }
}
`;
    const skipManualMutation = useMutation(MigrationWizard_SkipManualRenameDocument);
    function skipStep2() {
      skipManualMutation.executeMutation({});
    }
    gql`
mutation MigrationWizard_RenameSupport {
  migrateRenameSupport {
    migration {
      filteredSteps {
        id
        isCurrentStep
        isCompleted
      }
    }
  }
}
`;
    const renameSupportMutation = useMutation(MigrationWizard_RenameSupportDocument);
    function launchRenameSupportFile() {
      renameSupportMutation.executeMutation({});
    }
    gql`
mutation MigrationWizard_FinishedRenamingComponentSpecs {
  finishedRenamingComponentSpecs {
    migration {
      filteredSteps {
        id
        isCurrentStep
        isCompleted
      }
    }
  }
}
`;
    const finishedRenamingComponentSpecsMutation = useMutation(MigrationWizard_FinishedRenamingComponentSpecsDocument);
    function finishedRenamingComponentSpecs() {
      finishedRenamingComponentSpecsMutation.executeMutation({});
    }
    gql`
mutation MigrationWizard_ConvertFile {
  migrateConfigFile {
    migration {
      filteredSteps{
        id
        isCurrentStep
        isCompleted
      }
    }
  }
}
`;
    const configMutation = useMutation(MigrationWizard_ConvertFileDocument);
    function convertConfig() {
      configMutation.executeMutation({});
    }
    gql`
mutation MigrationWizard_ReconfigureComponentTesting {
  migrateComponentTesting {
    currentProject {
      id
      currentTestingType
      needsLegacyConfigMigration
    }
  }
}
`;
    const launchReconfigureMutation = useMutation(MigrationWizard_ReconfigureComponentTestingDocument);
    function launchReconfigureComponentTesting() {
      launchReconfigureMutation.executeMutation({});
    }
    const buttonTitle = computed(() => {
      if (selectedOption.value === "skip") {
        return t2("migration.wizard.step1.buttonSkip");
      }
      if (selectedOption.value === "renameFolder") {
        return t2("migration.wizard.step1.buttonRenameFolder");
      }
      return t2("migration.wizard.step1.button");
    });
    const cypressMajorVersion = computed(() => {
      var _a2, _b2;
      return ((_b2 = (_a2 = query2.data.value) == null ? void 0 : _a2.versions) == null ? void 0 : _b2.current.version.split(".")[0]) ?? "";
    });
    return (_ctx, _cache) => {
      const _component_i_cy_clock_x16 = __unplugin_components_0$5;
      const _component_i_cy_loading_x16 = __unplugin_components_0$l;
      return openBlock(), createElementBlock("div", _hoisted_1$r, [
        createBaseVNode("h1", _hoisted_2$q, toDisplayString$1(unref(t2)("migration.wizard.title", { version: unref(cypressMajorVersion) })), 1),
        createBaseVNode("p", _hoisted_3$k, toDisplayString$1(unref(t2)("migration.wizard.description")), 1),
        createBaseVNode("p", _hoisted_4$e, [
          createVNode(_component_i_cy_clock_x16, { class: "mr-[8px] icon-dark-gray-700" }),
          createBaseVNode("span", null, toDisplayString$1(unref(t2)("migration.wizard.typicalMigrationLabel")), 1),
          createBaseVNode("strong", null, "  " + toDisplayString$1(unref(t2)("migration.wizard.typicalMigrationTime")), 1)
        ]),
        unref(migration) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
          _hoisted_5$7,
          createVNode(_sfc_main$A, {
            step: unref(steps).find((step) => step.name === "renameAuto"),
            title: unref(t2)("migration.wizard.step1.title"),
            description: unref(t2)("migration.wizard.step1.description")
          }, {
            footer: withCtx(() => [
              createVNode(_sfc_main$1t, {
                size: "lg",
                "suffix-icon": unref(__unplugin_components_0$n),
                "suffix-icon-class": "w-[16px] h-[16px] icon-dark-white",
                onClick: renameSpecs
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(buttonTitle)), 1)
                ]),
                _: 1
              }, 8, ["suffix-icon"])
            ]),
            default: withCtx(() => [
              createVNode(_sfc_main$q, {
                gql: unref(migration),
                onSelectOption: _cache[0] || (_cache[0] = (newVal) => selectedOption.value = newVal)
              }, null, 8, ["gql"])
            ]),
            _: 1
          }, 8, ["step", "title", "description"]),
          createVNode(_sfc_main$A, {
            step: unref(steps).find((step) => step.name === "renameManual"),
            title: unref(t2)("migration.wizard.step2.title"),
            description: unref(t2)("migration.wizard.step2.description")
          }, {
            footer: withCtx(() => {
              var _a2, _b2;
              return [
                createBaseVNode("div", _hoisted_6$4, [
                  ((_a2 = unref(migration).manualFiles) == null ? void 0 : _a2.completed) ? (openBlock(), createBlock(_sfc_main$1t, {
                    key: 0,
                    size: "lg",
                    "suffix-icon": unref(__unplugin_components_0$n),
                    "suffix-icon-class": "w-[16px] h-[16px] icon-dark-white",
                    onClick: finishedRenamingComponentSpecs
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(t2)("migration.wizard.step2.buttonDone")), 1)
                    ]),
                    _: 1
                  }, 8, ["suffix-icon"])) : (openBlock(), createBlock(_sfc_main$1t, {
                    key: 1,
                    size: "lg",
                    disabled: "",
                    variant: "pending"
                  }, {
                    prefix: withCtx(() => [
                      createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
                    ]),
                    default: withCtx(() => [
                      createTextVNode(" " + toDisplayString$1(unref(t2)("migration.wizard.step2.buttonWait")), 1)
                    ]),
                    _: 1
                  })),
                  !((_b2 = unref(migration).manualFiles) == null ? void 0 : _b2.completed) ? (openBlock(), createBlock(_sfc_main$1t, {
                    key: 2,
                    size: "lg",
                    variant: "outline",
                    onClick: skipStep2
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(t2)("migration.wizard.step2.button")), 1)
                    ]),
                    _: 1
                  })) : createCommentVNode("", true)
                ])
              ];
            }),
            default: withCtx(() => [
              createVNode(_sfc_main$p, { gql: unref(migration) }, null, 8, ["gql"])
            ]),
            _: 1
          }, 8, ["step", "title", "description"]),
          createVNode(_sfc_main$A, {
            step: unref(steps).find((step) => step.name === "renameSupport"),
            title: unref(t2)("migration.wizard.step3.title"),
            description: unref(t2)("migration.wizard.step3.description")
          }, {
            footer: withCtx(() => [
              createVNode(_sfc_main$1t, {
                size: "lg",
                "suffix-icon": unref(__unplugin_components_0$n),
                "suffix-icon-class": "w-[16px] h-[16px] icon-dark-white",
                "data-cy": "renameSupportButton",
                onClick: launchRenameSupportFile
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.wizard.step3.button")), 1)
                ]),
                _: 1
              }, 8, ["suffix-icon"])
            ]),
            default: withCtx(() => [
              createVNode(_sfc_main$o, { gql: unref(migration) }, null, 8, ["gql"])
            ]),
            _: 1
          }, 8, ["step", "title", "description"]),
          createVNode(_sfc_main$A, {
            step: unref(steps).find((step) => step.name === "configFile"),
            title: unref(t2)("migration.wizard.step4.title"),
            description: unref(t2)("migration.wizard.step4.description")
          }, {
            footer: withCtx(() => [
              createVNode(_sfc_main$1t, {
                size: "lg",
                "suffix-icon": unref(__unplugin_components_0$n),
                "suffix-icon-class": "w-[16px] h-[16px] icon-dark-white",
                "data-cy": "convertConfigButton",
                onClick: convertConfig
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.wizard.step4.button")), 1)
                ]),
                _: 1
              }, 8, ["suffix-icon"])
            ]),
            default: withCtx(() => [
              createVNode(ConvertConfigFile, { gql: unref(migration) }, null, 8, ["gql"])
            ]),
            _: 1
          }, 8, ["step", "title", "description"]),
          createVNode(_sfc_main$A, {
            step: unref(steps).find((step) => step.name === "setupComponent"),
            title: unref(t2)("migration.wizard.step5.title"),
            description: unref(t2)("migration.wizard.step5.description")
          }, {
            footer: withCtx(() => [
              createVNode(_sfc_main$1t, {
                size: "lg",
                "suffix-icon": unref(__unplugin_components_0$n),
                "suffix-icon-class": "w-[16px] h-[16px] icon-dark-white",
                "data-cy": "launchReconfigureButton",
                onClick: launchReconfigureComponentTesting
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("migration.wizard.step5.button")), 1)
                ]),
                _: 1
              }, 8, ["suffix-icon"])
            ]),
            default: withCtx(() => [
              createVNode(_sfc_main$m)
            ]),
            _: 1
          }, 8, ["step", "title", "description"])
        ], 64)) : (openBlock(), createBlock(Spinner, {
          key: 1,
          class: "mx-auto mt-[100px]"
        }))
      ]);
    };
  }
});
const statusClassesObject = {
  disabled: "bg-gray-50 text-gray-500",
  error: "bg-error-100 text-error-600",
  skipped: "bg-gray-100 text-gray-700",
  success: "bg-success-100 text-success-600",
  warning: "bg-warning-100 text-warning-600"
};
const _sfc_main$k = /* @__PURE__ */ defineComponent({
  __name: "Badge",
  props: {
    label: null,
    status: null
  },
  setup(__props) {
    const statusClasses = statusClassesObject;
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["rounded mx-1 text-sm px-1 inline-block whitespace-nowrap", unref(statusClasses)[__props.status || ""]])
      }, toDisplayString$1(__props.label), 3);
    };
  }
});
const _hoisted_1$q = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$p = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z",
  fill: "#C2F1DE"
}, null, -1);
const _hoisted_3$j = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15.999 9L11 15L8.00098 12",
  stroke: "#00814D",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$d = [
  _hoisted_2$p,
  _hoisted_3$j
];
function render$d(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$q, _hoisted_4$d);
}
const AddedIcon = { name: "cy-file-changes-added_x24", render: render$d };
const _hoisted_1$p = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$o = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z",
  fill: "#E1E3ED"
}, null, -1);
const _hoisted_3$i = /* @__PURE__ */ createBaseVNode("path", {
  d: "M8.46447 15.5355C10.4171 17.4882 13.5829 17.4882 15.5355 15.5355C17.4882 13.5829 17.4882 10.4171 15.5355 8.46447M8.46447 15.5355C6.51184 13.5829 6.51184 10.4171 8.46447 8.46447C10.4171 6.51184 13.5829 6.51184 15.5355 8.46447M8.46447 15.5355L15.5355 8.46447",
  stroke: "#9095AD",
  "stroke-width": "2"
}, null, -1);
const _hoisted_4$c = [
  _hoisted_2$o,
  _hoisted_3$i
];
function render$c(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$p, _hoisted_4$c);
}
const SkippedIcon = { name: "cy-file-changes-skipped_x24", render: render$c };
const _hoisted_1$o = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$n = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z",
  fill: "#FAD9DF"
}, null, -1);
const _hoisted_3$h = /* @__PURE__ */ createBaseVNode("path", {
  d: "M15 9L12 12M9 9L12 12M12 12L9 15M12 12L15 15",
  stroke: "#C62B49",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$b = [
  _hoisted_2$n,
  _hoisted_3$h
];
function render$b(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$o, _hoisted_4$b);
}
const ErrorIcon = { name: "cy-file-changes-error_x24", render: render$b };
const _hoisted_1$n = {
  height: "1em",
  width: "1em",
  style: { "min-width": "24px", "min-height": "24px" },
  viewBox: "0 0 24 24",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$m = /* @__PURE__ */ createBaseVNode("path", {
  d: "M0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z",
  fill: "#F3ECB3"
}, null, -1);
const _hoisted_3$g = /* @__PURE__ */ createBaseVNode("path", {
  d: "M12 7V14M12 16.99V17",
  stroke: "#BD5800",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_4$a = [
  _hoisted_2$m,
  _hoisted_3$g
];
function render$a(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$n, _hoisted_4$a);
}
const WarningIcon = { name: "cy-file-changes-warning_x24", render: render$a };
const _hoisted_1$m = { class: "inline-block align-top" };
const _hoisted_2$l = {
  key: 0,
  class: "border-b flex bg-warning-100 border-b-gray-100 p-3 top-0 text-warning-600 z-1 sticky items-center"
};
const _hoisted_3$f = { class: "grow text-left ml-1" };
const _hoisted_4$9 = { class: "font-semibold" };
const _hoisted_5$6 = { class: "rounded bg-warning-200 px-1 text-warning-600 inline-block" };
const _sfc_main$j = /* @__PURE__ */ defineComponent({
  __name: "FileRow",
  props: {
    status: null,
    filePath: null,
    content: null,
    description: null,
    fileExtension: null
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    const language = computed(() => {
      return props.fileExtension.replace(/^\./, "");
    });
    const statusInfo = computed(() => {
      const info = {
        changes: {
          badgeLabel: t2("setupPage.configFile.changesRequiredBadge"),
          badgeType: "warning",
          icon: WarningIcon,
          initiallyOpen: true
        },
        skipped: {
          badgeLabel: t2("setupPage.configFile.skippedLabel"),
          badgeType: "skipped",
          icon: SkippedIcon,
          initiallyOpen: false
        },
        valid: {
          icon: AddedIcon,
          initiallyOpen: false
        },
        error: {
          icon: ErrorIcon,
          initiallyOpen: true
        }
      };
      return info[props.status];
    });
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_down = __unplugin_components_0$k;
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createBlock(_sfc_main$1j, {
        class: "rounded bg-light-50 border-gray-100 mb-4 w-full block",
        "max-height": "500px",
        "initially-open": unref(statusInfo).initiallyOpen,
        "data-cy": __props.status,
        "file-row": true
      }, {
        target: withCtx(({ open }) => [
          createVNode(_sfc_main$B, {
            class: normalizeClass([{ "rounded-b-none mb-[0.1em] default-ring": open, "overflow-hidden": !open }, "border hocus-default cursor-pointer font-medium"]),
            description: __props.description,
            icon: unref(statusInfo).icon
          }, {
            header: withCtx(() => [
              createBaseVNode("span", _hoisted_1$m, toDisplayString$1(__props.filePath), 1),
              !open && unref(statusInfo).badgeType ? (openBlock(), createBlock(_sfc_main$k, {
                key: 0,
                "cy-data": "changes-required-badge",
                label: unref(statusInfo).badgeLabel,
                status: unref(statusInfo).badgeType
              }, null, 8, ["label", "status"])) : createCommentVNode("", true)
            ]),
            right: withCtx(() => [
              createVNode(_component_i_cy_chevron_down, {
                class: normalizeClass([{ "rotate-180": open }, "max-w-[16px] transform icon-dark-gray-400"])
              }, null, 8, ["class"])
            ]),
            _: 2
          }, 1032, ["class", "description", "icon"])
        ]),
        default: withCtx(() => [
          __props.status === "changes" ? (openBlock(), createElementBlock("div", _hoisted_2$l, [
            createBaseVNode("p", _hoisted_3$f, [
              createBaseVNode("span", _hoisted_4$9, toDisplayString$1(unref(t2)("setupPage.configFile.changesRequiredLabel")) + ": ", 1),
              createVNode(_component_i18n_t, {
                scope: "global",
                keypath: "setupPage.configFile.changesRequiredDescription"
              }, {
                default: withCtx(() => [
                  createBaseVNode("span", _hoisted_5$6, toDisplayString$1(__props.filePath), 1)
                ]),
                _: 1
              })
            ]),
            createVNode(_sfc_main$1t, {
              class: "whitespace-nowrap",
              href: "https://on.cypress.io/guides/configuration"
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("links.learnMoreButton")), 1)
              ]),
              _: 1
            })
          ])) : createCommentVNode("", true),
          createVNode(ShikiHighlight, {
            lang: unref(language),
            code: __props.content,
            "line-numbers": "",
            "copy-on-click": ""
          }, null, 8, ["lang", "code"])
        ]),
        _: 1
      }, 8, ["initially-open", "data-cy"]);
    };
  }
});
const _hoisted_1$l = { class: "mx-auto max-w-[55rem] py-8" };
const _hoisted_2$k = /* @__PURE__ */ createBaseVNode("hr", { class: "my-4" }, null, -1);
const _hoisted_3$e = { class: "flex gap-2" };
const _sfc_main$i = /* @__PURE__ */ defineComponent({
  __name: "ScaffoldedFiles",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
mutation ScaffoldedFiles_completeSetup {
  completeSetup {
    currentProject {
      id
      isLoadingConfigFile
      isLoadingNodeEvents
      isCTConfigured
    }
    scaffoldedFiles {
      status
    }
  }
}
`;
    gql`
fragment ScaffoldedFiles on Query {
  scaffoldedFiles {
    status
    description
    file {
      id
      absolute
      relative
      contents
      fileExtension
    }
  }
}
`;
    const files = computed(() => props.gql.scaffoldedFiles);
    const needsChanges = computed(() => {
      var _a2;
      return (_a2 = props.gql.scaffoldedFiles) == null ? void 0 : _a2.some((f2) => f2.status === "changes");
    });
    const mutation = useMutation(ScaffoldedFiles_CompleteSetupDocument);
    const completeSetup = async () => {
      await mutation.executeMutation({});
    };
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock(Fragment, null, [
        createVNode(_sfc_main$19, {
          title: unref(t2)("setupWizard.configFiles.title"),
          description: unref(t2)("setupWizard.configFiles.description")
        }, null, 8, ["title", "description"]),
        createBaseVNode("div", _hoisted_1$l, [
          (openBlock(true), createElementBlock(Fragment, null, renderList(unref(files), (file) => {
            return openBlock(), createBlock(_sfc_main$j, {
              key: file.file.id,
              content: file.file.contents,
              status: file.status,
              "file-path": file.file.relative,
              "file-extension": file.file.fileExtension,
              description: file.description || void 0
            }, null, 8, ["content", "status", "file-path", "file-extension", "description"]);
          }), 128)),
          _hoisted_2$k,
          createBaseVNode("div", _hoisted_3$e, [
            createVNode(_sfc_main$1t, {
              size: "lg",
              disabled: unref(needsChanges),
              onClick: completeSetup
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("setupPage.step.continue")), 1)
              ]),
              _: 1
            }, 8, ["disabled"])
          ])
        ])
      ], 64);
    };
  }
});
const _withScopeId = (n) => (pushScopeId("data-v-a726ed92"), n = n(), popScopeId(), n);
const _hoisted_1$k = { class: "bg-no-repeat bg-cover h-screen min-h-[700px] lp-wrapper" };
const _hoisted_2$j = { class: "h-full" };
const _hoisted_3$d = {
  class: "p-[16px]",
  "data-cy": "release-highlights"
};
const _hoisted_4$8 = { class: "font-medium text-center mb-[28px] tracking-tighter text-[22px] leading-snug text-gray-1000" };
const _hoisted_5$5 = { class: "mb-[16px]" };
const _hoisted_6$3 = { class: "font-light pl-[10px] text-gray-500 text-[14px]" };
const _hoisted_7$3 = { class: "children:mb-[16px]" };
const _hoisted_8$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("h2", { class: "font-bold text-[18px] text-jade-1000" }, " Testing Multi-Origin Workflows ", -1));
const _hoisted_9$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("code", null, "cy.origin()", -1));
const _hoisted_10$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("h2", { class: "font-bold mt-[24px] mb-[16px] text-[18px] text-jade-1000" }, " Test Isolation ", -1));
const _hoisted_11$2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("p", null, [
  /* @__PURE__ */ createTextVNode(" Cypress now ensures each test runs in a clean browser context by default. We now clear the page, "),
  /* @__PURE__ */ createBaseVNode("code", null, "cookies"),
  /* @__PURE__ */ createTextVNode(", "),
  /* @__PURE__ */ createBaseVNode("code", null, "localStorage"),
  /* @__PURE__ */ createTextVNode(", and "),
  /* @__PURE__ */ createBaseVNode("code", null, "sessionStorage"),
  /* @__PURE__ */ createTextVNode(" before each test to guide developers towards writing independent tests from the start. ")
], -1));
const _hoisted_12$2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("h2", { class: "font-bold mt-[24px] mb-[16px] text-[18px] text-jade-1000" }, " We Now Store The Browser Context, So You Don’t Have To ", -1));
const _hoisted_13$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("code", null, "cy.session()", -1));
const _hoisted_14 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("h2", { class: "font-bold mt-[24px] mb-[16px] text-[18px] text-jade-1000" }, " Detaching Ourselves From Detached Dom Errors ", -1));
const _hoisted_15 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("hr", { class: "border-gray-100" }, null, -1));
const _hoisted_16 = {
  class: "px-[16px] pt-[12px]",
  "data-cy": "previous-release-highlights"
};
const _hoisted_17 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("h2", { class: "font-bold mt-[24px] mb-[12px] text-[14px] text-gray-600" }, " Previous release highlights ", -1));
const _hoisted_18 = { class: "pb-[8px]" };
const _hoisted_19 = { class: "font-light pl-[10px] text-gray-500 text-[14px]" };
const _hoisted_20 = { class: "text-[14px] leading-[20px]" };
const _hoisted_21 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("br", null, null, -1));
const _hoisted_22 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("br", null, null, -1));
const _hoisted_23 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("br", null, null, -1));
const _hoisted_24 = { class: "pb-[8px]" };
const _hoisted_25 = { class: "font-light pl-[10px] text-gray-500 text-[14px]" };
const _hoisted_26 = { class: "text-[14px] leading-[20px]" };
const _hoisted_27 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("br", null, null, -1));
const _hoisted_28 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("br", null, null, -1));
const _sfc_main$h = /* @__PURE__ */ defineComponent({
  __name: "MajorVersionWelcome",
  emits: ["clearLandingPage"],
  setup(__props, { emit: emit2 }) {
    const { t: t2 } = useI18n();
    const scroller = ref(null);
    const wrapper = ref(null);
    const { arrivedState, y: scrollerY } = useScroll(scroller);
    const { height: wrapperHeight } = useElementSize(wrapper);
    const handleClick = () => {
      emit2("clearLandingPage");
    };
    const versionReleaseDates = computed(() => {
      return {
        // Note, months are zero indexed.
        "10": useTimeAgo(Date.UTC(2022, 5, 1)).value,
        "11": useTimeAgo(Date.UTC(2022, 10, 8)).value,
        "12": useTimeAgo(Date.UTC(2022, 11, 6)).value
      };
    });
    const shouldShowShadow = computed(() => {
      if (!scroller.value) {
        return false;
      }
      const isScrolledToBottom = arrivedState.bottom;
      const isTallEnoughToScroll = wrapperHeight.value < scroller.value.scrollHeight;
      const showBecauseNotScrolledToBottom = isTallEnoughToScroll && !isScrolledToBottom;
      const showBecauseHaveNotScrolledYet = isTallEnoughToScroll && scrollerY.value === 0;
      return showBecauseNotScrolledToBottom || showBecauseHaveNotScrolledYet;
    });
    return (_ctx, _cache) => {
      const _component_i_cy_chevron_right_x16 = __unplugin_components_0$a;
      return openBlock(), createElementBlock("div", _hoisted_1$k, [
        createBaseVNode("div", {
          ref_key: "wrapper",
          ref: wrapper,
          class: "rounded mx-auto bg-gray-50/50 border-[rgba(0,0,0,0.05)] border-[4px] max-w-[80vw] top-[7vh] w-[716px] relative overflow-hidden"
        }, [
          createBaseVNode("div", {
            ref_key: "scroller",
            ref: scroller,
            class: "bg-white rounded-b max-h-[72vh] pb-[90px] overflow-scroll"
          }, [
            createBaseVNode("div", _hoisted_2$j, [
              createBaseVNode("div", _hoisted_3$d, [
                createBaseVNode("h1", _hoisted_4$8, toDisplayString$1(unref(t2)("majorVersionWelcome.title")), 1),
                createBaseVNode("div", _hoisted_5$5, [
                  createVNode(_sfc_main$1x, {
                    href: "https://on.cypress.io/changelog#12-0-0",
                    class: "font-bold text-indigo-500"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(" 12.0.0 ")
                    ]),
                    _: 1
                  }),
                  createBaseVNode("span", _hoisted_6$3, " Released " + toDisplayString$1(unref(versionReleaseDates)["12"]), 1)
                ]),
                createBaseVNode("div", _hoisted_7$3, [
                  createBaseVNode("p", null, [
                    createTextVNode(" For a complete list of updates and breaking changes in v12.0.0, please review our "),
                    createVNode(_sfc_main$1x, { href: "https://on.cypress.io/changelog#12-0-0" }, {
                      default: withCtx(() => [
                        createTextVNode(" changelog")
                      ]),
                      _: 1
                    }),
                    createTextVNode(". ")
                  ]),
                  _hoisted_8$1,
                  createBaseVNode("p", null, [
                    createTextVNode(" Cypress now has full support for testing multiple origins in a single test with the "),
                    createVNode(_sfc_main$1x, { href: "https://on.cypress.io/origin" }, {
                      default: withCtx(() => [
                        _hoisted_9$1
                      ]),
                      _: 1
                    }),
                    createTextVNode(" command! To take a deep-dive into how this works, read our "),
                    createVNode(_sfc_main$1x, { href: "https://on.cypress.io/cy-origin-journey" }, {
                      default: withCtx(() => [
                        createTextVNode(" blog post")
                      ]),
                      _: 1
                    }),
                    createTextVNode(". ")
                  ]),
                  _hoisted_10$1,
                  _hoisted_11$2,
                  createBaseVNode("p", null, [
                    createTextVNode(" If your existing tests relied on a previous test to run successfully, you might need to make some modifications to your test suite. See the "),
                    createVNode(_sfc_main$1x, { href: "https://on.cypress.io/migration-guide#Migrating-to-Cypress-12-0" }, {
                      default: withCtx(() => [
                        createTextVNode(" Migration Guide ")
                      ]),
                      _: 1
                    }),
                    createTextVNode(" for more details on what you can expect. ")
                  ]),
                  _hoisted_12$2,
                  createBaseVNode("p", null, [
                    createTextVNode(" The "),
                    createVNode(_sfc_main$1x, { href: "https://on.cypress.io/session" }, {
                      default: withCtx(() => [
                        _hoisted_13$1
                      ]),
                      _: 1
                    }),
                    createTextVNode(" command complements test isolation by providing a way to save and share browser contexts between tests and specs in a single run on the same machine. ")
                  ]),
                  _hoisted_14,
                  createBaseVNode("p", null, [
                    createTextVNode(" We have made enhancements to how Cypress manages DOM element resolution to reduce the likelihood of hitting the dreaded detached DOM errors due to maintaining stale DOM references. We've updated our "),
                    createVNode(_sfc_main$1x, { href: "https://on.cypress.io/retry-ability" }, {
                      default: withCtx(() => [
                        createTextVNode(" Retry-ability Guide ")
                      ]),
                      _: 1
                    }),
                    createTextVNode(" with all the details if you'd like to learn more. ")
                  ])
                ])
              ]),
              _hoisted_15,
              createBaseVNode("div", _hoisted_16, [
                _hoisted_17,
                createBaseVNode("div", _hoisted_18, [
                  createVNode(_sfc_main$1x, {
                    href: "https://on.cypress.io/changelog#11-0-0",
                    class: "font-bold text-indigo-500"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(" 11.0.0 ")
                    ]),
                    _: 1
                  }),
                  createBaseVNode("span", _hoisted_19, " Released " + toDisplayString$1(unref(versionReleaseDates)["11"]), 1)
                ]),
                createBaseVNode("p", _hoisted_20, [
                  createTextVNode(" We made Component Testing generally available for projects using React, Next.js, Angular, and Vue which allows you to test your application's components without running your whole app! We also massively improved our startup performance with up to 84% faster startup times! "),
                  _hoisted_21,
                  _hoisted_22,
                  createTextVNode(" Read about the v11.0.0 changes in our "),
                  createVNode(_sfc_main$1x, { href: "https://on.cypress.io/cypress-11-release" }, {
                    default: withCtx(() => [
                      createTextVNode(" blog post")
                    ]),
                    _: 1
                  }),
                  createTextVNode(". ")
                ]),
                _hoisted_23,
                createBaseVNode("div", _hoisted_24, [
                  createVNode(_sfc_main$1x, {
                    href: "https://on.cypress.io/changelog#10-0-0",
                    class: "font-bold text-indigo-500"
                  }, {
                    default: withCtx(() => [
                      createTextVNode(" 10.0.0 ")
                    ]),
                    _: 1
                  }),
                  createBaseVNode("span", _hoisted_25, " Released " + toDisplayString$1(unref(versionReleaseDates)["10"]), 1)
                ]),
                createBaseVNode("p", _hoisted_26, [
                  createTextVNode(" We've reworked the Cypress app from the ground up to modernize the interface, streamline workflows and integrate better into your overall development experience. "),
                  _hoisted_27,
                  _hoisted_28,
                  createTextVNode(" Read about breaking changes in our "),
                  createVNode(_sfc_main$1x, { href: "https://on.cypress.io/cypress-10-release" }, {
                    default: withCtx(() => [
                      createTextVNode(" blog post")
                    ]),
                    _: 1
                  }),
                  createTextVNode(". ")
                ])
              ])
            ])
          ], 512),
          createBaseVNode("div", {
            class: normalizeClass(["bg-white flex border-t border-gray-100 w-full p-[16px] right-0 bottom-0 left-0 justify-between items-center absolute", { "bottom-bar-box-shadow": unref(shouldShowShadow) }]),
            "data-cy": "major-version-welcome-footer"
          }, [
            createVNode(_sfc_main$1t, {
              class: "group",
              size: "lg",
              onClick: handleClick
            }, {
              suffix: withCtx(() => [
                createVNode(_component_i_cy_chevron_right_x16, { class: "icon-dark-white" })
              ]),
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("majorVersionWelcome.actionContinue")) + " ", 1)
              ]),
              _: 1
            }),
            createVNode(_sfc_main$1x, { href: "https://on.cypress.io/changelog" }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("majorVersionWelcome.linkReleaseNotes")), 1)
              ]),
              _: 1
            })
          ], 2)
        ], 512)
      ]);
    };
  }
});
const MajorVersionWelcome_vue_vue_type_style_index_0_scoped_a726ed92_lang = "";
const MajorVersionWelcome = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["__scopeId", "data-v-a726ed92"]]);
const _hoisted_1$j = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  "data-cy": "icon-testing-type-component",
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$i = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 10H6V14H2V10Z",
  fill: "white",
  "fill-opacity": "0.5"
}, null, -1);
const _hoisted_3$c = /* @__PURE__ */ createBaseVNode("path", {
  d: "M10 2H14V6H10V2Z",
  fill: "white",
  "fill-opacity": "0.5"
}, null, -1);
const _hoisted_4$7 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M2 6V5C1.44772 5 1 5.44772 1 6H2ZM6 6H7V5H6V6ZM2 14H1C1 14.5523 1.44772 15 2 15V14ZM10 2V1H9V2H10ZM14 2H15C15 1.44772 14.5523 1 14 1V2ZM14 6V7H15V6H14ZM10 6H9V7H10V6ZM10 10H11V9H10V10ZM10 14V15C10.5523 15 11 14.5523 11 14H10ZM2 7H6V5H2V7ZM5 6V10H7V6H5ZM6 9H2V11H6V9ZM3 10V6H1V10H3ZM5 10V14H7V10H5ZM6 13H2V15H6V13ZM3 14V10H1V14H3ZM10 3H14V1H10V3ZM13 2V6H15V2H13ZM14 5H10V7H14V5ZM11 6V2H9V6H11ZM6 11H10V9H6V11ZM9 10V14H11V10H9ZM10 13H6V15H10V13Z",
  fill: "white"
}, null, -1);
const _hoisted_5$4 = [
  _hoisted_2$i,
  _hoisted_3$c,
  _hoisted_4$7
];
function render$9(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$j, _hoisted_5$4);
}
const TestingTypeComponentIcon = { name: "cy-testing-type-component_x16", render: render$9 };
const _hoisted_1$i = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  "data-cy": "icon-testing-type-e2e",
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$h = /* @__PURE__ */ createStaticVNode('<path d="M15 14V5H12V11H4V14H15Z" fill="#69D3A7" class="icon-light"></path><path d="M15 5H16C16 4.44772 15.5523 4 15 4V5ZM4 14H3C3 14.5523 3.44772 15 4 15V14ZM15 14V15C15.5523 15 16 14.5523 16 14H15ZM1 2V1C0.447715 1 0 1.44772 0 2H1ZM12 2H13C13 1.44772 12.5523 1 12 1V2ZM1 11H0C0 11.5523 0.447715 12 1 12L1 11ZM12 11V12C12.5523 12 13 11.5523 13 11H12ZM14 5V14H16V5H14ZM15 13H4V15H15V13ZM1 3H12V1H1V3ZM12 10H4V12H12V10ZM4 10H1V12H4V10ZM5 14V11H3V14H5ZM12 6H15V4H12V6ZM11 2V5H13V2H11ZM11 5V11H13V5H11ZM2 11V2H0V11H2Z" fill="#007780" class="icon-dark"></path><path d="M4 4.5C4 4.77614 3.77614 5 3.5 5C3.22386 5 3 4.77614 3 4.5C3 4.22386 3.22386 4 3.5 4C3.77614 4 4 4.22386 4 4.5Z" fill="#007780" class="icon-dark"></path><path d="M6 4.5C6 4.77614 5.77614 5 5.5 5C5.22386 5 5 4.77614 5 4.5C5 4.22386 5.22386 4 5.5 4C5.77614 4 6 4.22386 6 4.5Z" fill="#007780" class="icon-dark"></path><path d="M8 4.5C8 4.77614 7.77614 5 7.5 5C7.22386 5 7 4.77614 7 4.5C7 4.22386 7.22386 4 7.5 4C7.77614 4 8 4.22386 8 4.5Z" fill="#007780" class="icon-dark"></path>', 5);
const _hoisted_7$2 = [
  _hoisted_2$h
];
function render$8(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$i, _hoisted_7$2);
}
const TestingTypeE2EIcon = { name: "cy-testing-type-e2e_x16", render: render$8 };
const _hoisted_1$h = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$g = /* @__PURE__ */ createBaseVNode("path", {
  d: "M5 2H3C2.44772 2 2 2.44772 2 3V13C2 13.5523 2.44772 14 3 14H13C13.5523 14 14 13.5523 14 13V11M14 7V2M14 2H9M14 2L7 9",
  class: "icon-dark",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round"
}, null, -1);
const _hoisted_3$b = [
  _hoisted_2$g
];
function render$7(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$h, _hoisted_3$b);
}
const ExportIcon = { name: "cy-export_x16", render: render$7 };
const _hoisted_1$g = {
  height: "1em",
  width: "1em",
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$f = /* @__PURE__ */ createBaseVNode("path", {
  d: "M7 7C7 7.55228 7.44771 8 8 8C8.55228 8 9 7.55228 9 7L7 7ZM9 1C9 0.447715 8.55228 -4.01048e-07 8 -4.25189e-07C7.44771 -3.30121e-07 7 0.447715 7 1L9 1ZM4.57229 3.07404C5.02519 2.75798 5.13612 2.1346 4.82005 1.6817C4.50399 1.2288 3.88062 1.11787 3.42771 1.43394L4.57229 3.07404ZM12.5723 1.43394C12.1194 1.11787 11.496 1.2288 11.1799 1.6817C10.8639 2.1346 10.9748 2.75798 11.4277 3.07404L12.5723 1.43394ZM3.75736 12.2426C1.41421 9.89949 1.41421 6.1005 3.75736 3.75736L2.34315 2.34315C-0.781048 5.46734 -0.781048 10.5327 2.34315 13.6569L3.75736 12.2426ZM12.2426 3.75736C14.5858 6.1005 14.5858 9.89949 12.2426 12.2426L13.6569 13.6569C16.781 10.5327 16.781 5.46734 13.6569 2.34315L12.2426 3.75736ZM12.2426 12.2426C9.89949 14.5858 6.10051 14.5858 3.75736 12.2426L2.34315 13.6569C5.46734 16.781 10.5327 16.781 13.6569 13.6569L12.2426 12.2426ZM9 7L9 1L7 1L7 7L9 7ZM3.75736 3.75736C4.01352 3.5012 4.28642 3.27354 4.57229 3.07404L3.42771 1.43394C3.04594 1.70036 2.68275 2.00354 2.34315 2.34315L3.75736 3.75736ZM11.4277 3.07404C11.7136 3.27354 11.9865 3.5012 12.2426 3.75736L13.6569 2.34315C13.3173 2.00354 12.9541 1.70036 12.5723 1.43394L11.4277 3.07404Z",
  fill: "#9095AD",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$a = [
  _hoisted_2$f
];
function render$6(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$g, _hoisted_3$a);
}
const PowerStandbyIcon = { name: "cy-power-standby", render: render$6 };
const _hoisted_1$f = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$e = /* @__PURE__ */ createBaseVNode("circle", {
  cx: "8",
  cy: "8",
  r: "6",
  stroke: "#E1E3ED",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-light"
}, null, -1);
const _hoisted_3$9 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M14 8C14 4.68629 11.3137 2 8 2",
  stroke: "#6470F3",
  "stroke-width": "2",
  "stroke-linecap": "round",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$6 = [
  _hoisted_2$e,
  _hoisted_3$9
];
function render$5(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$f, _hoisted_4$6);
}
const StatusRunningIcon = { name: "cy-status-running_x16", render: render$5 };
const _hoisted_1$e = { class: "text-center p-2 text-gray-300 text-[14px] leading-[20px]" };
const _hoisted_2$d = {
  key: 0,
  class: "font-medium text-white mb-2"
};
const _hoisted_3$8 = { class: "text-center" };
const _hoisted_4$5 = ["src"];
const _hoisted_5$3 = { class: "text-gray-500 text-[14px] leading-[20px]" };
const _hoisted_6$2 = {
  key: 0,
  class: "mb-14"
};
const _hoisted_7$1 = { class: "flex mb-4 gap-[16px] items-center justify-center" };
const _sfc_main$g = /* @__PURE__ */ defineComponent({
  __name: "OpenBrowserList",
  props: {
    gql: null
  },
  emits: ["navigatedBack", "launch", "closeBrowser", "focusBrowser"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    gql`
mutation OpenBrowserList_SetBrowser($id: ID!) {
  launchpadSetBrowser(id: $id) {
    id
    ...OpenBrowserList
  }
}
`;
    gql`
fragment OpenBrowserList on CurrentProject {
  id
  activeBrowser {
    id
    isFocusSupported
  }
  browsers {
    id
    disabled
    isVersionSupported
    name
    displayName
    warning
    majorVersion
  }
  currentTestingType
  browserStatus
}

subscription OpenBrowserList_browserStatusChange {
  browserStatusChange {
    id
    browserStatus
    activeBrowser {
      id
      isFocusSupported
    }
  }
}
`;
    useSubscription({ query: OpenBrowserList_BrowserStatusChangeDocument });
    const { t: t2 } = useI18n();
    const browsers = computed(() => {
      if (!props.gql.browsers) {
        return void 0;
      }
      return sortBrowsers([...props.gql.browsers]);
    });
    const setBrowser = useMutation(OpenBrowserList_SetBrowserDocument);
    const selectedBrowserId = computed({
      get: () => {
        if (!props.gql.activeBrowser)
          throw new Error("Missing activeBrowser in selectedBrowserId");
        return props.gql.activeBrowser.id;
      },
      set(browserId) {
        if (browserId) {
          setBrowser.executeMutation({ id: browserId });
        }
      }
    });
    const selectedBrowserName = computed(() => {
      var _a2, _b2;
      return (_b2 = (_a2 = browsers.value) == null ? void 0 : _a2.find(
        (browser2) => browser2.id === selectedBrowserId.value
      )) == null ? void 0 : _b2.displayName;
    });
    const browserText = computed(() => {
      const tArgs = { browser: selectedBrowserName.value };
      return {
        e2e: {
          start: t2("openBrowser.startE2E", tArgs),
          opening: t2("openBrowser.openingE2E", tArgs)
        },
        component: {
          start: t2("openBrowser.startComponent", tArgs),
          opening: t2("openBrowser.openingComponent", tArgs)
        },
        running: t2("openBrowser.running", tArgs),
        focus: t2("openBrowser.focus"),
        close: t2("openBrowser.close"),
        switchTestingType: t2("openBrowser.switchTestingType")
      };
    });
    const browserStatus = computed(() => {
      const status = {
        open: props.gql.browserStatus === "open",
        opening: props.gql.browserStatus === "opening",
        closed: props.gql.browserStatus === "closed"
      };
      return {
        ...status,
        chosen: status.opening || status.open
      };
    });
    const testingTypeIcon = computed(() => props.gql.currentTestingType === "component" ? TestingTypeComponentIcon : TestingTypeE2EIcon);
    return (_ctx, _cache) => {
      var _a2;
      const _component_i_cy_circle_bg_question_mark_x16 = __unplugin_components_0$d;
      return unref(browsers) ? (openBlock(), createElementBlock("form", {
        key: 0,
        onSubmit: _cache[4] || (_cache[4] = withModifiers(($event) => emit2("launch"), ["prevent"]))
      }, [
        createVNode(unref(RadioGroup), {
          modelValue: unref(selectedBrowserId),
          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(selectedBrowserId) ? selectedBrowserId.value = $event : null),
          class: "flex flex-wrap py-[40px] gap-[24px] justify-center",
          "data-cy": "open-browser-list"
        }, {
          default: withCtx(() => [
            (openBlock(true), createElementBlock(Fragment, null, renderList(unref(browsers), (browser2) => {
              return openBlock(), createBlock(unref(RadioGroupOption), {
                key: browser2.id,
                "data-cy-browser": browser2.name,
                value: browser2.id,
                disabled: browser2.disabled || !browser2.isVersionSupported || unref(browserStatus).chosen
              }, {
                default: withCtx(({ checked }) => [
                  createVNode(unref(RadioGroupLabel), {
                    for: browser2.id,
                    class: normalizeClass(["rounded border text-center min-h-[144px] pt-6 pb-4 w-[160px] relative block radio-label", {
                      "border-jade-300 ring-2 ring-jade-100 focus:border-jade-400 focus:border focus:outline-none": checked,
                      "border-gray-100 bg-gray-50 before:hocus:cursor-not-allowed": browser2.disabled || !browser2.isVersionSupported,
                      "border-gray-100 filter grayscale": unref(browserStatus).chosen && !checked,
                      "border-gray-100 before:hocus:cursor-pointer hover:border-indigo-300 hover:ring-2 hover:ring-indigo-100": !browser2.disabled && browser2.isVersionSupported && !checked && !unref(browserStatus).chosen
                    }])
                  }, {
                    default: withCtx(() => [
                      browser2.warning ? (openBlock(), createBlock(_sfc_main$M, {
                        key: 0,
                        "popper-class": "max-w-lg"
                      }, {
                        popper: withCtx(() => [
                          createBaseVNode("div", _hoisted_1$e, [
                            !browser2.isVersionSupported ? (openBlock(), createElementBlock("div", _hoisted_2$d, " Unsupported browser ")) : createCommentVNode("", true),
                            createTextVNode(" " + toDisplayString$1(browser2.warning), 1)
                          ])
                        ]),
                        default: withCtx(() => [
                          createVNode(_component_i_cy_circle_bg_question_mark_x16, {
                            "data-cy": "unsupported-browser-tooltip-trigger",
                            class: "mt-[8px] mr-[8px] top-0 right-0 inline-block absolute icon-dark-gray-700 icon-light-gray-200",
                            alt: "unsupported browser"
                          })
                        ]),
                        _: 2
                      }, 1024)) : createCommentVNode("", true),
                      createBaseVNode("div", _hoisted_3$8, [
                        createBaseVNode("img", {
                          src: unref(allBrowsersIcons)[browser2.displayName] || unref(allBrowsersIcons).generic,
                          alt: "",
                          class: normalizeClass(["h-[40px] w-[40px] inline", { "filter grayscale": browser2.disabled || !browser2.isVersionSupported }])
                        }, null, 10, _hoisted_4$5)
                      ]),
                      createBaseVNode("div", {
                        class: normalizeClass(["font-medium pt-2 px-2 text-[18px] leading-[28px] truncate", checked ? "text-jade-600" : browser2.disabled || !browser2.isVersionSupported ? "text-gray-500" : "text-indigo-600"])
                      }, toDisplayString$1(browser2.displayName), 3),
                      createBaseVNode("div", _hoisted_5$3, " v" + toDisplayString$1(browser2.majorVersion), 1)
                    ]),
                    _: 2
                  }, 1032, ["for", "class"])
                ]),
                _: 2
              }, 1032, ["data-cy-browser", "value", "disabled"]);
            }), 128))
          ]),
          _: 1
        }, 8, ["modelValue"]),
        props.gql.currentTestingType ? (openBlock(), createElementBlock("div", _hoisted_6$2, [
          createBaseVNode("div", _hoisted_7$1, [
            unref(selectedBrowserId) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
              unref(browserStatus).closed || unref(browserStatus).opening ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
                unref(browserStatus).closed ? (openBlock(), createBlock(_sfc_main$1t, {
                  key: 0,
                  size: "lg",
                  type: "submit",
                  "prefix-icon": unref(testingTypeIcon),
                  "prefix-icon-class": "icon-dark-white",
                  variant: "secondary",
                  "data-cy": "launch-button",
                  class: "font-medium"
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(browserText)[props.gql.currentTestingType].start), 1)
                  ]),
                  _: 1
                }, 8, ["prefix-icon"])) : (openBlock(), createBlock(_sfc_main$1t, {
                  key: 1,
                  size: "lg",
                  type: "button",
                  disabled: "",
                  variant: "pending",
                  class: "font-medium disabled:cursor-default",
                  "prefix-icon": unref(StatusRunningIcon),
                  "prefix-icon-class": "icon-light-gray-300 icon-dark-white animate-spin"
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(browserText)[props.gql.currentTestingType].opening), 1)
                  ]),
                  _: 1
                }, 8, ["prefix-icon"]))
              ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
                createVNode(_sfc_main$1t, {
                  size: "lg",
                  type: "button",
                  disabled: "",
                  variant: "pending",
                  "prefix-icon": unref(testingTypeIcon),
                  "prefix-icon-class": "icon-dark-white",
                  class: "font-medium disabled:cursor-default"
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(browserText).running), 1)
                  ]),
                  _: 1
                }, 8, ["prefix-icon"]),
                ((_a2 = props.gql.activeBrowser) == null ? void 0 : _a2.isFocusSupported) ? (openBlock(), createBlock(_sfc_main$1t, {
                  key: 0,
                  size: "lg",
                  type: "button",
                  variant: "outline",
                  "prefix-icon": unref(ExportIcon),
                  "prefix-icon-class": "icon-dark-gray-500",
                  class: "font-medium",
                  onClick: _cache[1] || (_cache[1] = ($event) => emit2("focusBrowser"))
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(browserText).focus), 1)
                  ]),
                  _: 1
                }, 8, ["prefix-icon"])) : createCommentVNode("", true),
                createVNode(_sfc_main$1t, {
                  size: "lg",
                  type: "button",
                  variant: "outline",
                  "prefix-icon": unref(PowerStandbyIcon),
                  "prefix-icon-class": "icon-dark-gray-500",
                  class: "font-medium",
                  onClick: _cache[2] || (_cache[2] = ($event) => emit2("closeBrowser"))
                }, {
                  default: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(browserText).close), 1)
                  ]),
                  _: 1
                }, 8, ["prefix-icon"])
              ], 64))
            ], 64)) : createCommentVNode("", true)
          ]),
          createVNode(_sfc_main$1t, {
            size: "sm",
            variant: "text",
            "prefix-icon": unref(__unplugin_components_0$n),
            "prefix-icon-class": "icon-dark-gray-500 transform transition-transform ease-in duration-200 inline-block group-hocus:icon-dark-indigo-500 rotate-180 group-hocus:translate-x-[-2px]",
            class: "font-medium mx-auto text-gray-600 hocus-link-default group hocus:text-indigo-500",
            onClick: _cache[3] || (_cache[3] = ($event) => emit2("navigatedBack"))
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(browserText).switchTestingType), 1)
            ]),
            _: 1
          }, 8, ["prefix-icon"])
        ])) : createCommentVNode("", true)
      ], 32)) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$f = /* @__PURE__ */ defineComponent({
  __name: "OpenBrowser",
  setup(__props) {
    const { t: t2 } = useI18n();
    gql`
query OpenBrowser {
  currentProject {
    id
    currentTestingType
    isLoadingConfigFile
    isLoadingNodeEvents
    ...OpenBrowserList
  }
  ...WarningList
}
`;
    const query2 = useQuery({ query: OpenBrowserDocument });
    gql`
mutation OpenBrowser_ClearTestingType {
  clearCurrentTestingType {
    currentProject {
      id
      currentTestingType
    }
  }
}
`;
    gql`
mutation OpenBrowser_LaunchProject ($testingType: TestingTypeEnum!)  {
  launchOpenProject {
    id
  }
  setProjectPreferencesInGlobalCache(testingType: $testingType) {
    currentProject {
      id
      title
    }
  }
}
`;
    gql`
mutation OpenBrowser_CloseBrowser {
  closeBrowser
}
`;
    gql`
mutation OpenBrowser_FocusActiveBrowserWindow {
  focusActiveBrowserWindow
}
`;
    gql`
mutation OpenBrowser_ResetLatestVersionTelemetry {
  resetLatestVersionTelemetry
}
`;
    const launchOpenProject = useMutation(OpenBrowser_LaunchProjectDocument);
    const clearCurrentTestingType = useMutation(OpenBrowser_ClearTestingTypeDocument);
    const closeBrowser = useMutation(OpenBrowser_CloseBrowserDocument);
    const resetLatestVersionTelemetry = useMutation(OpenBrowser_ResetLatestVersionTelemetryDocument);
    const launching = ref(false);
    const launch = async () => {
      var _a2, _b2;
      const testingType = (_b2 = (_a2 = query2.data.value) == null ? void 0 : _a2.currentProject) == null ? void 0 : _b2.currentTestingType;
      if (testingType && !launching.value) {
        launching.value = true;
        await launchOpenProject.executeMutation({
          testingType
        });
        launching.value = false;
      }
    };
    const backFn = () => {
      clearCurrentTestingType.executeMutation({});
    };
    const closeBrowserFn = () => {
      closeBrowser.executeMutation({});
    };
    const headingDescription = computed(() => {
      var _a2, _b2;
      return t2("setupWizard.chooseBrowser.description", { testingType: ((_b2 = (_a2 = query2.data.value) == null ? void 0 : _a2.currentProject) == null ? void 0 : _b2.currentTestingType) === "component" ? "component" : "E2E" });
    });
    const focusActiveBrowserWindow = useMutation(OpenBrowser_FocusActiveBrowserWindowDocument);
    const setFocusToActiveBrowserWindow = () => {
      focusActiveBrowserWindow.executeMutation({});
    };
    onMounted(() => {
      resetLatestVersionTelemetry.executeMutation({});
    });
    return (_ctx, _cache) => {
      var _a2;
      return ((_a2 = unref(query2).data.value) == null ? void 0 : _a2.currentProject) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
        createVNode(_sfc_main$1a, {
          gql: unref(query2).data.value
        }, null, 8, ["gql"]),
        createVNode(_sfc_main$19, {
          title: unref(t2)("setupWizard.chooseBrowser.title"),
          description: unref(headingDescription)
        }, null, 8, ["title", "description"]),
        createVNode(_sfc_main$g, {
          variant: "",
          gql: unref(query2).data.value.currentProject,
          onNavigatedBack: backFn,
          onLaunch: launch,
          onCloseBrowser: closeBrowserFn,
          onFocusBrowser: setFocusToActiveBrowserWindow
        }, null, 8, ["gql"])
      ], 64)) : createCommentVNode("", true);
    };
  }
});
const _hoisted_1$d = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$c = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8ZM8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0ZM9 5C9 4.44772 8.55228 4 8 4C7.44772 4 7 4.44772 7 5V8C7 8.55228 7.44772 9 8 9C8.55228 9 9 8.55228 9 8V5ZM8 12C8.55228 12 9 11.5523 9 11C9 10.4477 8.55228 10 8 10C7.44772 10 7 10.4477 7 11C7 11.5523 7.44772 12 8 12Z",
  fill: "#DB7903",
  class: "icon-dark"
}, null, -1);
const _hoisted_3$7 = [
  _hoisted_2$c
];
function render$4(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$d, _hoisted_3$7);
}
const __unplugin_components_0$3 = { name: "cy-errored-outline_x16", render: render$4 };
const _hoisted_1$c = {
  height: "1em",
  width: "1em",
  style: { "min-width": "48px", "min-height": "48px" },
  viewBox: "0 0 48 48",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$b = /* @__PURE__ */ createStaticVNode('<path d="M40 8H8C6.34315 8 5 9.34315 5 11V16H43V11C43 9.34315 41.6569 8 40 8Z" fill="#E1E3ED"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M8 8C6.34315 8 5 9.34315 5 11V16H43V11C43 9.34315 41.6569 8 40 8H8Z" fill="#E1E3ED"></path><path d="M19 30L14 28L9 31V36H38C38.5523 36 39 35.5523 39 35V23L34 24L29 27L24 25L19 30Z" fill="#E1E3ED"></path><path d="M5 16H4C4 16.5523 4.44772 17 5 17V16ZM43 16V17C43.5523 17 44 16.5523 44 16H43ZM19 11C18.4477 11 18 11.4477 18 12C18 12.5523 18.4477 13 19 13V11ZM39 13C39.5523 13 40 12.5523 40 12C40 11.4477 39.5523 11 39 11V13ZM14 28L14.3714 27.0715C14.0812 26.9555 13.7535 26.9817 13.4855 27.1425L14 28ZM19 30L18.6286 30.9285C19 31.077 19.4242 30.99 19.7071 30.7071L19 30ZM24 25L24.3714 24.0715C24 23.923 23.5758 24.01 23.2929 24.2929L24 25ZM29 27L28.6286 27.9285C28.9188 28.0445 29.2465 28.0183 29.5145 27.8575L29 27ZM9 31L8.4855 30.1425C8.1843 30.3232 8 30.6487 8 31H9ZM34 24L33.8039 23.0194C33.6915 23.0419 33.5838 23.0835 33.4855 23.1425L34 24ZM9 36H8C8 36.5523 8.44772 37 9 37V36ZM8 9H40V7H8V9ZM42 11V37H44V11H42ZM6 37V11H4V37H6ZM5 17H43V15H5V17ZM19 13H39V11H19V13ZM8 39C6.89543 39 6 38.1046 6 37H4C4 39.2091 5.79086 41 8 41V39ZM42 37C42 38.1046 41.1046 39 40 39V41C42.2091 41 44 39.2091 44 37H42ZM40 9C41.1046 9 42 9.89543 42 11H44C44 8.79086 42.2091 7 40 7V9ZM8 7C5.79086 7 4 8.79086 4 11H6C6 9.89543 6.89543 9 8 9V7ZM4 11V16H6V11H4ZM44 16V11H42V16H44ZM38 19H10V21H38V19ZM13.6286 28.9285L18.6286 30.9285L19.3714 29.0715L14.3714 27.0715L13.6286 28.9285ZM19.7071 30.7071L24.7071 25.7071L23.2929 24.2929L18.2929 29.2929L19.7071 30.7071ZM23.6286 25.9285L28.6286 27.9285L29.3714 26.0715L24.3714 24.0715L23.6286 25.9285ZM40 35V23H38V35H40ZM40 23V21H38V23H40ZM40 39H24V41H40V39ZM24 39H16V41H24V39ZM16 39H8V41H16V39ZM9.5145 31.8575L14.5145 28.8575L13.4855 27.1425L8.4855 30.1425L9.5145 31.8575ZM29.5145 27.8575L34.5145 24.8575L33.4855 23.1425L28.4855 26.1425L29.5145 27.8575ZM34.1961 24.9806L39.1961 23.9806L38.8039 22.0194L33.8039 23.0194L34.1961 24.9806ZM38 35H9V37H38V35ZM10 36V21H8V36H10ZM8 31V36H10V31H8ZM38 21H40C40 19.8954 39.1046 19 38 19V21ZM38 35V37C39.1046 37 40 36.1046 40 35H38ZM10 19C8.89543 19 8 19.8954 8 21H10H10V19Z" fill="#9095AD"></path><path d="M10 12C10 12.5523 9.55228 13 9 13C8.44772 13 8 12.5523 8 12C8 11.4477 8.44772 11 9 11C9.55228 11 10 11.4477 10 12Z" fill="#9095AD"></path><path d="M13 12C13 12.5523 12.5523 13 12 13C11.4477 13 11 12.5523 11 12C11 11.4477 11.4477 11 12 11C12.5523 11 13 11.4477 13 12Z" fill="#9095AD"></path><path d="M16 12C16 12.5523 15.5523 13 15 13C14.4477 13 14 12.5523 14 12C14 11.4477 14.4477 11 15 11C15.5523 11 16 11.4477 16 12Z" fill="#9095AD"></path><path d="M35.2426 41.2426C32.8995 43.5858 29.1005 43.5858 26.7574 41.2426C24.4142 38.8995 24.4142 35.1005 26.7574 32.7574C29.1005 30.4142 32.8995 30.4142 35.2426 32.7574C37.5858 35.1005 37.5858 38.8995 35.2426 41.2426Z" fill="#F59AA9"></path><path d="M32.5 35.5L29.5 38.5M32.5 38.5L29.5 35.5M35.2426 41.2426C32.8995 43.5858 29.1005 43.5858 26.7574 41.2426C24.4142 38.8995 24.4142 35.1005 26.7574 32.7574C29.1005 30.4142 32.8995 30.4142 35.2426 32.7574C37.5858 35.1005 37.5858 38.8995 35.2426 41.2426Z" stroke="#C62B49" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>', 9);
const _hoisted_11$1 = [
  _hoisted_2$b
];
function render$3(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$c, _hoisted_11$1);
}
const __unplugin_components_0$2 = { name: "cy-no-internet_x48", render: render$3 };
const _hoisted_1$b = { class: "flex flex-col h-full text-center justify-center items-center" };
const _hoisted_2$a = { class: "mt-[24px] mb-[4px] text-gray-900 text-[18px] leading-[24px] w-[640px]" };
const _hoisted_3$6 = { class: "font-normal mt-[8px] mb-[24px] text-gray-600 text-[16px] leading-[24px] w-[672px]" };
const _sfc_main$e = /* @__PURE__ */ defineComponent({
  __name: "NoInternetConnection",
  setup(__props) {
    const { t: t2 } = useI18n();
    return (_ctx, _cache) => {
      const _component_i_cy_no_internet_x48 = __unplugin_components_0$2;
      return openBlock(), createElementBlock("div", _hoisted_1$b, [
        createVNode(_component_i_cy_no_internet_x48, {
          "data-cy": "no-connection-icon",
          "aria-hidden": "",
          class: "h-[48px] w-[48px] icon-dark-gray-500 icon-light-gray-100 icon-dark-secondary-jade-400 icon-light-secondary-jade-200"
        }),
        createBaseVNode("h2", _hoisted_2$a, toDisplayString$1(unref(t2)("launchpadErrors.noInternet.header")), 1),
        createBaseVNode("p", _hoisted_3$6, [
          renderSlot(_ctx.$slots, "default")
        ])
      ]);
    };
  }
});
const _hoisted_1$a = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$9 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M6.82489 6.84375C7.20878 7.37466 6.80705 7.64512 6.2982 7.98769C5.83364 8.30045 5.27979 8.67332 5.15302 9.35938C5.00805 10.1439 5.28125 10.9219 6.32812 11.4375C6.56597 11.5546 6.50949 12.7308 6.45832 13.7964C6.44049 14.1678 6.4233 14.5258 6.41944 14.8208C6.48106 14.835 6.54298 14.8484 6.60521 14.861C8.64877 14.0046 10.0688 12.7787 10.7969 11.1406C11.2188 9.98438 10.3906 8.64062 9.48438 8.1875C9.03125 6.25 11.1094 6.70312 11.6719 6.84375C11.8387 6.84375 11.7942 6.65067 11.7265 6.35632C11.6166 5.87867 11.4452 5.13434 12.0156 4.51562C12.4404 4.05487 13.0142 3.5235 13.2197 3.33573C11.9379 1.90225 10.0743 1 8 1C7.18411 1 6.40082 1.13959 5.67271 1.39618C4.4022 4.78576 5.05965 5.34405 6.57478 6.63067C6.65575 6.69944 6.73918 6.77028 6.82489 6.84375Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$5 = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M6.60521 14.861C6.54298 14.8484 6.48106 14.835 6.41944 14.8208C6.4233 14.5258 6.44049 14.1678 6.45832 13.7964C6.50949 12.7308 6.56597 11.5546 6.32812 11.4375C5.28125 10.9219 5.00805 10.1439 5.15302 9.35938C5.27979 8.67332 5.83364 8.30045 6.2982 7.98769C6.80705 7.64512 7.20878 7.37466 6.82489 6.84375C6.73918 6.77028 6.65575 6.69944 6.57478 6.63067C5.05965 5.34405 4.4022 4.78576 5.67271 1.39618C6.40082 1.13959 7.18411 1 8 1C10.0743 1 11.9379 1.90225 13.2197 3.33573C13.0142 3.5235 12.4404 4.05487 12.0156 4.51562C11.4452 5.13434 11.6166 5.87867 11.7265 6.35632C11.7942 6.65067 11.8387 6.84375 11.6719 6.84375C11.1094 6.70312 9.03125 6.25 9.48438 8.1875C10.3906 8.64062 11.2188 9.98438 10.7969 11.1406C10.0688 12.7787 8.64877 14.0046 6.60521 14.861Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_4$4 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M5.67271 1.39618C2.95077 2.35543 1 4.9499 1 8C1 11.3224 3.31469 14.1043 6.41944 14.8208M5.67271 1.39618C6.40082 1.13959 7.18411 1 8 1C10.0743 1 11.9379 1.90225 13.2197 3.33573M5.67271 1.39618C4.4022 4.78576 5.05965 5.34405 6.57478 6.63067C6.65575 6.69944 6.73918 6.77028 6.82489 6.84375C7.20878 7.37466 6.80705 7.64512 6.2982 7.98769C5.83364 8.30045 5.27979 8.67332 5.15302 9.35938C5.00805 10.1439 5.28125 10.9219 6.32812 11.4375C6.56597 11.5546 6.50949 12.7308 6.45832 13.7964C6.44049 14.1678 6.4233 14.5258 6.41944 14.8208M13.2197 3.33573C13.0142 3.5235 12.4404 4.05487 12.0156 4.51562C11.4452 5.13434 11.6166 5.87867 11.7265 6.35632C11.7942 6.65067 11.8387 6.84375 11.6719 6.84375C11.1094 6.70312 9.03125 6.25 9.48438 8.1875C10.3906 8.64062 11.2188 9.98438 10.7969 11.1406C10.0688 12.7787 8.64877 14.0046 6.60521 14.861M13.2197 3.33573C14.3269 4.57387 15 6.20833 15 8C15 11.866 11.866 15 8 15C7.52239 15 7.05595 14.9522 6.60521 14.861M6.60521 14.861C6.54298 14.8484 6.48106 14.835 6.41944 14.8208",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  class: "icon-dark"
}, null, -1);
const _hoisted_5$2 = [
  _hoisted_2$9,
  _hoisted_3$5,
  _hoisted_4$4
];
function render$2(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$a, _hoisted_5$2);
}
const __unplugin_components_0$1 = { name: "cy-globe_x16", render: render$2 };
const _hoisted_1$9 = { class: "border rounded flex font-light bg-gray-50 border-gray-100 px-[16px] text-gray-600 text-[14px] leading-[40px] relative items-center whitespace-nowrap overflow-hidden" };
const _hoisted_2$8 = { class: "font-sans opacity-gradient p-[4px] pl-[32px] top-0 right-0 bottom-0 absolute" };
const _sfc_main$d = /* @__PURE__ */ defineComponent({
  __name: "CopyText",
  props: {
    text: null
  },
  setup(__props) {
    const props = __props;
    return (_ctx, _cache) => {
      const _component_i_cy_globe_x16 = __unplugin_components_0$1;
      return openBlock(), createElementBlock("code", _hoisted_1$9, [
        createVNode(_component_i_cy_globe_x16, { class: "shrink-0 h-[16px] mr-[8px] w-[16px] icon-dark-gray-500 icon-light-gray-100" }),
        createTextVNode(" " + toDisplayString$1(props.text) + " ", 1),
        createBaseVNode("div", _hoisted_2$8, [
          createVNode(_sfc_main$1f, {
            class: "bg-indigo-100",
            text: __props.text
          }, null, 8, ["text"])
        ])
      ]);
    };
  }
});
const CopyText_vue_vue_type_style_index_0_scoped_18d56591_lang = "";
const CopyText = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__scopeId", "data-v-18d56591"]]);
const _hoisted_1$8 = { class: "flex min-h-screen items-center justify-center" };
const _hoisted_2$7 = { class: "bg-white rounded mx-auto min-w-[480px] max-w-[600px] relative" };
const _hoisted_3$4 = { key: 2 };
const _hoisted_4$3 = { class: "rounded flex font-medium bg-red-100 mb-[20px] p-[16px] text-red-600 gap-[8px] items-center" };
const _hoisted_5$1 = { key: 3 };
const _hoisted_6$1 = { class: "rounded flex bg-red-100 mt-[16px] p-[16px] text-red-600 gap-[8px] items-center" };
const _sfc_main$c = /* @__PURE__ */ defineComponent({
  __name: "LoginModal",
  props: {
    gql: null,
    utmMedium: null,
    utmContent: null
  },
  emits: ["close", "cancel"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const online = useOnline();
    gql`
fragment LoginModal on Query {
  ...Auth
}
`;
    hideAllPoppers();
    const { t: t2 } = useI18n();
    const viewer = computed(() => {
      var _a2;
      return (_a2 = props.gql) == null ? void 0 : _a2.cloudViewer;
    });
    const error2 = computed(() => {
      const { name: name2 } = props.gql.authState;
      if (name2 !== "AUTH_BROWSER_LAUNCHED") {
        return name2;
      }
      return null;
    });
    const showFooter = computed(() => error2.value !== "AUTH_COULD_NOT_LAUNCH_BROWSER");
    const title = computed(() => {
      if (viewer.value) {
        return t2("topNav.login.titleSuccess");
      }
      if (error2.value === "AUTH_COULD_NOT_LAUNCH_BROWSER") {
        return t2("topNav.login.titleBrowserError");
      }
      if (error2.value === "AUTH_ERROR_DURING_LOGIN") {
        return t2("topNav.login.titleFailed");
      }
      return t2("topNav.login.titleInitial");
    });
    const isOnline = computed(() => online.value);
    const cancelLogin = () => {
      emit2("cancel");
    };
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_errored_outline_x16 = __unplugin_components_0$3;
      return openBlock(), createBlock(unref(Dialog), {
        open: "",
        class: "inset-0 z-50 fixed overflow-y-auto",
        onClose: cancelLogin
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$8, [
            createVNode(unref(DialogOverlay), { class: "bg-gray-800 opacity-90 inset-0 fixed" }),
            createBaseVNode("div", _hoisted_2$7, [
              createVNode(_sfc_main$$, {
                "help-link": "https://on.cypress.io",
                "help-text": unref(t2)("links.needHelp"),
                onClose: cancelLogin
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(title)), 1)
                ]),
                _: 1
              }, 8, ["help-text"]),
              !unref(isOnline) ? (openBlock(), createBlock(_sfc_main$e, {
                key: 0,
                class: "mt-[24px]"
              })) : unref(isOnline) ? (openBlock(), createBlock(unref(DialogDescription), {
                key: 1,
                class: "font-normal p-[24px] text-gray-700"
              }, {
                default: withCtx(() => [
                  !unref(viewer) && !unref(error2) ? (openBlock(), createBlock(_component_i18n_t, {
                    key: 0,
                    scope: "global",
                    keypath: "topNav.login.bodyInitial"
                  }, {
                    default: withCtx(() => [
                      createVNode(_sfc_main$1x, { href: "https://on.cypress.io/dashboard-introduction" }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString$1(unref(t2)("topNav.login.cloud")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })) : unref(viewer) ? (openBlock(), createBlock(_component_i18n_t, {
                    key: 1,
                    scope: "global",
                    keypath: "topNav.login.bodySuccess"
                  }, {
                    default: withCtx(() => [
                      createVNode(_sfc_main$1x, {
                        href: "https://on.cypress.io/dashboard/profile",
                        class: "font-medium text-indigo-500"
                      }, {
                        default: withCtx(() => [
                          createTextVNode(toDisplayString$1(unref(viewer).fullName || unref(viewer).email), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })) : unref(error2) === "AUTH_COULD_NOT_LAUNCH_BROWSER" ? (openBlock(), createElementBlock("div", _hoisted_3$4, [
                    createBaseVNode("div", _hoisted_4$3, [
                      createVNode(_component_i_cy_errored_outline_x16, { class: "h-[16px] min-w-[16px] w-[16px] icon-dark-red-400" }),
                      createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.login.bodyBrowserError")), 1)
                    ]),
                    createTextVNode(" " + toDisplayString$1(unref(t2)("topNav.login.bodyBrowserErrorDetails")) + " ", 1),
                    props.gql.authState.message ? (openBlock(), createBlock(CopyText, {
                      key: 0,
                      class: "mt-[12px]",
                      text: props.gql.authState.message
                    }, null, 8, ["text"])) : createCommentVNode("", true)
                  ])) : unref(error2) === "AUTH_ERROR_DURING_LOGIN" ? (openBlock(), createElementBlock("div", _hoisted_5$1, [
                    createTextVNode(toDisplayString$1(unref(t2)("topNav.login.bodyError")) + " ", 1),
                    createBaseVNode("div", _hoisted_6$1, [
                      createVNode(_component_i_cy_errored_outline_x16, { class: "h-[16px] min-w-[16px] w-[16px] icon-dark-red-400" }),
                      createTextVNode(" " + toDisplayString$1(props.gql.authState.message), 1)
                    ])
                  ])) : createCommentVNode("", true)
                ]),
                _: 1
              })) : createCommentVNode("", true),
              createBaseVNode("div", {
                class: normalizeClass(["bg-gray-50 border-t-[1px] py-[16px] px-[24px]", { "hidden": !unref(showFooter) }])
              }, [
                createVNode(_sfc_main$I, {
                  gql: props.gql,
                  "show-retry": !!unref(error2),
                  "utm-medium": props.utmMedium,
                  "utm-content": props.utmContent,
                  onClose: _cache[0] || (_cache[0] = ($event) => emit2("close")),
                  onCancel: _cache[1] || (_cache[1] = ($event) => emit2("cancel"))
                }, null, 8, ["gql", "show-retry", "utm-medium", "utm-content"])
              ], 2)
            ])
          ])
        ]),
        _: 1
      });
    };
  }
});
const _hoisted_1$7 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$6 = /* @__PURE__ */ createBaseVNode("path", {
  "fill-rule": "evenodd",
  "clip-rule": "evenodd",
  d: "M7.29289 2.29289C7.10536 2.10536 6.851 2 6.58579 2H2C1.44772 2 1 2.44772 1 3V6H6.58579C6.851 6 7.10536 5.89464 7.29289 5.70711L9 4L7.29289 2.29289Z",
  fill: "#D0D2E0",
  class: "icon-light"
}, null, -1);
const _hoisted_3$3 = /* @__PURE__ */ createBaseVNode("path", {
  d: "M9 4L7.29289 2.29289C7.10536 2.10536 6.851 2 6.58579 2H2C1.44772 2 1 2.44772 1 3V6M9 4H14C14.5523 4 15 4.44772 15 5V13C15 13.5523 14.5523 14 14 14H2C1.44772 14 1 13.5523 1 13V6M9 4L7.29289 5.70711C7.10536 5.89464 6.851 6 6.58579 6H1",
  stroke: "#1B1E2E",
  "stroke-width": "2",
  "stroke-linejoin": "round",
  class: "icon-dark"
}, null, -1);
const _hoisted_4$2 = [
  _hoisted_2$6,
  _hoisted_3$3
];
function render$123(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$7, _hoisted_4$2);
}
const FolderIcon = { name: "cy-folder-outline_x16", render: render$123 };
const _hoisted_1$6 = {
  height: "1em",
  width: "1em",
  style: { "min-width": "16px", "min-height": "16px" },
  viewBox: "0 0 16 16",
  fill: "none",
  xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$5 = /* @__PURE__ */ createStaticVNode('<path d="M10 4V14H14C14.5523 14 15 13.5523 15 13V5C15 4.44772 14.5523 4 14 4H10Z" class="icon-light" fill="#D0D2E0"></path><path d="M10 14H2C1.44772 14 1 13.5523 1 13V2C1 1.44772 1.44772 1 2 1H9C9.55228 1 10 1.44772 10 2V4M10 14V4M10 14H14C14.5523 14 15 13.5523 15 13V5C15 4.44772 14.5523 4 14 4H10" stroke="#1B1E2E" stroke-width="2" class="icon-dark"></path><path d="M3 3.5C3 3.22386 3.22386 3 3.5 3H4.5C4.77614 3 5 3.22386 5 3.5V4.5C5 4.77614 4.77614 5 4.5 5H3.5C3.22386 5 3 4.77614 3 4.5V3.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M12 6.5C12 6.22386 12.2239 6 12.5 6C12.7761 6 13 6.22386 13 6.5V7.5C13 7.77614 12.7761 8 12.5 8C12.2239 8 12 7.77614 12 7.5V6.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M12 9.5C12 9.22386 12.2239 9 12.5 9C12.7761 9 13 9.22386 13 9.5V10.5C13 10.7761 12.7761 11 12.5 11C12.2239 11 12 10.7761 12 10.5V9.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M3 6.5C3 6.22386 3.22386 6 3.5 6H4.5C4.77614 6 5 6.22386 5 6.5V7.5C5 7.77614 4.77614 8 4.5 8H3.5C3.22386 8 3 7.77614 3 7.5V6.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M3 9.5C3 9.22386 3.22386 9 3.5 9H4.5C4.77614 9 5 9.22386 5 9.5V10.5C5 10.7761 4.77614 11 4.5 11H3.5C3.22386 11 3 10.7761 3 10.5V9.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M6 3.5C6 3.22386 6.22386 3 6.5 3H7.5C7.77614 3 8 3.22386 8 3.5V4.5C8 4.77614 7.77614 5 7.5 5H6.5C6.22386 5 6 4.77614 6 4.5V3.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M6 6.5C6 6.22386 6.22386 6 6.5 6H7.5C7.77614 6 8 6.22386 8 6.5V7.5C8 7.77614 7.77614 8 7.5 8H6.5C6.22386 8 6 7.77614 6 7.5V6.5Z" fill="#1B1E2E" class="icon-dark"></path><path d="M6 9.5C6 9.22386 6.22386 9 6.5 9H7.5C7.77614 9 8 9.22386 8 9.5V10.5C8 10.7761 7.77614 11 7.5 11H6.5C6.22386 11 6 10.7761 6 10.5V9.5Z" fill="#1B1E2E" class="icon-dark"></path>', 10);
const _hoisted_12$1 = [
  _hoisted_2$5
];
function render(_ctx, _cache) {
  return openBlock(), createElementBlock("svg", _hoisted_1$6, _hoisted_12$1);
}
const __unplugin_components_0 = { name: "cy-office-building_x16", render };
function keyValMap(list3, keyFn, valFn) {
  return list3.reduce(function(map2, item) {
    map2[keyFn(item)] = valFn(item);
    return map2;
  }, /* @__PURE__ */ Object.create(null));
}
function valueFromASTUntyped(valueNode, variables) {
  switch (valueNode.kind) {
    case Kind.NULL:
      return null;
    case Kind.INT:
      return parseInt(valueNode.value, 10);
    case Kind.FLOAT:
      return parseFloat(valueNode.value);
    case Kind.STRING:
    case Kind.ENUM:
    case Kind.BOOLEAN:
      return valueNode.value;
    case Kind.LIST:
      return valueNode.values.map(function(node) {
        return valueFromASTUntyped(node, variables);
      });
    case Kind.OBJECT:
      return keyValMap(valueNode.fields, function(field) {
        return field.name.value;
      }, function(field) {
        return valueFromASTUntyped(field.value, variables);
      });
    case Kind.VARIABLE:
      return variables === null || variables === void 0 ? void 0 : variables[valueNode.name.value];
  }
  invariant$1(0, "Unexpected value node: " + inspect(valueNode));
}
var buildExports = {};
var build = {
  get exports() {
    return buildExports;
  },
  set exports(v) {
    buildExports = v;
  }
};
var url$1 = {};
var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
var parts = [
  "source",
  "protocol",
  "authority",
  "userInfo",
  "user",
  "password",
  "host",
  "port",
  "relative",
  "path",
  "directory",
  "file",
  "query",
  "anchor"
];
var parseuri$2 = function parseuri(str) {
  var src = str, b2 = str.indexOf("["), e = str.indexOf("]");
  if (b2 != -1 && e != -1) {
    str = str.substring(0, b2) + str.substring(b2, e).replace(/:/g, ";") + str.substring(e, str.length);
  }
  var m2 = re.exec(str || ""), uri = {}, i2 = 14;
  while (i2--) {
    uri[parts[i2]] = m2[i2] || "";
  }
  if (b2 != -1 && e != -1) {
    uri.source = src;
    uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ":");
    uri.authority = uri.authority.replace("[", "").replace("]", "").replace(/;/g, ":");
    uri.ipv6uri = true;
  }
  uri.pathNames = pathNames(uri, uri["path"]);
  uri.queryKey = queryKey(uri, uri["query"]);
  return uri;
};
function pathNames(obj, path) {
  var regx = /\/{2,9}/g, names = path.replace(regx, "/").split("/");
  if (path.substr(0, 1) == "/" || path.length === 0) {
    names.splice(0, 1);
  }
  if (path.substr(path.length - 1, 1) == "/") {
    names.splice(names.length - 1, 1);
  }
  return names;
}
function queryKey(uri, query2) {
  var data = {};
  query2.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {
    if ($1) {
      data[$1] = $2;
    }
  });
  return data;
}
var browserExports = {};
var browser = {
  get exports() {
    return browserExports;
  },
  set exports(v) {
    browserExports = v;
  }
};
var ms;
var hasRequiredMs;
function requireMs() {
  if (hasRequiredMs)
    return ms;
  hasRequiredMs = 1;
  var s2 = 1e3;
  var m2 = s2 * 60;
  var h2 = m2 * 60;
  var d2 = h2 * 24;
  var w2 = d2 * 7;
  var y2 = d2 * 365.25;
  ms = function(val, options2) {
    options2 = options2 || {};
    var type2 = typeof val;
    if (type2 === "string" && val.length > 0) {
      return parse3(val);
    } else if (type2 === "number" && isFinite(val)) {
      return options2.long ? fmtLong(val) : fmtShort(val);
    }
    throw new Error(
      "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
    );
  };
  function parse3(str) {
    str = String(str);
    if (str.length > 100) {
      return;
    }
    var match3 = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
      str
    );
    if (!match3) {
      return;
    }
    var n = parseFloat(match3[1]);
    var type2 = (match3[2] || "ms").toLowerCase();
    switch (type2) {
      case "years":
      case "year":
      case "yrs":
      case "yr":
      case "y":
        return n * y2;
      case "weeks":
      case "week":
      case "w":
        return n * w2;
      case "days":
      case "day":
      case "d":
        return n * d2;
      case "hours":
      case "hour":
      case "hrs":
      case "hr":
      case "h":
        return n * h2;
      case "minutes":
      case "minute":
      case "mins":
      case "min":
      case "m":
        return n * m2;
      case "seconds":
      case "second":
      case "secs":
      case "sec":
      case "s":
        return n * s2;
      case "milliseconds":
      case "millisecond":
      case "msecs":
      case "msec":
      case "ms":
        return n;
      default:
        return void 0;
    }
  }
  function fmtShort(ms2) {
    var msAbs = Math.abs(ms2);
    if (msAbs >= d2) {
      return Math.round(ms2 / d2) + "d";
    }
    if (msAbs >= h2) {
      return Math.round(ms2 / h2) + "h";
    }
    if (msAbs >= m2) {
      return Math.round(ms2 / m2) + "m";
    }
    if (msAbs >= s2) {
      return Math.round(ms2 / s2) + "s";
    }
    return ms2 + "ms";
  }
  function fmtLong(ms2) {
    var msAbs = Math.abs(ms2);
    if (msAbs >= d2) {
      return plural(ms2, msAbs, d2, "day");
    }
    if (msAbs >= h2) {
      return plural(ms2, msAbs, h2, "hour");
    }
    if (msAbs >= m2) {
      return plural(ms2, msAbs, m2, "minute");
    }
    if (msAbs >= s2) {
      return plural(ms2, msAbs, s2, "second");
    }
    return ms2 + " ms";
  }
  function plural(ms2, msAbs, n, name2) {
    var isPlural = msAbs >= n * 1.5;
    return Math.round(ms2 / n) + " " + name2 + (isPlural ? "s" : "");
  }
  return ms;
}
function setup23(env) {
  createDebug.debug = createDebug;
  createDebug.default = createDebug;
  createDebug.coerce = coerce;
  createDebug.disable = disable;
  createDebug.enable = enable;
  createDebug.enabled = enabled;
  createDebug.humanize = requireMs();
  createDebug.destroy = destroy;
  Object.keys(env).forEach((key) => {
    createDebug[key] = env[key];
  });
  createDebug.names = [];
  createDebug.skips = [];
  createDebug.formatters = {};
  function selectColor(namespace) {
    let hash2 = 0;
    for (let i2 = 0; i2 < namespace.length; i2++) {
      hash2 = (hash2 << 5) - hash2 + namespace.charCodeAt(i2);
      hash2 |= 0;
    }
    return createDebug.colors[Math.abs(hash2) % createDebug.colors.length];
  }
  createDebug.selectColor = selectColor;
  function createDebug(namespace) {
    let prevTime;
    let enableOverride = null;
    let namespacesCache;
    let enabledCache;
    function debug2(...args) {
      if (!debug2.enabled) {
        return;
      }
      const self2 = debug2;
      const curr = Number(/* @__PURE__ */ new Date());
      const ms2 = curr - (prevTime || curr);
      self2.diff = ms2;
      self2.prev = prevTime;
      self2.curr = curr;
      prevTime = curr;
      args[0] = createDebug.coerce(args[0]);
      if (typeof args[0] !== "string") {
        args.unshift("%O");
      }
      let index2 = 0;
      args[0] = args[0].replace(/%([a-zA-Z%])/g, (match3, format3) => {
        if (match3 === "%%") {
          return "%";
        }
        index2++;
        const formatter = createDebug.formatters[format3];
        if (typeof formatter === "function") {
          const val = args[index2];
          match3 = formatter.call(self2, val);
          args.splice(index2, 1);
          index2--;
        }
        return match3;
      });
      createDebug.formatArgs.call(self2, args);
      const logFn = self2.log || createDebug.log;
      logFn.apply(self2, args);
    }
    debug2.namespace = namespace;
    debug2.useColors = createDebug.useColors();
    debug2.color = createDebug.selectColor(namespace);
    debug2.extend = extend2;
    debug2.destroy = createDebug.destroy;
    Object.defineProperty(debug2, "enabled", {
      enumerable: true,
      configurable: false,
      get: () => {
        if (enableOverride !== null) {
          return enableOverride;
        }
        if (namespacesCache !== createDebug.namespaces) {
          namespacesCache = createDebug.namespaces;
          enabledCache = createDebug.enabled(namespace);
        }
        return enabledCache;
      },
      set: (v) => {
        enableOverride = v;
      }
    });
    if (typeof createDebug.init === "function") {
      createDebug.init(debug2);
    }
    return debug2;
  }
  function extend2(namespace, delimiter2) {
    const newDebug = createDebug(this.namespace + (typeof delimiter2 === "undefined" ? ":" : delimiter2) + namespace);
    newDebug.log = this.log;
    return newDebug;
  }
  function enable(namespaces) {
    createDebug.save(namespaces);
    createDebug.namespaces = namespaces;
    createDebug.names = [];
    createDebug.skips = [];
    let i2;
    const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
    const len = split.length;
    for (i2 = 0; i2 < len; i2++) {
      if (!split[i2]) {
        continue;
      }
      namespaces = split[i2].replace(/\*/g, ".*?");
      if (namespaces[0] === "-") {
        createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$"));
      } else {
        createDebug.names.push(new RegExp("^" + namespaces + "$"));
      }
    }
  }
  function disable() {
    const namespaces = [
      ...createDebug.names.map(toNamespace),
      ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace)
    ].join(",");
    createDebug.enable("");
    return namespaces;
  }
  function enabled(name2) {
    if (name2[name2.length - 1] === "*") {
      return true;
    }
    let i2;
    let len;
    for (i2 = 0, len = createDebug.skips.length; i2 < len; i2++) {
      if (createDebug.skips[i2].test(name2)) {
        return false;
      }
    }
    for (i2 = 0, len = createDebug.names.length; i2 < len; i2++) {
      if (createDebug.names[i2].test(name2)) {
        return true;
      }
    }
    return false;
  }
  function toNamespace(regexp) {
    return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
  }
  function coerce(val) {
    if (val instanceof Error) {
      return val.stack || val.message;
    }
    return val;
  }
  function destroy() {
    console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
  }
  createDebug.enable(createDebug.load());
  return createDebug;
}
var common = setup23;
(function(module, exports) {
  exports.formatArgs = formatArgs;
  exports.save = save;
  exports.load = load;
  exports.useColors = useColors;
  exports.storage = localstorage();
  exports.destroy = (() => {
    let warned2 = false;
    return () => {
      if (!warned2) {
        warned2 = true;
        console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
      }
    };
  })();
  exports.colors = [
    "#0000CC",
    "#0000FF",
    "#0033CC",
    "#0033FF",
    "#0066CC",
    "#0066FF",
    "#0099CC",
    "#0099FF",
    "#00CC00",
    "#00CC33",
    "#00CC66",
    "#00CC99",
    "#00CCCC",
    "#00CCFF",
    "#3300CC",
    "#3300FF",
    "#3333CC",
    "#3333FF",
    "#3366CC",
    "#3366FF",
    "#3399CC",
    "#3399FF",
    "#33CC00",
    "#33CC33",
    "#33CC66",
    "#33CC99",
    "#33CCCC",
    "#33CCFF",
    "#6600CC",
    "#6600FF",
    "#6633CC",
    "#6633FF",
    "#66CC00",
    "#66CC33",
    "#9900CC",
    "#9900FF",
    "#9933CC",
    "#9933FF",
    "#99CC00",
    "#99CC33",
    "#CC0000",
    "#CC0033",
    "#CC0066",
    "#CC0099",
    "#CC00CC",
    "#CC00FF",
    "#CC3300",
    "#CC3333",
    "#CC3366",
    "#CC3399",
    "#CC33CC",
    "#CC33FF",
    "#CC6600",
    "#CC6633",
    "#CC9900",
    "#CC9933",
    "#CCCC00",
    "#CCCC33",
    "#FF0000",
    "#FF0033",
    "#FF0066",
    "#FF0099",
    "#FF00CC",
    "#FF00FF",
    "#FF3300",
    "#FF3333",
    "#FF3366",
    "#FF3399",
    "#FF33CC",
    "#FF33FF",
    "#FF6600",
    "#FF6633",
    "#FF9900",
    "#FF9933",
    "#FFCC00",
    "#FFCC33"
  ];
  function useColors() {
    if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
      return true;
    }
    if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
      return false;
    }
    return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
    typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
    typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
    typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
  }
  function formatArgs(args) {
    args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff);
    if (!this.useColors) {
      return;
    }
    const c2 = "color: " + this.color;
    args.splice(1, 0, c2, "color: inherit");
    let index2 = 0;
    let lastC = 0;
    args[0].replace(/%[a-zA-Z%]/g, (match3) => {
      if (match3 === "%%") {
        return;
      }
      index2++;
      if (match3 === "%c") {
        lastC = index2;
      }
    });
    args.splice(lastC, 0, c2);
  }
  exports.log = console.debug || console.log || (() => {
  });
  function save(namespaces) {
    try {
      if (namespaces) {
        exports.storage.setItem("debug", namespaces);
      } else {
        exports.storage.removeItem("debug");
      }
    } catch (error2) {
    }
  }
  function load() {
    let r2;
    try {
      r2 = exports.storage.getItem("debug");
    } catch (error2) {
    }
    if (!r2 && typeof process !== "undefined" && "env" in process) {
      r2 = { "CYPRESS_INTERNAL_ENV": "development", "NODE_ENV": "production" }.DEBUG;
    }
    return r2;
  }
  function localstorage() {
    try {
      return localStorage;
    } catch (error2) {
    }
  }
  module.exports = common(exports);
  const { formatters } = module.exports;
  formatters.j = function(v) {
    try {
      return JSON.stringify(v);
    } catch (error2) {
      return "[UnexpectedJSONParseError]: " + error2.message;
    }
  };
})(browser, browserExports);
Object.defineProperty(url$1, "__esModule", { value: true });
url$1.url = void 0;
const parseuri$1 = parseuri$2;
const debug$7 = browserExports("socket.io-client:url");
function url(uri, path = "", loc) {
  let obj = uri;
  loc = loc || typeof location !== "undefined" && location;
  if (null == uri)
    uri = loc.protocol + "//" + loc.host;
  if (typeof uri === "string") {
    if ("/" === uri.charAt(0)) {
      if ("/" === uri.charAt(1)) {
        uri = loc.protocol + uri;
      } else {
        uri = loc.host + uri;
      }
    }
    if (!/^(https?|wss?):\/\//.test(uri)) {
      debug$7("protocol-less url %s", uri);
      if ("undefined" !== typeof loc) {
        uri = loc.protocol + "//" + uri;
      } else {
        uri = "https://" + uri;
      }
    }
    debug$7("parse %s", uri);
    obj = parseuri$1(uri);
  }
  if (!obj.port) {
    if (/^(http|ws)$/.test(obj.protocol)) {
      obj.port = "80";
    } else if (/^(http|ws)s$/.test(obj.protocol)) {
      obj.port = "443";
    }
  }
  obj.path = obj.path || "/";
  const ipv6 = obj.host.indexOf(":") !== -1;
  const host = ipv6 ? "[" + obj.host + "]" : obj.host;
  obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
  obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port);
  return obj;
}
url$1.url = url;
var manager = {};
var libExports = {};
var lib$1 = {
  get exports() {
    return libExports;
  },
  set exports(v) {
    libExports = v;
  }
};
var transports$1 = {};
var hasCorsExports = {};
var hasCors = {
  get exports() {
    return hasCorsExports;
  },
  set exports(v) {
    hasCorsExports = v;
  }
};
try {
  hasCors.exports = typeof XMLHttpRequest !== "undefined" && "withCredentials" in new XMLHttpRequest();
} catch (err) {
  hasCors.exports = false;
}
var globalThis_browser = (() => {
  if (typeof self !== "undefined") {
    return self;
  } else if (typeof window !== "undefined") {
    return window;
  } else {
    return Function("return this")();
  }
})();
const hasCORS = hasCorsExports;
const globalThis$4 = globalThis_browser;
var xmlhttprequest = function(opts) {
  const xdomain = opts.xdomain;
  const xscheme = opts.xscheme;
  const enablesXDR = opts.enablesXDR;
  try {
    if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {
      return new XMLHttpRequest();
    }
  } catch (e) {
  }
  try {
    if ("undefined" !== typeof XDomainRequest && !xscheme && enablesXDR) {
      return new XDomainRequest();
    }
  } catch (e) {
  }
  if (!xdomain) {
    try {
      return new globalThis$4[["Active"].concat("Object").join("X")](
        "Microsoft.XMLHTTP"
      );
    } catch (e) {
    }
  }
};
var pollingXhrExports = {};
var pollingXhr = {
  get exports() {
    return pollingXhrExports;
  },
  set exports(v) {
    pollingXhrExports = v;
  }
};
const PACKET_TYPES$1 = /* @__PURE__ */ Object.create(null);
PACKET_TYPES$1["open"] = "0";
PACKET_TYPES$1["close"] = "1";
PACKET_TYPES$1["ping"] = "2";
PACKET_TYPES$1["pong"] = "3";
PACKET_TYPES$1["message"] = "4";
PACKET_TYPES$1["upgrade"] = "5";
PACKET_TYPES$1["noop"] = "6";
const PACKET_TYPES_REVERSE$1 = /* @__PURE__ */ Object.create(null);
Object.keys(PACKET_TYPES$1).forEach((key) => {
  PACKET_TYPES_REVERSE$1[PACKET_TYPES$1[key]] = key;
});
const ERROR_PACKET$1 = { type: "error", data: "parser error" };
var commons = {
  PACKET_TYPES: PACKET_TYPES$1,
  PACKET_TYPES_REVERSE: PACKET_TYPES_REVERSE$1,
  ERROR_PACKET: ERROR_PACKET$1
};
const { PACKET_TYPES } = commons;
const withNativeBlob$1 = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]";
const withNativeArrayBuffer$2 = typeof ArrayBuffer === "function";
function isArrayBuffer$1(obj) {
  return typeof obj === "object" && obj !== null && toString.call(obj) === "[object ArrayBuffer]";
}
const isView$1 = (obj) => {
  return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;
};
const encodePacket$1 = ({ type: type2, data }, supportsBinary, callback) => {
  if (withNativeBlob$1 && data instanceof Blob) {
    if (supportsBinary) {
      return callback(data);
    } else {
      return encodeBlobAsBase64(data, callback);
    }
  } else if (withNativeArrayBuffer$2 && (data instanceof ArrayBuffer || isArrayBuffer$1(data) || isView$1(data))) {
    if (supportsBinary) {
      return callback(data instanceof ArrayBuffer || isArrayBuffer$1(data) ? data : data.buffer);
    } else {
      return encodeBlobAsBase64(new Blob([data]), callback);
    }
  }
  return callback(PACKET_TYPES[type2] + (data || ""));
};
const encodeBlobAsBase64 = (data, callback) => {
  const fileReader = new FileReader();
  fileReader.onload = function() {
    const content = fileReader.result.split(",")[1];
    callback("b" + content);
  };
  return fileReader.readAsDataURL(data);
};
var encodePacket_browser = encodePacket$1;
var base64Arraybuffer = {};
var hasRequiredBase64Arraybuffer;
function requireBase64Arraybuffer() {
  if (hasRequiredBase64Arraybuffer)
    return base64Arraybuffer;
  hasRequiredBase64Arraybuffer = 1;
  (function(chars) {
    base64Arraybuffer.encode = function(arraybuffer) {
      var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = "";
      for (i2 = 0; i2 < len; i2 += 3) {
        base64 += chars[bytes[i2] >> 2];
        base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];
        base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];
        base64 += chars[bytes[i2 + 2] & 63];
      }
      if (len % 3 === 2) {
        base64 = base64.substring(0, base64.length - 1) + "=";
      } else if (len % 3 === 1) {
        base64 = base64.substring(0, base64.length - 2) + "==";
      }
      return base64;
    };
    base64Arraybuffer.decode = function(base64) {
      var bufferLength = base64.length * 0.75, len = base64.length, i2, p2 = 0, encoded1, encoded2, encoded3, encoded4;
      if (base64[base64.length - 1] === "=") {
        bufferLength--;
        if (base64[base64.length - 2] === "=") {
          bufferLength--;
        }
      }
      var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
      for (i2 = 0; i2 < len; i2 += 4) {
        encoded1 = chars.indexOf(base64[i2]);
        encoded2 = chars.indexOf(base64[i2 + 1]);
        encoded3 = chars.indexOf(base64[i2 + 2]);
        encoded4 = chars.indexOf(base64[i2 + 3]);
        bytes[p2++] = encoded1 << 2 | encoded2 >> 4;
        bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2;
        bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63;
      }
      return arraybuffer;
    };
  })("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
  return base64Arraybuffer;
}
const { PACKET_TYPES_REVERSE, ERROR_PACKET } = commons;
const withNativeArrayBuffer$1 = typeof ArrayBuffer === "function";
let base64decoder;
if (withNativeArrayBuffer$1) {
  base64decoder = requireBase64Arraybuffer();
}
const decodePacket$1 = (encodedPacket, binaryType) => {
  if (typeof encodedPacket !== "string") {
    return {
      type: "message",
      data: mapBinary(encodedPacket, binaryType)
    };
  }
  const type2 = encodedPacket.charAt(0);
  if (type2 === "b") {
    return {
      type: "message",
      data: decodeBase64Packet(encodedPacket.substring(1), binaryType)
    };
  }
  const packetType = PACKET_TYPES_REVERSE[type2];
  if (!packetType) {
    return ERROR_PACKET;
  }
  return encodedPacket.length > 1 ? {
    type: PACKET_TYPES_REVERSE[type2],
    data: encodedPacket.substring(1)
  } : {
    type: PACKET_TYPES_REVERSE[type2]
  };
};
const decodeBase64Packet = (data, binaryType) => {
  if (base64decoder) {
    const decoded = base64decoder.decode(data);
    return mapBinary(decoded, binaryType);
  } else {
    return { base64: true, data };
  }
};
const mapBinary = (data, binaryType) => {
  switch (binaryType) {
    case "blob":
      return data instanceof ArrayBuffer ? new Blob([data]) : data;
    case "arraybuffer":
    default:
      return data;
  }
};
var decodePacket_browser = decodePacket$1;
const encodePacket = encodePacket_browser;
const decodePacket = decodePacket_browser;
const SEPARATOR = String.fromCharCode(30);
const encodePayload = (packets, callback) => {
  const length2 = packets.length;
  const encodedPackets = new Array(length2);
  let count = 0;
  packets.forEach((packet, i2) => {
    encodePacket(packet, false, (encodedPacket) => {
      encodedPackets[i2] = encodedPacket;
      if (++count === length2) {
        callback(encodedPackets.join(SEPARATOR));
      }
    });
  });
};
const decodePayload = (encodedPayload, binaryType) => {
  const encodedPackets = encodedPayload.split(SEPARATOR);
  const packets = [];
  for (let i2 = 0; i2 < encodedPackets.length; i2++) {
    const decodedPacket = decodePacket(encodedPackets[i2], binaryType);
    packets.push(decodedPacket);
    if (decodedPacket.type === "error") {
      break;
    }
  }
  return packets;
};
var lib = {
  protocol: 4,
  encodePacket,
  encodePayload,
  decodePacket,
  decodePayload
};
var componentEmitterExports = {};
var componentEmitter = {
  get exports() {
    return componentEmitterExports;
  },
  set exports(v) {
    componentEmitterExports = v;
  }
};
(function(module) {
  {
    module.exports = Emitter2;
  }
  function Emitter2(obj) {
    if (obj)
      return mixin(obj);
  }
  function mixin(obj) {
    for (var key in Emitter2.prototype) {
      obj[key] = Emitter2.prototype[key];
    }
    return obj;
  }
  Emitter2.prototype.on = Emitter2.prototype.addEventListener = function(event, fn) {
    this._callbacks = this._callbacks || {};
    (this._callbacks["$" + event] = this._callbacks["$" + event] || []).push(fn);
    return this;
  };
  Emitter2.prototype.once = function(event, fn) {
    function on2() {
      this.off(event, on2);
      fn.apply(this, arguments);
    }
    on2.fn = fn;
    this.on(event, on2);
    return this;
  };
  Emitter2.prototype.off = Emitter2.prototype.removeListener = Emitter2.prototype.removeAllListeners = Emitter2.prototype.removeEventListener = function(event, fn) {
    this._callbacks = this._callbacks || {};
    if (0 == arguments.length) {
      this._callbacks = {};
      return this;
    }
    var callbacks2 = this._callbacks["$" + event];
    if (!callbacks2)
      return this;
    if (1 == arguments.length) {
      delete this._callbacks["$" + event];
      return this;
    }
    var cb;
    for (var i2 = 0; i2 < callbacks2.length; i2++) {
      cb = callbacks2[i2];
      if (cb === fn || cb.fn === fn) {
        callbacks2.splice(i2, 1);
        break;
      }
    }
    if (callbacks2.length === 0) {
      delete this._callbacks["$" + event];
    }
    return this;
  };
  Emitter2.prototype.emit = function(event) {
    this._callbacks = this._callbacks || {};
    var args = new Array(arguments.length - 1), callbacks2 = this._callbacks["$" + event];
    for (var i2 = 1; i2 < arguments.length; i2++) {
      args[i2 - 1] = arguments[i2];
    }
    if (callbacks2) {
      callbacks2 = callbacks2.slice(0);
      for (var i2 = 0, len = callbacks2.length; i2 < len; ++i2) {
        callbacks2[i2].apply(this, args);
      }
    }
    return this;
  };
  Emitter2.prototype.listeners = function(event) {
    this._callbacks = this._callbacks || {};
    return this._callbacks["$" + event] || [];
  };
  Emitter2.prototype.hasListeners = function(event) {
    return !!this.listeners(event).length;
  };
})(componentEmitter);
const parser$4 = lib;
const Emitter$3 = componentEmitterExports;
const debug$6 = browserExports("engine.io-client:transport");
let Transport$2 = class Transport extends Emitter$3 {
  /**
   * Transport abstract constructor.
   *
   * @param {Object} options.
   * @api private
   */
  constructor(opts) {
    super();
    this.opts = opts;
    this.query = opts.query;
    this.readyState = "";
    this.socket = opts.socket;
  }
  /**
   * Emits an error.
   *
   * @param {String} str
   * @return {Transport} for chaining
   * @api public
   */
  onError(msg, desc) {
    const err = new Error(msg);
    err.type = "TransportError";
    err.description = desc;
    this.emit("error", err);
    return this;
  }
  /**
   * Opens the transport.
   *
   * @api public
   */
  open() {
    if ("closed" === this.readyState || "" === this.readyState) {
      this.readyState = "opening";
      this.doOpen();
    }
    return this;
  }
  /**
   * Closes the transport.
   *
   * @api private
   */
  close() {
    if ("opening" === this.readyState || "open" === this.readyState) {
      this.doClose();
      this.onClose();
    }
    return this;
  }
  /**
   * Sends multiple packets.
   *
   * @param {Array} packets
   * @api private
   */
  send(packets) {
    if ("open" === this.readyState) {
      this.write(packets);
    } else {
      debug$6("transport is not open, discarding packets");
    }
  }
  /**
   * Called upon open
   *
   * @api private
   */
  onOpen() {
    this.readyState = "open";
    this.writable = true;
    this.emit("open");
  }
  /**
   * Called with data.
   *
   * @param {String} data
   * @api private
   */
  onData(data) {
    const packet = parser$4.decodePacket(data, this.socket.binaryType);
    this.onPacket(packet);
  }
  /**
   * Called with a decoded packet.
   */
  onPacket(packet) {
    this.emit("packet", packet);
  }
  /**
   * Called upon close.
   *
   * @api private
   */
  onClose() {
    this.readyState = "closed";
    this.emit("close");
  }
};
var transport = Transport$2;
var parseqs$3 = {};
parseqs$3.encode = function(obj) {
  var str = "";
  for (var i2 in obj) {
    if (obj.hasOwnProperty(i2)) {
      if (str.length)
        str += "&";
      str += encodeURIComponent(i2) + "=" + encodeURIComponent(obj[i2]);
    }
  }
  return str;
};
parseqs$3.decode = function(qs) {
  var qry = {};
  var pairs = qs.split("&");
  for (var i2 = 0, l2 = pairs.length; i2 < l2; i2++) {
    var pair = pairs[i2].split("=");
    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
  }
  return qry;
};
var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""), length = 64, map = {}, seed = 0, i = 0, prev;
function encode(num2) {
  var encoded = "";
  do {
    encoded = alphabet[num2 % length] + encoded;
    num2 = Math.floor(num2 / length);
  } while (num2 > 0);
  return encoded;
}
function decode(str) {
  var decoded = 0;
  for (i = 0; i < str.length; i++) {
    decoded = decoded * length + map[str.charAt(i)];
  }
  return decoded;
}
function yeast$2() {
  var now = encode(+/* @__PURE__ */ new Date());
  if (now !== prev)
    return seed = 0, prev = now;
  return now + "." + encode(seed++);
}
for (; i < length; i++)
  map[alphabet[i]] = i;
yeast$2.encode = encode;
yeast$2.decode = decode;
var yeast_1 = yeast$2;
const Transport$1 = transport;
const parseqs$2 = parseqs$3;
const parser$3 = lib;
const yeast$1 = yeast_1;
const debug$5 = browserExports("engine.io-client:polling");
let Polling$2 = class Polling extends Transport$1 {
  /**
   * Transport name.
   */
  get name() {
    return "polling";
  }
  /**
   * Opens the socket (triggers polling). We write a PING message to determine
   * when the transport is open.
   *
   * @api private
   */
  doOpen() {
    this.poll();
  }
  /**
   * Pauses polling.
   *
   * @param {Function} callback upon buffers are flushed and transport is paused
   * @api private
   */
  pause(onPause) {
    const self2 = this;
    this.readyState = "pausing";
    function pause() {
      debug$5("paused");
      self2.readyState = "paused";
      onPause();
    }
    if (this.polling || !this.writable) {
      let total = 0;
      if (this.polling) {
        debug$5("we are currently polling - waiting to pause");
        total++;
        this.once("pollComplete", function() {
          debug$5("pre-pause polling complete");
          --total || pause();
        });
      }
      if (!this.writable) {
        debug$5("we are currently writing - waiting to pause");
        total++;
        this.once("drain", function() {
          debug$5("pre-pause writing complete");
          --total || pause();
        });
      }
    } else {
      pause();
    }
  }
  /**
   * Starts polling cycle.
   *
   * @api public
   */
  poll() {
    debug$5("polling");
    this.polling = true;
    this.doPoll();
    this.emit("poll");
  }
  /**
   * Overloads onData to detect payloads.
   *
   * @api private
   */
  onData(data) {
    const self2 = this;
    debug$5("polling got data %s", data);
    const callback = function(packet, index2, total) {
      if ("opening" === self2.readyState && packet.type === "open") {
        self2.onOpen();
      }
      if ("close" === packet.type) {
        self2.onClose();
        return false;
      }
      self2.onPacket(packet);
    };
    parser$3.decodePayload(data, this.socket.binaryType).forEach(callback);
    if ("closed" !== this.readyState) {
      this.polling = false;
      this.emit("pollComplete");
      if ("open" === this.readyState) {
        this.poll();
      } else {
        debug$5('ignoring poll - transport state "%s"', this.readyState);
      }
    }
  }
  /**
   * For polling, send a close packet.
   *
   * @api private
   */
  doClose() {
    const self2 = this;
    function close() {
      debug$5("writing close packet");
      self2.write([{ type: "close" }]);
    }
    if ("open" === this.readyState) {
      debug$5("transport open - closing");
      close();
    } else {
      debug$5("transport not open - deferring close");
      this.once("open", close);
    }
  }
  /**
   * Writes a packets payload.
   *
   * @param {Array} data packets
   * @param {Function} drain callback
   * @api private
   */
  write(packets) {
    this.writable = false;
    parser$3.encodePayload(packets, (data) => {
      this.doWrite(data, () => {
        this.writable = true;
        this.emit("drain");
      });
    });
  }
  /**
   * Generates uri for connection.
   *
   * @api private
   */
  uri() {
    let query2 = this.query || {};
    const schema = this.opts.secure ? "https" : "http";
    let port = "";
    if (false !== this.opts.timestampRequests) {
      query2[this.opts.timestampParam] = yeast$1();
    }
    if (!this.supportsBinary && !query2.sid) {
      query2.b64 = 1;
    }
    query2 = parseqs$2.encode(query2);
    if (this.opts.port && ("https" === schema && Number(this.opts.port) !== 443 || "http" === schema && Number(this.opts.port) !== 80)) {
      port = ":" + this.opts.port;
    }
    if (query2.length) {
      query2 = "?" + query2;
    }
    const ipv6 = this.opts.hostname.indexOf(":") !== -1;
    return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + query2;
  }
};
var polling$1 = Polling$2;
var util = {};
util.pick = (obj, ...attr) => {
  return attr.reduce((acc, k) => {
    if (obj.hasOwnProperty(k)) {
      acc[k] = obj[k];
    }
    return acc;
  }, {});
};
const XMLHttpRequest$2 = xmlhttprequest;
const Polling$1 = polling$1;
const Emitter$2 = componentEmitterExports;
const { pick: pick$1 } = util;
const globalThis$3 = globalThis_browser;
const debug$4 = browserExports("engine.io-client:polling-xhr");
function empty() {
}
const hasXHR2 = function() {
  const xhr = new XMLHttpRequest$2({ xdomain: false });
  return null != xhr.responseType;
}();
let XHR$1 = class XHR extends Polling$1 {
  /**
   * XHR Polling constructor.
   *
   * @param {Object} opts
   * @api public
   */
  constructor(opts) {
    super(opts);
    if (typeof location !== "undefined") {
      const isSSL = "https:" === location.protocol;
      let port = location.port;
      if (!port) {
        port = isSSL ? 443 : 80;
      }
      this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port;
      this.xs = opts.secure !== isSSL;
    }
    const forceBase64 = opts && opts.forceBase64;
    this.supportsBinary = hasXHR2 && !forceBase64;
  }
  /**
   * Creates a request.
   *
   * @param {String} method
   * @api private
   */
  request(opts = {}) {
    Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);
    return new Request(this.uri(), opts);
  }
  /**
   * Sends data.
   *
   * @param {String} data to send.
   * @param {Function} called upon flush.
   * @api private
   */
  doWrite(data, fn) {
    const req = this.request({
      method: "POST",
      data
    });
    const self2 = this;
    req.on("success", fn);
    req.on("error", function(err) {
      self2.onError("xhr post error", err);
    });
  }
  /**
   * Starts a poll cycle.
   *
   * @api private
   */
  doPoll() {
    debug$4("xhr poll");
    const req = this.request();
    const self2 = this;
    req.on("data", function(data) {
      self2.onData(data);
    });
    req.on("error", function(err) {
      self2.onError("xhr poll error", err);
    });
    this.pollXhr = req;
  }
};
class Request extends Emitter$2 {
  /**
   * Request constructor
   *
   * @param {Object} options
   * @api public
   */
  constructor(uri, opts) {
    super();
    this.opts = opts;
    this.method = opts.method || "GET";
    this.uri = uri;
    this.async = false !== opts.async;
    this.data = void 0 !== opts.data ? opts.data : null;
    this.create();
  }
  /**
   * Creates the XHR object and sends the request.
   *
   * @api private
   */
  create() {
    const opts = pick$1(
      this.opts,
      "agent",
      "enablesXDR",
      "pfx",
      "key",
      "passphrase",
      "cert",
      "ca",
      "ciphers",
      "rejectUnauthorized",
      "autoUnref"
    );
    opts.xdomain = !!this.opts.xd;
    opts.xscheme = !!this.opts.xs;
    const xhr = this.xhr = new XMLHttpRequest$2(opts);
    const self2 = this;
    try {
      debug$4("xhr open %s: %s", this.method, this.uri);
      xhr.open(this.method, this.uri, this.async);
      try {
        if (this.opts.extraHeaders) {
          xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);
          for (let i2 in this.opts.extraHeaders) {
            if (this.opts.extraHeaders.hasOwnProperty(i2)) {
              xhr.setRequestHeader(i2, this.opts.extraHeaders[i2]);
            }
          }
        }
      } catch (e) {
      }
      if ("POST" === this.method) {
        try {
          xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8");
        } catch (e) {
        }
      }
      try {
        xhr.setRequestHeader("Accept", "*/*");
      } catch (e) {
      }
      if ("withCredentials" in xhr) {
        xhr.withCredentials = this.opts.withCredentials;
      }
      if (this.opts.requestTimeout) {
        xhr.timeout = this.opts.requestTimeout;
      }
      if (this.hasXDR()) {
        xhr.onload = function() {
          self2.onLoad();
        };
        xhr.onerror = function() {
          self2.onError(xhr.responseText);
        };
      } else {
        xhr.onreadystatechange = function() {
          if (4 !== xhr.readyState)
            return;
          if (200 === xhr.status || 1223 === xhr.status) {
            self2.onLoad();
          } else {
            setTimeout(function() {
              self2.onError(typeof xhr.status === "number" ? xhr.status : 0);
            }, 0);
          }
        };
      }
      debug$4("xhr data %s", this.data);
      xhr.send(this.data);
    } catch (e) {
      setTimeout(function() {
        self2.onError(e);
      }, 0);
      return;
    }
    if (typeof document !== "undefined") {
      this.index = Request.requestsCount++;
      Request.requests[this.index] = this;
    }
  }
  /**
   * Called upon successful response.
   *
   * @api private
   */
  onSuccess() {
    this.emit("success");
    this.cleanup();
  }
  /**
   * Called if we have data.
   *
   * @api private
   */
  onData(data) {
    this.emit("data", data);
    this.onSuccess();
  }
  /**
   * Called upon error.
   *
   * @api private
   */
  onError(err) {
    this.emit("error", err);
    this.cleanup(true);
  }
  /**
   * Cleans up house.
   *
   * @api private
   */
  cleanup(fromError) {
    if ("undefined" === typeof this.xhr || null === this.xhr) {
      return;
    }
    if (this.hasXDR()) {
      this.xhr.onload = this.xhr.onerror = empty;
    } else {
      this.xhr.onreadystatechange = empty;
    }
    if (fromError) {
      try {
        this.xhr.abort();
      } catch (e) {
      }
    }
    if (typeof document !== "undefined") {
      delete Request.requests[this.index];
    }
    this.xhr = null;
  }
  /**
   * Called upon load.
   *
   * @api private
   */
  onLoad() {
    const data = this.xhr.responseText;
    if (data !== null) {
      this.onData(data);
    }
  }
  /**
   * Check if it has XDomainRequest.
   *
   * @api private
   */
  hasXDR() {
    return typeof XDomainRequest !== "undefined" && !this.xs && this.enablesXDR;
  }
  /**
   * Aborts the request.
   *
   * @api public
   */
  abort() {
    this.cleanup();
  }
}
Request.requestsCount = 0;
Request.requests = {};
if (typeof document !== "undefined") {
  if (typeof attachEvent === "function") {
    attachEvent("onunload", unloadHandler);
  } else if (typeof addEventListener === "function") {
    const terminationEvent = "onpagehide" in globalThis$3 ? "pagehide" : "unload";
    addEventListener(terminationEvent, unloadHandler, false);
  }
}
function unloadHandler() {
  for (let i2 in Request.requests) {
    if (Request.requests.hasOwnProperty(i2)) {
      Request.requests[i2].abort();
    }
  }
}
pollingXhr.exports = XHR$1;
pollingXhrExports.Request = Request;
const Polling2 = polling$1;
const globalThis$2 = globalThis_browser;
const rNewline = /\n/g;
const rEscapedNewline = /\\n/g;
let callbacks;
class JSONPPolling extends Polling2 {
  /**
   * JSONP Polling constructor.
   *
   * @param {Object} opts.
   * @api public
   */
  constructor(opts) {
    super(opts);
    this.query = this.query || {};
    if (!callbacks) {
      callbacks = globalThis$2.___eio = globalThis$2.___eio || [];
    }
    this.index = callbacks.length;
    const self2 = this;
    callbacks.push(function(msg) {
      self2.onData(msg);
    });
    this.query.j = this.index;
  }
  /**
   * JSONP only supports binary as base64 encoded strings
   */
  get supportsBinary() {
    return false;
  }
  /**
   * Closes the socket.
   *
   * @api private
   */
  doClose() {
    if (this.script) {
      this.script.onerror = () => {
      };
      this.script.parentNode.removeChild(this.script);
      this.script = null;
    }
    if (this.form) {
      this.form.parentNode.removeChild(this.form);
      this.form = null;
      this.iframe = null;
    }
    super.doClose();
  }
  /**
   * Starts a poll cycle.
   *
   * @api private
   */
  doPoll() {
    const self2 = this;
    const script2 = document.createElement("script");
    if (this.script) {
      this.script.parentNode.removeChild(this.script);
      this.script = null;
    }
    script2.async = true;
    script2.src = this.uri();
    script2.onerror = function(e) {
      self2.onError("jsonp poll error", e);
    };
    const insertAt = document.getElementsByTagName("script")[0];
    if (insertAt) {
      insertAt.parentNode.insertBefore(script2, insertAt);
    } else {
      (document.head || document.body).appendChild(script2);
    }
    this.script = script2;
    const isUAgecko = "undefined" !== typeof navigator && /gecko/i.test(navigator.userAgent);
    if (isUAgecko) {
      setTimeout(function() {
        const iframe = document.createElement("iframe");
        document.body.appendChild(iframe);
        document.body.removeChild(iframe);
      }, 100);
    }
  }
  /**
   * Writes with a hidden iframe.
   *
   * @param {String} data to send
   * @param {Function} called upon flush.
   * @api private
   */
  doWrite(data, fn) {
    const self2 = this;
    let iframe;
    if (!this.form) {
      const form = document.createElement("form");
      const area = document.createElement("textarea");
      const id2 = this.iframeId = "eio_iframe_" + this.index;
      form.className = "socketio";
      form.style.position = "absolute";
      form.style.top = "-1000px";
      form.style.left = "-1000px";
      form.target = id2;
      form.method = "POST";
      form.setAttribute("accept-charset", "utf-8");
      area.name = "d";
      form.appendChild(area);
      document.body.appendChild(form);
      this.form = form;
      this.area = area;
    }
    this.form.action = this.uri();
    function complete() {
      initIframe();
      fn();
    }
    function initIframe() {
      if (self2.iframe) {
        try {
          self2.form.removeChild(self2.iframe);
        } catch (e) {
          self2.onError("jsonp polling iframe removal error", e);
        }
      }
      try {
        const html = '<iframe src="javascript:0" name="' + self2.iframeId + '">';
        iframe = document.createElement(html);
      } catch (e) {
        iframe = document.createElement("iframe");
        iframe.name = self2.iframeId;
        iframe.src = "javascript:0";
      }
      iframe.id = self2.iframeId;
      self2.form.appendChild(iframe);
      self2.iframe = iframe;
    }
    initIframe();
    data = data.replace(rEscapedNewline, "\\\n");
    this.area.value = data.replace(rNewline, "\\n");
    try {
      this.form.submit();
    } catch (e) {
    }
    if (this.iframe.attachEvent) {
      this.iframe.onreadystatechange = function() {
        if (self2.iframe.readyState === "complete") {
          complete();
        }
      };
    } else {
      this.iframe.onload = complete;
    }
  }
}
var pollingJsonp = JSONPPolling;
const globalThis$1 = globalThis_browser;
var websocketConstructor_browser = {
  WebSocket: globalThis$1.WebSocket || globalThis$1.MozWebSocket,
  usingBrowserWebSocket: true,
  defaultBinaryType: "arraybuffer"
};
const Transport2 = transport;
const parser$2 = lib;
const parseqs$1 = parseqs$3;
const yeast = yeast_1;
const { pick } = util;
const {
  WebSocket: WebSocket$1,
  usingBrowserWebSocket,
  defaultBinaryType
} = websocketConstructor_browser;
const debug$3 = browserExports("engine.io-client:websocket");
const isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative";
class WS extends Transport2 {
  /**
   * WebSocket transport constructor.
   *
   * @api {Object} connection options
   * @api public
   */
  constructor(opts) {
    super(opts);
    this.supportsBinary = !opts.forceBase64;
  }
  /**
   * Transport name.
   *
   * @api public
   */
  get name() {
    return "websocket";
  }
  /**
   * Opens socket.
   *
   * @api private
   */
  doOpen() {
    if (!this.check()) {
      return;
    }
    const uri = this.uri();
    const protocols = this.opts.protocols;
    const opts = isReactNative ? {} : pick(
      this.opts,
      "agent",
      "perMessageDeflate",
      "pfx",
      "key",
      "passphrase",
      "cert",
      "ca",
      "ciphers",
      "rejectUnauthorized",
      "localAddress",
      "protocolVersion",
      "origin",
      "maxPayload",
      "family",
      "checkServerIdentity"
    );
    if (this.opts.extraHeaders) {
      opts.headers = this.opts.extraHeaders;
    }
    try {
      this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket$1(uri, protocols) : new WebSocket$1(uri) : new WebSocket$1(uri, protocols, opts);
    } catch (err) {
      return this.emit("error", err);
    }
    this.ws.binaryType = this.socket.binaryType || defaultBinaryType;
    this.addEventListeners();
  }
  /**
   * Adds event listeners to the socket
   *
   * @api private
   */
  addEventListeners() {
    this.ws.onopen = () => {
      if (this.opts.autoUnref) {
        this.ws._socket.unref();
      }
      this.onOpen();
    };
    this.ws.onclose = this.onClose.bind(this);
    this.ws.onmessage = (ev) => this.onData(ev.data);
    this.ws.onerror = (e) => this.onError("websocket error", e);
  }
  /**
   * Writes data to socket.
   *
   * @param {Array} array of packets.
   * @api private
   */
  write(packets) {
    const self2 = this;
    this.writable = false;
    let total = packets.length;
    let i2 = 0;
    const l2 = total;
    for (; i2 < l2; i2++) {
      (function(packet) {
        parser$2.encodePacket(packet, self2.supportsBinary, function(data) {
          const opts = {};
          if (!usingBrowserWebSocket) {
            if (packet.options) {
              opts.compress = packet.options.compress;
            }
            if (self2.opts.perMessageDeflate) {
              const len = "string" === typeof data ? Buffer.byteLength(data) : data.length;
              if (len < self2.opts.perMessageDeflate.threshold) {
                opts.compress = false;
              }
            }
          }
          try {
            if (usingBrowserWebSocket) {
              self2.ws.send(data);
            } else {
              self2.ws.send(data, opts);
            }
          } catch (e) {
            debug$3("websocket closed before onclose event");
          }
          --total || done();
        });
      })(packets[i2]);
    }
    function done() {
      self2.emit("flush");
      setTimeout(function() {
        self2.writable = true;
        self2.emit("drain");
      }, 0);
    }
  }
  /**
   * Called upon close
   *
   * @api private
   */
  onClose() {
    Transport2.prototype.onClose.call(this);
  }
  /**
   * Closes socket.
   *
   * @api private
   */
  doClose() {
    if (typeof this.ws !== "undefined") {
      this.ws.close();
      this.ws = null;
    }
  }
  /**
   * Generates uri for connection.
   *
   * @api private
   */
  uri() {
    let query2 = this.query || {};
    const schema = this.opts.secure ? "wss" : "ws";
    let port = "";
    if (this.opts.port && ("wss" === schema && Number(this.opts.port) !== 443 || "ws" === schema && Number(this.opts.port) !== 80)) {
      port = ":" + this.opts.port;
    }
    if (this.opts.timestampRequests) {
      query2[this.opts.timestampParam] = yeast();
    }
    if (!this.supportsBinary) {
      query2.b64 = 1;
    }
    query2 = parseqs$1.encode(query2);
    if (query2.length) {
      query2 = "?" + query2;
    }
    const ipv6 = this.opts.hostname.indexOf(":") !== -1;
    return schema + "://" + (ipv6 ? "[" + this.opts.hostname + "]" : this.opts.hostname) + port + this.opts.path + query2;
  }
  /**
   * Feature detection for WebSocket.
   *
   * @return {Boolean} whether this transport is available.
   * @api public
   */
  check() {
    return !!WebSocket$1 && !("__initialize" in WebSocket$1 && this.name === WS.prototype.name);
  }
}
var websocket$1 = WS;
const XMLHttpRequest$1 = xmlhttprequest;
const XHR2 = pollingXhrExports;
const JSONP = pollingJsonp;
const websocket = websocket$1;
transports$1.polling = polling;
transports$1.websocket = websocket;
function polling(opts) {
  let xhr;
  let xd = false;
  let xs = false;
  const jsonp = false !== opts.jsonp;
  if (typeof location !== "undefined") {
    const isSSL = "https:" === location.protocol;
    let port = location.port;
    if (!port) {
      port = isSSL ? 443 : 80;
    }
    xd = opts.hostname !== location.hostname || port !== opts.port;
    xs = opts.secure !== isSSL;
  }
  opts.xdomain = xd;
  opts.xscheme = xs;
  xhr = new XMLHttpRequest$1(opts);
  if ("open" in xhr && !opts.forceJSONP) {
    return new XHR2(opts);
  } else {
    if (!jsonp)
      throw new Error("JSONP disabled");
    return new JSONP(opts);
  }
}
const transports = transports$1;
const Emitter$1 = componentEmitterExports;
const debug$2 = browserExports("engine.io-client:socket");
const parser$1 = lib;
const parseuri2 = parseuri$2;
const parseqs = parseqs$3;
let Socket$2 = class Socket extends Emitter$1 {
  /**
   * Socket constructor.
   *
   * @param {String|Object} uri or options
   * @param {Object} options
   * @api public
   */
  constructor(uri, opts = {}) {
    super();
    if (uri && "object" === typeof uri) {
      opts = uri;
      uri = null;
    }
    if (uri) {
      uri = parseuri2(uri);
      opts.hostname = uri.host;
      opts.secure = uri.protocol === "https" || uri.protocol === "wss";
      opts.port = uri.port;
      if (uri.query)
        opts.query = uri.query;
    } else if (opts.host) {
      opts.hostname = parseuri2(opts.host).host;
    }
    this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol;
    if (opts.hostname && !opts.port) {
      opts.port = this.secure ? "443" : "80";
    }
    this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost");
    this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : this.secure ? 443 : 80);
    this.transports = opts.transports || ["polling", "websocket"];
    this.readyState = "";
    this.writeBuffer = [];
    this.prevBufferLen = 0;
    this.opts = Object.assign(
      {
        path: "/engine.io",
        agent: false,
        withCredentials: false,
        upgrade: true,
        jsonp: true,
        timestampParam: "t",
        rememberUpgrade: false,
        rejectUnauthorized: true,
        perMessageDeflate: {
          threshold: 1024
        },
        transportOptions: {}
      },
      opts
    );
    this.opts.path = this.opts.path.replace(/\/$/, "") + "/";
    if (typeof this.opts.query === "string") {
      this.opts.query = parseqs.decode(this.opts.query);
    }
    this.id = null;
    this.upgrades = null;
    this.pingInterval = null;
    this.pingTimeout = null;
    this.pingTimeoutTimer = null;
    if (typeof addEventListener === "function") {
      addEventListener(
        "beforeunload",
        () => {
          if (this.transport) {
            this.transport.removeAllListeners();
            this.transport.close();
          }
        },
        false
      );
      if (this.hostname !== "localhost") {
        this.offlineEventListener = () => {
          this.onClose("transport close");
        };
        addEventListener("offline", this.offlineEventListener, false);
      }
    }
    this.open();
  }
  /**
   * Creates transport of the given type.
   *
   * @param {String} transport name
   * @return {Transport}
   * @api private
   */
  createTransport(name2) {
    debug$2('creating transport "%s"', name2);
    const query2 = clone(this.opts.query);
    query2.EIO = parser$1.protocol;
    query2.transport = name2;
    if (this.id)
      query2.sid = this.id;
    const opts = Object.assign(
      {},
      this.opts.transportOptions[name2],
      this.opts,
      {
        query: query2,
        socket: this,
        hostname: this.hostname,
        secure: this.secure,
        port: this.port
      }
    );
    debug$2("options: %j", opts);
    return new transports[name2](opts);
  }
  /**
   * Initializes transport to use and starts probe.
   *
   * @api private
   */
  open() {
    let transport2;
    if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) {
      transport2 = "websocket";
    } else if (0 === this.transports.length) {
      const self2 = this;
      setTimeout(function() {
        self2.emit("error", "No transports available");
      }, 0);
      return;
    } else {
      transport2 = this.transports[0];
    }
    this.readyState = "opening";
    try {
      transport2 = this.createTransport(transport2);
    } catch (e) {
      debug$2("error while creating transport: %s", e);
      this.transports.shift();
      this.open();
      return;
    }
    transport2.open();
    this.setTransport(transport2);
  }
  /**
   * Sets the current transport. Disables the existing one (if any).
   *
   * @api private
   */
  setTransport(transport2) {
    debug$2("setting transport %s", transport2.name);
    const self2 = this;
    if (this.transport) {
      debug$2("clearing existing transport %s", this.transport.name);
      this.transport.removeAllListeners();
    }
    this.transport = transport2;
    transport2.on("drain", function() {
      self2.onDrain();
    }).on("packet", function(packet) {
      self2.onPacket(packet);
    }).on("error", function(e) {
      self2.onError(e);
    }).on("close", function() {
      self2.onClose("transport close");
    });
  }
  /**
   * Probes a transport.
   *
   * @param {String} transport name
   * @api private
   */
  probe(name2) {
    debug$2('probing transport "%s"', name2);
    let transport2 = this.createTransport(name2, { probe: 1 });
    let failed = false;
    const self2 = this;
    Socket.priorWebsocketSuccess = false;
    function onTransportOpen() {
      if (self2.onlyBinaryUpgrades) {
        const upgradeLosesBinary = !this.supportsBinary && self2.transport.supportsBinary;
        failed = failed || upgradeLosesBinary;
      }
      if (failed)
        return;
      debug$2('probe transport "%s" opened', name2);
      transport2.send([{ type: "ping", data: "probe" }]);
      transport2.once("packet", function(msg) {
        if (failed)
          return;
        if ("pong" === msg.type && "probe" === msg.data) {
          debug$2('probe transport "%s" pong', name2);
          self2.upgrading = true;
          self2.emit("upgrading", transport2);
          if (!transport2)
            return;
          Socket.priorWebsocketSuccess = "websocket" === transport2.name;
          debug$2('pausing current transport "%s"', self2.transport.name);
          self2.transport.pause(function() {
            if (failed)
              return;
            if ("closed" === self2.readyState)
              return;
            debug$2("changing transport and sending upgrade packet");
            cleanup();
            self2.setTransport(transport2);
            transport2.send([{ type: "upgrade" }]);
            self2.emit("upgrade", transport2);
            transport2 = null;
            self2.upgrading = false;
            self2.flush();
          });
        } else {
          debug$2('probe transport "%s" failed', name2);
          const err = new Error("probe error");
          err.transport = transport2.name;
          self2.emit("upgradeError", err);
        }
      });
    }
    function freezeTransport() {
      if (failed)
        return;
      failed = true;
      cleanup();
      transport2.close();
      transport2 = null;
    }
    function onerror(err) {
      const error2 = new Error("probe error: " + err);
      error2.transport = transport2.name;
      freezeTransport();
      debug$2('probe transport "%s" failed because of error: %s', name2, err);
      self2.emit("upgradeError", error2);
    }
    function onTransportClose() {
      onerror("transport closed");
    }
    function onclose() {
      onerror("socket closed");
    }
    function onupgrade(to) {
      if (transport2 && to.name !== transport2.name) {
        debug$2('"%s" works - aborting "%s"', to.name, transport2.name);
        freezeTransport();
      }
    }
    function cleanup() {
      transport2.removeListener("open", onTransportOpen);
      transport2.removeListener("error", onerror);
      transport2.removeListener("close", onTransportClose);
      self2.removeListener("close", onclose);
      self2.removeListener("upgrading", onupgrade);
    }
    transport2.once("open", onTransportOpen);
    transport2.once("error", onerror);
    transport2.once("close", onTransportClose);
    this.once("close", onclose);
    this.once("upgrading", onupgrade);
    transport2.open();
  }
  /**
   * Called when connection is deemed open.
   *
   * @api public
   */
  onOpen() {
    debug$2("socket open");
    this.readyState = "open";
    Socket.priorWebsocketSuccess = "websocket" === this.transport.name;
    this.emit("open");
    this.flush();
    if ("open" === this.readyState && this.opts.upgrade && this.transport.pause) {
      debug$2("starting upgrade probes");
      let i2 = 0;
      const l2 = this.upgrades.length;
      for (; i2 < l2; i2++) {
        this.probe(this.upgrades[i2]);
      }
    }
  }
  /**
   * Handles a packet.
   *
   * @api private
   */
  onPacket(packet) {
    if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
      debug$2('socket receive: type "%s", data "%s"', packet.type, packet.data);
      this.emit("packet", packet);
      this.emit("heartbeat");
      switch (packet.type) {
        case "open":
          this.onHandshake(JSON.parse(packet.data));
          break;
        case "ping":
          this.resetPingTimeout();
          this.sendPacket("pong");
          this.emit("pong");
          break;
        case "error":
          const err = new Error("server error");
          err.code = packet.data;
          this.onError(err);
          break;
        case "message":
          this.emit("data", packet.data);
          this.emit("message", packet.data);
          break;
      }
    } else {
      debug$2('packet received with socket readyState "%s"', this.readyState);
    }
  }
  /**
   * Called upon handshake completion.
   *
   * @param {Object} handshake obj
   * @api private
   */
  onHandshake(data) {
    this.emit("handshake", data);
    this.id = data.sid;
    this.transport.query.sid = data.sid;
    this.upgrades = this.filterUpgrades(data.upgrades);
    this.pingInterval = data.pingInterval;
    this.pingTimeout = data.pingTimeout;
    this.onOpen();
    if ("closed" === this.readyState)
      return;
    this.resetPingTimeout();
  }
  /**
   * Sets and resets ping timeout timer based on server pings.
   *
   * @api private
   */
  resetPingTimeout() {
    clearTimeout(this.pingTimeoutTimer);
    this.pingTimeoutTimer = setTimeout(() => {
      this.onClose("ping timeout");
    }, this.pingInterval + this.pingTimeout);
    if (this.opts.autoUnref) {
      this.pingTimeoutTimer.unref();
    }
  }
  /**
   * Called on `drain` event
   *
   * @api private
   */
  onDrain() {
    this.writeBuffer.splice(0, this.prevBufferLen);
    this.prevBufferLen = 0;
    if (0 === this.writeBuffer.length) {
      this.emit("drain");
    } else {
      this.flush();
    }
  }
  /**
   * Flush write buffers.
   *
   * @api private
   */
  flush() {
    if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {
      debug$2("flushing %d packets in socket", this.writeBuffer.length);
      this.transport.send(this.writeBuffer);
      this.prevBufferLen = this.writeBuffer.length;
      this.emit("flush");
    }
  }
  /**
   * Sends a message.
   *
   * @param {String} message.
   * @param {Function} callback function.
   * @param {Object} options.
   * @return {Socket} for chaining.
   * @api public
   */
  write(msg, options2, fn) {
    this.sendPacket("message", msg, options2, fn);
    return this;
  }
  send(msg, options2, fn) {
    this.sendPacket("message", msg, options2, fn);
    return this;
  }
  /**
   * Sends a packet.
   *
   * @param {String} packet type.
   * @param {String} data.
   * @param {Object} options.
   * @param {Function} callback function.
   * @api private
   */
  sendPacket(type2, data, options2, fn) {
    if ("function" === typeof data) {
      fn = data;
      data = void 0;
    }
    if ("function" === typeof options2) {
      fn = options2;
      options2 = null;
    }
    if ("closing" === this.readyState || "closed" === this.readyState) {
      return;
    }
    options2 = options2 || {};
    options2.compress = false !== options2.compress;
    const packet = {
      type: type2,
      data,
      options: options2
    };
    this.emit("packetCreate", packet);
    this.writeBuffer.push(packet);
    if (fn)
      this.once("flush", fn);
    this.flush();
  }
  /**
   * Closes the connection.
   *
   * @api private
   */
  close() {
    const self2 = this;
    if ("opening" === this.readyState || "open" === this.readyState) {
      this.readyState = "closing";
      if (this.writeBuffer.length) {
        this.once("drain", function() {
          if (this.upgrading) {
            waitForUpgrade();
          } else {
            close();
          }
        });
      } else if (this.upgrading) {
        waitForUpgrade();
      } else {
        close();
      }
    }
    function close() {
      self2.onClose("forced close");
      debug$2("socket closing - telling transport to close");
      self2.transport.close();
    }
    function cleanupAndClose() {
      self2.removeListener("upgrade", cleanupAndClose);
      self2.removeListener("upgradeError", cleanupAndClose);
      close();
    }
    function waitForUpgrade() {
      self2.once("upgrade", cleanupAndClose);
      self2.once("upgradeError", cleanupAndClose);
    }
    return this;
  }
  /**
   * Called upon transport error
   *
   * @api private
   */
  onError(err) {
    debug$2("socket error %j", err);
    Socket.priorWebsocketSuccess = false;
    this.emit("error", err);
    this.onClose("transport error", err);
  }
  /**
   * Called upon transport close.
   *
   * @api private
   */
  onClose(reason, desc) {
    if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
      debug$2('socket close with reason: "%s"', reason);
      const self2 = this;
      clearTimeout(this.pingIntervalTimer);
      clearTimeout(this.pingTimeoutTimer);
      this.transport.removeAllListeners("close");
      this.transport.close();
      this.transport.removeAllListeners();
      if (typeof removeEventListener === "function") {
        removeEventListener("offline", this.offlineEventListener, false);
      }
      this.readyState = "closed";
      this.id = null;
      this.emit("close", reason, desc);
      self2.writeBuffer = [];
      self2.prevBufferLen = 0;
    }
  }
  /**
   * Filters upgrades, returning only those matching client transports.
   *
   * @param {Array} server upgrades
   * @api private
   *
   */
  filterUpgrades(upgrades) {
    const filteredUpgrades = [];
    let i2 = 0;
    const j = upgrades.length;
    for (; i2 < j; i2++) {
      if (~this.transports.indexOf(upgrades[i2]))
        filteredUpgrades.push(upgrades[i2]);
    }
    return filteredUpgrades;
  }
};
Socket$2.priorWebsocketSuccess = false;
Socket$2.protocol = parser$1.protocol;
function clone(obj) {
  const o2 = {};
  for (let i2 in obj) {
    if (obj.hasOwnProperty(i2)) {
      o2[i2] = obj[i2];
    }
  }
  return o2;
}
var socket$1 = Socket$2;
const Socket$1 = socket$1;
lib$1.exports = (uri, opts) => new Socket$1(uri, opts);
libExports.Socket = Socket$1;
libExports.protocol = Socket$1.protocol;
libExports.Transport = transport;
libExports.transports = transports$1;
libExports.parser = lib;
var socket = {};
var dist = {};
var binary = {};
var isBinary$1 = {};
Object.defineProperty(isBinary$1, "__esModule", { value: true });
isBinary$1.hasBinary = isBinary$1.isBinary = void 0;
const withNativeBuffer = typeof Buffer === "function" && typeof Buffer.isBuffer === "function";
const withNativeArrayBuffer = typeof ArrayBuffer === "function";
const isView = (obj) => {
  return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;
};
const toString$1 = Object.prototype.toString;
const withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && toString$1.call(Blob) === "[object BlobConstructor]";
const withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString$1.call(File) === "[object FileConstructor]";
function isArrayBuffer(obj) {
  return typeof obj === "object" && obj !== null && toString$1.call(obj) === "[object ArrayBuffer]";
}
function isBinary(obj) {
  return withNativeArrayBuffer && (obj instanceof ArrayBuffer || isArrayBuffer(obj) || isView(obj)) || withNativeBlob && obj instanceof Blob || withNativeFile && obj instanceof File || withNativeBuffer && Buffer.isBuffer(obj);
}
isBinary$1.isBinary = isBinary;
function hasBinary(obj, known = [], toJSON = false) {
  if (!obj || typeof obj !== "object") {
    return false;
  }
  if (known.includes(obj)) {
    return false;
  }
  known.push(obj);
  if (Array.isArray(obj)) {
    for (let i2 = 0, l2 = obj.length; i2 < l2; i2++) {
      if (hasBinary(obj[i2], known)) {
        return true;
      }
    }
    return false;
  }
  if (isBinary(obj)) {
    return true;
  }
  if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 2) {
    return hasBinary(obj.toJSON(), known, true);
  }
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key], known)) {
      return true;
    }
  }
  return false;
}
isBinary$1.hasBinary = hasBinary;
Object.defineProperty(binary, "__esModule", { value: true });
binary.reconstructPacket = binary.deconstructPacket = void 0;
const is_binary_1 = isBinary$1;
function deconstructPacket(packet) {
  const buffers = [];
  const packetData = packet.data;
  const pack = packet;
  pack.data = _deconstructPacket(packetData, buffers, [], /* @__PURE__ */ new WeakMap());
  pack.attachments = buffers.length;
  return { packet: pack, buffers };
}
binary.deconstructPacket = deconstructPacket;
function _deconstructPacket(data, buffers, known, retvals) {
  if (!data)
    return data;
  if (is_binary_1.isBinary(data)) {
    const placeholder = { _placeholder: true, num: buffers.length };
    buffers.push(data);
    return placeholder;
  } else if (retvals.has(data)) {
    return retvals.get(data);
  } else if (known.includes(data)) {
    return data;
  }
  known.push(data);
  if (Array.isArray(data)) {
    const newData = new Array(data.length);
    retvals.set(data, newData);
    for (let i2 = 0; i2 < data.length; i2++) {
      newData[i2] = _deconstructPacket(data[i2], buffers, known, retvals);
    }
    return newData;
  } else if (typeof data === "object" && !(data instanceof Date)) {
    const newData = {};
    retvals.set(data, newData);
    for (const key in data) {
      if (Object.prototype.hasOwnProperty.call(data, key)) {
        newData[key] = _deconstructPacket(data[key], buffers, known, retvals);
      }
    }
    return newData;
  }
  return data;
}
function reconstructPacket(packet, buffers) {
  packet.data = _reconstructPacket(packet.data, buffers, []);
  packet.attachments = void 0;
  return packet;
}
binary.reconstructPacket = reconstructPacket;
function _reconstructPacket(data, buffers, known) {
  if (!data)
    return data;
  if (data && data._placeholder === true) {
    const isIndexValid = typeof data.num === "number" && data.num >= 0 && data.num < buffers.length;
    if (isIndexValid) {
      return buffers[data.num];
    } else {
      throw new Error("illegal attachments");
    }
  } else if (known.includes(data)) {
    return data;
  }
  known.push(data);
  if (Array.isArray(data)) {
    for (let i2 = 0; i2 < data.length; i2++) {
      data[i2] = _reconstructPacket(data[i2], buffers, known);
    }
  } else if (typeof data === "object") {
    for (const key in data) {
      if (data.hasOwnProperty(key)) {
        data[key] = _reconstructPacket(data[key], buffers, known);
      }
    }
  }
  return data;
}
/*!
Copyright (C) 2013-2017 by Andrea Giammarchi - @WebReflection

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

*/
var specialChar = "~", safeSpecialChar = "\\x" + ("0" + specialChar.charCodeAt(0).toString(16)).slice(-2), escapedSafeSpecialChar = "\\" + safeSpecialChar, specialCharRG = new RegExp(safeSpecialChar, "g"), safeSpecialCharRG = new RegExp(escapedSafeSpecialChar, "g"), safeStartWithSpecialCharRG = new RegExp("(?:^|([^\\\\]))" + escapedSafeSpecialChar), indexOf = [].indexOf || function(v) {
  for (var i2 = this.length; i2-- && this[i2] !== v; )
    ;
  return i2;
}, $String = String;
function generateReplacer(value, replacer2, resolve3) {
  var doNotIgnore = false, inspect2 = !!replacer2, path = [], all = [value], seen = [value], mapp = [resolve3 ? specialChar : "[Circular]"], last = value, lvl = 1, i2, fn;
  if (inspect2) {
    fn = typeof replacer2 === "object" ? function(key, value2) {
      return key !== "" && replacer2.indexOf(key) < 0 ? void 0 : value2;
    } : replacer2;
  }
  return function(key, value2) {
    if (inspect2)
      value2 = fn.call(this, key, value2);
    if (doNotIgnore) {
      if (last !== this) {
        i2 = lvl - indexOf.call(all, this) - 1;
        lvl -= i2;
        all.splice(lvl, all.length);
        path.splice(lvl - 1, path.length);
        last = this;
      }
      if (typeof value2 === "object" && value2) {
        if (indexOf.call(all, value2) < 0) {
          all.push(last = value2);
        }
        lvl = all.length;
        i2 = indexOf.call(seen, value2);
        if (i2 < 0) {
          i2 = seen.push(value2) - 1;
          if (resolve3) {
            path.push(("" + key).replace(specialCharRG, safeSpecialChar));
            mapp[i2] = specialChar + path.join(specialChar);
          } else {
            mapp[i2] = mapp[0];
          }
        } else {
          value2 = mapp[i2];
        }
      } else {
        if (typeof value2 === "string" && resolve3) {
          value2 = value2.replace(safeSpecialChar, escapedSafeSpecialChar).replace(specialChar, safeSpecialChar);
        }
      }
    } else {
      doNotIgnore = true;
    }
    return value2;
  };
}
function retrieveFromPath(current, keys) {
  for (var i2 = 0, length2 = keys.length; i2 < length2; current = current[
    // keys should be normalized back here
    keys[i2++].replace(safeSpecialCharRG, specialChar)
  ])
    ;
  return current;
}
function generateReviver(reviver) {
  return function(key, value) {
    var isString2 = typeof value === "string";
    if (isString2 && value.charAt(0) === specialChar) {
      return new $String(value.slice(1));
    }
    if (key === "")
      value = regenerate(value, value, {});
    if (isString2)
      value = value.replace(safeStartWithSpecialCharRG, "$1" + specialChar).replace(escapedSafeSpecialChar, safeSpecialChar);
    return reviver ? reviver.call(this, key, value) : value;
  };
}
function regenerateArray(root2, current, retrieve) {
  for (var i2 = 0, length2 = current.length; i2 < length2; i2++) {
    current[i2] = regenerate(root2, current[i2], retrieve);
  }
  return current;
}
function regenerateObject(root2, current, retrieve) {
  for (var key in current) {
    if (current.hasOwnProperty(key)) {
      current[key] = regenerate(root2, current[key], retrieve);
    }
  }
  return current;
}
function regenerate(root2, current, retrieve) {
  return current instanceof Array ? (
    // fast Array reconstruction
    regenerateArray(root2, current, retrieve)
  ) : current instanceof $String ? (
    // root is an empty string
    current.length ? retrieve.hasOwnProperty(current) ? retrieve[current] : retrieve[current] = retrieveFromPath(
      root2,
      current.split(specialChar)
    ) : root2
  ) : current instanceof Object ? (
    // dedicated Object parser
    regenerateObject(root2, current, retrieve)
  ) : (
    // value as it is
    current
  );
}
var CircularJSON = {
  stringify: function stringify2(value, replacer2, space, doNotResolve) {
    return CircularJSON.parser.stringify(
      value,
      generateReplacer(value, replacer2, !doNotResolve),
      space
    );
  },
  parse: function parse2(text3, reviver) {
    return CircularJSON.parser.parse(
      text3,
      generateReviver(reviver)
    );
  },
  // A parser should be an API 1:1 compatible with JSON
  // it should expose stringify and parse methods.
  // The default parser is the native JSON.
  parser: JSON
};
var circularJson_node = CircularJSON;
(function(exports) {
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;
  const Emitter2 = componentEmitterExports;
  const binary_1 = binary;
  const is_binary_12 = isBinary$1;
  const debug2 = browserExports("socket.io-parser");
  const CircularJSON2 = circularJson_node;
  exports.protocol = 5;
  var PacketType;
  (function(PacketType2) {
    PacketType2[PacketType2["CONNECT"] = 0] = "CONNECT";
    PacketType2[PacketType2["DISCONNECT"] = 1] = "DISCONNECT";
    PacketType2[PacketType2["EVENT"] = 2] = "EVENT";
    PacketType2[PacketType2["ACK"] = 3] = "ACK";
    PacketType2[PacketType2["CONNECT_ERROR"] = 4] = "CONNECT_ERROR";
    PacketType2[PacketType2["BINARY_EVENT"] = 5] = "BINARY_EVENT";
    PacketType2[PacketType2["BINARY_ACK"] = 6] = "BINARY_ACK";
  })(PacketType = exports.PacketType || (exports.PacketType = {}));
  class Encoder {
    /**
     * Encode a packet as a single string if non-binary, or as a
     * buffer sequence, depending on packet type.
     *
     * @param {Object} obj - packet object
     */
    encode(obj) {
      debug2("encoding packet %j", obj);
      if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {
        if (is_binary_12.hasBinary(obj)) {
          obj.type = obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK;
          return this.encodeAsBinary(obj);
        }
      }
      return [this.encodeAsString(obj)];
    }
    /**
     * Encode packet as string.
     */
    encodeAsString(obj) {
      let str = "" + obj.type;
      if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {
        str += obj.attachments + "-";
      }
      if (obj.nsp && "/" !== obj.nsp) {
        str += obj.nsp + ",";
      }
      if (null != obj.id) {
        str += obj.id;
      }
      if (null != obj.data) {
        str += CircularJSON2.stringify(obj.data);
      }
      debug2("encoded %j as %s", obj, str);
      return str;
    }
    /**
     * Encode packet as 'buffer sequence' by removing blobs, and
     * deconstructing packet into object with placeholders and
     * a list of buffers.
     */
    encodeAsBinary(obj) {
      const deconstruction = binary_1.deconstructPacket(obj);
      const pack = this.encodeAsString(deconstruction.packet);
      const buffers = deconstruction.buffers;
      buffers.unshift(pack);
      return buffers;
    }
  }
  exports.Encoder = Encoder;
  class Decoder extends Emitter2 {
    constructor() {
      super();
    }
    /**
     * Decodes an encoded packet string into packet JSON.
     *
     * @param {String} obj - encoded packet
     */
    add(obj) {
      let packet;
      if (typeof obj === "string") {
        if (this.reconstructor) {
          throw new Error("got plaintext data when reconstructing a packet");
        }
        packet = this.decodeString(obj);
        if (packet.type === PacketType.BINARY_EVENT || packet.type === PacketType.BINARY_ACK) {
          this.reconstructor = new BinaryReconstructor(packet);
          if (packet.attachments === 0) {
            super.emit("decoded", packet);
          }
        } else {
          super.emit("decoded", packet);
        }
      } else if (is_binary_12.isBinary(obj) || obj.base64) {
        if (!this.reconstructor) {
          throw new Error("got binary data when not reconstructing a packet");
        } else {
          packet = this.reconstructor.takeBinaryData(obj);
          if (packet) {
            this.reconstructor = null;
            super.emit("decoded", packet);
          }
        }
      } else {
        throw new Error("Unknown type: " + obj);
      }
    }
    /**
     * Decode a packet String (JSON data)
     *
     * @param {String} str
     * @return {Object} packet
     */
    decodeString(str) {
      let i2 = 0;
      const p2 = {
        type: Number(str.charAt(0))
      };
      if (PacketType[p2.type] === void 0) {
        throw new Error("unknown packet type " + p2.type);
      }
      if (p2.type === PacketType.BINARY_EVENT || p2.type === PacketType.BINARY_ACK) {
        const start = i2 + 1;
        while (str.charAt(++i2) !== "-" && i2 != str.length) {
        }
        const buf = str.substring(start, i2);
        if (buf != Number(buf) || str.charAt(i2) !== "-") {
          throw new Error("Illegal attachments");
        }
        p2.attachments = Number(buf);
      }
      if ("/" === str.charAt(i2 + 1)) {
        const start = i2 + 1;
        while (++i2) {
          const c2 = str.charAt(i2);
          if ("," === c2)
            break;
          if (i2 === str.length)
            break;
        }
        p2.nsp = str.substring(start, i2);
      } else {
        p2.nsp = "/";
      }
      const next = str.charAt(i2 + 1);
      if ("" !== next && Number(next) == next) {
        const start = i2 + 1;
        while (++i2) {
          const c2 = str.charAt(i2);
          if (null == c2 || Number(c2) != c2) {
            --i2;
            break;
          }
          if (i2 === str.length)
            break;
        }
        p2.id = Number(str.substring(start, i2 + 1));
      }
      if (str.charAt(++i2)) {
        const payload = tryParse(str.substr(i2));
        if (Decoder.isPayloadValid(p2.type, payload)) {
          p2.data = payload;
        } else {
          throw new Error("invalid payload");
        }
      }
      debug2("decoded %s as %j", str, p2);
      return p2;
    }
    static isPayloadValid(type2, payload) {
      switch (type2) {
        case PacketType.CONNECT:
          return typeof payload === "object";
        case PacketType.DISCONNECT:
          return payload === void 0;
        case PacketType.CONNECT_ERROR:
          return typeof payload === "string" || typeof payload === "object";
        case PacketType.EVENT:
        case PacketType.BINARY_EVENT:
          return Array.isArray(payload) && payload.length > 0;
        case PacketType.ACK:
        case PacketType.BINARY_ACK:
          return Array.isArray(payload);
      }
    }
    /**
     * Deallocates a parser's resources
     */
    destroy() {
      if (this.reconstructor) {
        this.reconstructor.finishedReconstruction();
      }
    }
  }
  exports.Decoder = Decoder;
  function tryParse(str) {
    try {
      return CircularJSON2.parse(str);
    } catch (e) {
      return false;
    }
  }
  class BinaryReconstructor {
    constructor(packet) {
      this.packet = packet;
      this.buffers = [];
      this.reconPack = packet;
    }
    /**
     * Method to be called when binary data received from connection
     * after a BINARY_EVENT packet.
     *
     * @param {Buffer | ArrayBuffer} binData - the raw binary data received
     * @return {null | Object} returns null if more binary data is expected or
     *   a reconstructed packet object if all buffers have been received.
     */
    takeBinaryData(binData) {
      this.buffers.push(binData);
      if (this.buffers.length === this.reconPack.attachments) {
        const packet = binary_1.reconstructPacket(this.reconPack, this.buffers);
        this.finishedReconstruction();
        return packet;
      }
      return null;
    }
    /**
     * Cleans up binary packet reconstruction variables.
     */
    finishedReconstruction() {
      this.reconPack = null;
      this.buffers = [];
    }
  }
})(dist);
var on$1 = {};
Object.defineProperty(on$1, "__esModule", { value: true });
on$1.on = void 0;
function on(obj, ev, fn) {
  obj.on(ev, fn);
  return function subDestroy() {
    obj.off(ev, fn);
  };
}
on$1.on = on;
var typedEvents = {};
Object.defineProperty(typedEvents, "__esModule", { value: true });
typedEvents.StrictEventEmitter = void 0;
const Emitter = componentEmitterExports;
class StrictEventEmitter extends Emitter {
  /**
   * Adds the `listener` function as an event listener for `ev`.
   *
   * @param ev Name of the event
   * @param listener Callback function
   */
  on(ev, listener) {
    super.on(ev, listener);
    return this;
  }
  /**
   * Adds a one-time `listener` function as an event listener for `ev`.
   *
   * @param ev Name of the event
   * @param listener Callback function
   */
  once(ev, listener) {
    super.once(ev, listener);
    return this;
  }
  /**
   * Emits an event.
   *
   * @param ev Name of the event
   * @param args Values to send to listeners of this event
   */
  emit(ev, ...args) {
    super.emit(ev, ...args);
    return this;
  }
  /**
   * Emits a reserved event.
   *
   * This method is `protected`, so that only a class extending
   * `StrictEventEmitter` can emit its own reserved events.
   *
   * @param ev Reserved event name
   * @param args Arguments to emit along with the event
   */
  emitReserved(ev, ...args) {
    super.emit(ev, ...args);
    return this;
  }
  /**
   * Returns the listeners listening to an event.
   *
   * @param event Event name
   * @returns Array of listeners subscribed to `event`
   */
  listeners(event) {
    return super.listeners(event);
  }
}
typedEvents.StrictEventEmitter = StrictEventEmitter;
Object.defineProperty(socket, "__esModule", { value: true });
socket.Socket = void 0;
const socket_io_parser_1 = dist;
const on_1$1 = on$1;
const typed_events_1$1 = typedEvents;
const debug$1 = browserExports("socket.io-client:socket");
const RESERVED_EVENTS = Object.freeze({
  connect: 1,
  connect_error: 1,
  disconnect: 1,
  disconnecting: 1,
  // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener
  newListener: 1,
  removeListener: 1
});
class Socket2 extends typed_events_1$1.StrictEventEmitter {
  /**
   * `Socket` constructor.
   *
   * @public
   */
  constructor(io2, nsp, opts) {
    super();
    this.receiveBuffer = [];
    this.sendBuffer = [];
    this.ids = 0;
    this.acks = {};
    this.flags = {};
    this.io = io2;
    this.nsp = nsp;
    this.ids = 0;
    this.acks = {};
    this.receiveBuffer = [];
    this.sendBuffer = [];
    this.connected = false;
    this.disconnected = true;
    this.flags = {};
    if (opts && opts.auth) {
      this.auth = opts.auth;
    }
    if (this.io._autoConnect)
      this.open();
  }
  /**
   * Subscribe to open, close and packet events
   *
   * @private
   */
  subEvents() {
    if (this.subs)
      return;
    const io2 = this.io;
    this.subs = [
      on_1$1.on(io2, "open", this.onopen.bind(this)),
      on_1$1.on(io2, "packet", this.onpacket.bind(this)),
      on_1$1.on(io2, "error", this.onerror.bind(this)),
      on_1$1.on(io2, "close", this.onclose.bind(this))
    ];
  }
  /**
   * Whether the Socket will try to reconnect when its Manager connects or reconnects
   */
  get active() {
    return !!this.subs;
  }
  /**
   * "Opens" the socket.
   *
   * @public
   */
  connect() {
    if (this.connected)
      return this;
    this.subEvents();
    if (!this.io["_reconnecting"])
      this.io.open();
    if ("open" === this.io._readyState)
      this.onopen();
    return this;
  }
  /**
   * Alias for connect()
   */
  open() {
    return this.connect();
  }
  /**
   * Sends a `message` event.
   *
   * @return self
   * @public
   */
  send(...args) {
    args.unshift("message");
    this.emit.apply(this, args);
    return this;
  }
  /**
   * Override `emit`.
   * If the event is in `events`, it's emitted normally.
   *
   * @return self
   * @public
   */
  emit(ev, ...args) {
    if (RESERVED_EVENTS.hasOwnProperty(ev)) {
      throw new Error('"' + ev + '" is a reserved event name');
    }
    args.unshift(ev);
    const packet = {
      type: socket_io_parser_1.PacketType.EVENT,
      data: args
    };
    packet.options = {};
    packet.options.compress = this.flags.compress !== false;
    if ("function" === typeof args[args.length - 1]) {
      debug$1("emitting packet with ack id %d", this.ids);
      this.acks[this.ids] = args.pop();
      packet.id = this.ids++;
    }
    const isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;
    const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);
    if (discardPacket) {
      debug$1("discard packet as the transport is not currently writable");
    } else if (this.connected) {
      this.packet(packet);
    } else {
      this.sendBuffer.push(packet);
    }
    this.flags = {};
    return this;
  }
  /**
   * Sends a packet.
   *
   * @param packet
   * @private
   */
  packet(packet) {
    packet.nsp = this.nsp;
    this.io._packet(packet);
  }
  /**
   * Called upon engine `open`.
   *
   * @private
   */
  onopen() {
    debug$1("transport is open - connecting");
    if (typeof this.auth == "function") {
      this.auth((data) => {
        this.packet({ type: socket_io_parser_1.PacketType.CONNECT, data });
      });
    } else {
      this.packet({ type: socket_io_parser_1.PacketType.CONNECT, data: this.auth });
    }
  }
  /**
   * Called upon engine or manager `error`.
   *
   * @param err
   * @private
   */
  onerror(err) {
    if (!this.connected) {
      this.emitReserved("connect_error", err);
    }
  }
  /**
   * Called upon engine `close`.
   *
   * @param reason
   * @private
   */
  onclose(reason) {
    debug$1("close (%s)", reason);
    this.connected = false;
    this.disconnected = true;
    delete this.id;
    this.emitReserved("disconnect", reason);
  }
  /**
   * Called with socket packet.
   *
   * @param packet
   * @private
   */
  onpacket(packet) {
    const sameNamespace = packet.nsp === this.nsp;
    if (!sameNamespace)
      return;
    switch (packet.type) {
      case socket_io_parser_1.PacketType.CONNECT:
        if (packet.data && packet.data.sid) {
          const id2 = packet.data.sid;
          this.onconnect(id2);
        } else {
          this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));
        }
        break;
      case socket_io_parser_1.PacketType.EVENT:
        this.onevent(packet);
        break;
      case socket_io_parser_1.PacketType.BINARY_EVENT:
        this.onevent(packet);
        break;
      case socket_io_parser_1.PacketType.ACK:
        this.onack(packet);
        break;
      case socket_io_parser_1.PacketType.BINARY_ACK:
        this.onack(packet);
        break;
      case socket_io_parser_1.PacketType.DISCONNECT:
        this.ondisconnect();
        break;
      case socket_io_parser_1.PacketType.CONNECT_ERROR:
        const err = new Error(packet.data.message);
        err.data = packet.data.data;
        this.emitReserved("connect_error", err);
        break;
    }
  }
  /**
   * Called upon a server event.
   *
   * @param packet
   * @private
   */
  onevent(packet) {
    const args = packet.data || [];
    debug$1("emitting event %j", args);
    if (null != packet.id) {
      debug$1("attaching ack callback to event");
      args.push(this.ack(packet.id));
    }
    if (this.connected) {
      this.emitEvent(args);
    } else {
      this.receiveBuffer.push(Object.freeze(args));
    }
  }
  emitEvent(args) {
    if (this._anyListeners && this._anyListeners.length) {
      const listeners = this._anyListeners.slice();
      for (const listener of listeners) {
        listener.apply(this, args);
      }
    }
    super.emit.apply(this, args);
  }
  /**
   * Produces an ack callback to emit with an event.
   *
   * @private
   */
  ack(id2) {
    const self2 = this;
    let sent = false;
    return function(...args) {
      if (sent)
        return;
      sent = true;
      debug$1("sending ack %j", args);
      self2.packet({
        type: socket_io_parser_1.PacketType.ACK,
        id: id2,
        data: args
      });
    };
  }
  /**
   * Called upon a server acknowlegement.
   *
   * @param packet
   * @private
   */
  onack(packet) {
    const ack = this.acks[packet.id];
    if ("function" === typeof ack) {
      debug$1("calling ack %s with %j", packet.id, packet.data);
      ack.apply(this, packet.data);
      delete this.acks[packet.id];
    } else {
      debug$1("bad ack %s", packet.id);
    }
  }
  /**
   * Called upon server connect.
   *
   * @private
   */
  onconnect(id2) {
    debug$1("socket connected with id %s", id2);
    this.id = id2;
    this.connected = true;
    this.disconnected = false;
    this.emitReserved("connect");
    this.emitBuffered();
  }
  /**
   * Emit buffered events (received and emitted).
   *
   * @private
   */
  emitBuffered() {
    this.receiveBuffer.forEach((args) => this.emitEvent(args));
    this.receiveBuffer = [];
    this.sendBuffer.forEach((packet) => this.packet(packet));
    this.sendBuffer = [];
  }
  /**
   * Called upon server disconnect.
   *
   * @private
   */
  ondisconnect() {
    debug$1("server disconnect (%s)", this.nsp);
    this.destroy();
    this.onclose("io server disconnect");
  }
  /**
   * Called upon forced client/server side disconnections,
   * this method ensures the manager stops tracking us and
   * that reconnections don't get triggered for this.
   *
   * @private
   */
  destroy() {
    if (this.subs) {
      this.subs.forEach((subDestroy) => subDestroy());
      this.subs = void 0;
    }
    this.io["_destroy"](this);
  }
  /**
   * Disconnects the socket manually.
   *
   * @return self
   * @public
   */
  disconnect() {
    if (this.connected) {
      debug$1("performing disconnect (%s)", this.nsp);
      this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });
    }
    this.destroy();
    if (this.connected) {
      this.onclose("io client disconnect");
    }
    return this;
  }
  /**
   * Alias for disconnect()
   *
   * @return self
   * @public
   */
  close() {
    return this.disconnect();
  }
  /**
   * Sets the compress flag.
   *
   * @param compress - if `true`, compresses the sending data
   * @return self
   * @public
   */
  compress(compress) {
    this.flags.compress = compress;
    return this;
  }
  /**
   * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not
   * ready to send messages.
   *
   * @returns self
   * @public
   */
  get volatile() {
    this.flags.volatile = true;
    return this;
  }
  /**
   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
   * callback.
   *
   * @param listener
   * @public
   */
  onAny(listener) {
    this._anyListeners = this._anyListeners || [];
    this._anyListeners.push(listener);
    return this;
  }
  /**
   * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
   * callback. The listener is added to the beginning of the listeners array.
   *
   * @param listener
   * @public
   */
  prependAny(listener) {
    this._anyListeners = this._anyListeners || [];
    this._anyListeners.unshift(listener);
    return this;
  }
  /**
   * Removes the listener that will be fired when any event is emitted.
   *
   * @param listener
   * @public
   */
  offAny(listener) {
    if (!this._anyListeners) {
      return this;
    }
    if (listener) {
      const listeners = this._anyListeners;
      for (let i2 = 0; i2 < listeners.length; i2++) {
        if (listener === listeners[i2]) {
          listeners.splice(i2, 1);
          return this;
        }
      }
    } else {
      this._anyListeners = [];
    }
    return this;
  }
  /**
   * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
   * e.g. to remove listeners.
   *
   * @public
   */
  listenersAny() {
    return this._anyListeners || [];
  }
}
socket.Socket = Socket2;
var backo2 = Backoff$1;
function Backoff$1(opts) {
  opts = opts || {};
  this.ms = opts.min || 100;
  this.max = opts.max || 1e4;
  this.factor = opts.factor || 2;
  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
  this.attempts = 0;
}
Backoff$1.prototype.duration = function() {
  var ms2 = this.ms * Math.pow(this.factor, this.attempts++);
  if (this.jitter) {
    var rand = Math.random();
    var deviation = Math.floor(rand * this.jitter * ms2);
    ms2 = (Math.floor(rand * 10) & 1) == 0 ? ms2 - deviation : ms2 + deviation;
  }
  return Math.min(ms2, this.max) | 0;
};
Backoff$1.prototype.reset = function() {
  this.attempts = 0;
};
Backoff$1.prototype.setMin = function(min2) {
  this.ms = min2;
};
Backoff$1.prototype.setMax = function(max2) {
  this.max = max2;
};
Backoff$1.prototype.setJitter = function(jitter) {
  this.jitter = jitter;
};
Object.defineProperty(manager, "__esModule", { value: true });
manager.Manager = void 0;
const eio = libExports;
const socket_1 = socket;
const parser = dist;
const on_1 = on$1;
const Backoff = backo2;
const typed_events_1 = typedEvents;
const debug = browserExports("socket.io-client:manager");
class Manager extends typed_events_1.StrictEventEmitter {
  constructor(uri, opts) {
    super();
    this.nsps = {};
    this.subs = [];
    if (uri && "object" === typeof uri) {
      opts = uri;
      uri = void 0;
    }
    opts = opts || {};
    opts.path = opts.path || "/socket.io";
    this.opts = opts;
    this.reconnection(opts.reconnection !== false);
    this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
    this.reconnectionDelay(opts.reconnectionDelay || 1e3);
    this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3);
    this.randomizationFactor(opts.randomizationFactor || 0.5);
    this.backoff = new Backoff({
      min: this.reconnectionDelay(),
      max: this.reconnectionDelayMax(),
      jitter: this.randomizationFactor()
    });
    this.timeout(null == opts.timeout ? 2e4 : opts.timeout);
    this._readyState = "closed";
    this.uri = uri;
    const _parser = opts.parser || parser;
    this.encoder = new _parser.Encoder();
    this.decoder = new _parser.Decoder();
    this._autoConnect = opts.autoConnect !== false;
    if (this._autoConnect)
      this.open();
  }
  reconnection(v) {
    if (!arguments.length)
      return this._reconnection;
    this._reconnection = !!v;
    return this;
  }
  reconnectionAttempts(v) {
    if (v === void 0)
      return this._reconnectionAttempts;
    this._reconnectionAttempts = v;
    return this;
  }
  reconnectionDelay(v) {
    var _a2;
    if (v === void 0)
      return this._reconnectionDelay;
    this._reconnectionDelay = v;
    (_a2 = this.backoff) === null || _a2 === void 0 ? void 0 : _a2.setMin(v);
    return this;
  }
  randomizationFactor(v) {
    var _a2;
    if (v === void 0)
      return this._randomizationFactor;
    this._randomizationFactor = v;
    (_a2 = this.backoff) === null || _a2 === void 0 ? void 0 : _a2.setJitter(v);
    return this;
  }
  reconnectionDelayMax(v) {
    var _a2;
    if (v === void 0)
      return this._reconnectionDelayMax;
    this._reconnectionDelayMax = v;
    (_a2 = this.backoff) === null || _a2 === void 0 ? void 0 : _a2.setMax(v);
    return this;
  }
  timeout(v) {
    if (!arguments.length)
      return this._timeout;
    this._timeout = v;
    return this;
  }
  /**
   * Starts trying to reconnect if reconnection is enabled and we have not
   * started reconnecting yet
   *
   * @private
   */
  maybeReconnectOnOpen() {
    if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {
      this.reconnect();
    }
  }
  /**
   * Sets the current transport `socket`.
   *
   * @param {Function} fn - optional, callback
   * @return self
   * @public
   */
  open(fn) {
    debug("readyState %s", this._readyState);
    if (~this._readyState.indexOf("open"))
      return this;
    debug("opening %s", this.uri);
    this.engine = eio(this.uri, this.opts);
    const socket2 = this.engine;
    const self2 = this;
    this._readyState = "opening";
    this.skipReconnect = false;
    const openSubDestroy = on_1.on(socket2, "open", function() {
      self2.onopen();
      fn && fn();
    });
    const errorSub = on_1.on(socket2, "error", (err) => {
      debug("error");
      self2.cleanup();
      self2._readyState = "closed";
      this.emitReserved("error", err);
      if (fn) {
        fn(err);
      } else {
        self2.maybeReconnectOnOpen();
      }
    });
    if (false !== this._timeout) {
      const timeout = this._timeout;
      debug("connect attempt will timeout after %d", timeout);
      if (timeout === 0) {
        openSubDestroy();
      }
      const timer = setTimeout(() => {
        debug("connect attempt timed out after %d", timeout);
        openSubDestroy();
        socket2.close();
        socket2.emit("error", new Error("timeout"));
      }, timeout);
      if (this.opts.autoUnref) {
        timer.unref();
      }
      this.subs.push(function subDestroy() {
        clearTimeout(timer);
      });
    }
    this.subs.push(openSubDestroy);
    this.subs.push(errorSub);
    return this;
  }
  /**
   * Alias for open()
   *
   * @return self
   * @public
   */
  connect(fn) {
    return this.open(fn);
  }
  /**
   * Called upon transport open.
   *
   * @private
   */
  onopen() {
    debug("open");
    this.cleanup();
    this._readyState = "open";
    this.emitReserved("open");
    const socket2 = this.engine;
    this.subs.push(on_1.on(socket2, "ping", this.onping.bind(this)), on_1.on(socket2, "data", this.ondata.bind(this)), on_1.on(socket2, "error", this.onerror.bind(this)), on_1.on(socket2, "close", this.onclose.bind(this)), on_1.on(this.decoder, "decoded", this.ondecoded.bind(this)));
  }
  /**
   * Called upon a ping.
   *
   * @private
   */
  onping() {
    this.emitReserved("ping");
  }
  /**
   * Called with data.
   *
   * @private
   */
  ondata(data) {
    this.decoder.add(data);
  }
  /**
   * Called when parser fully decodes a packet.
   *
   * @private
   */
  ondecoded(packet) {
    this.emitReserved("packet", packet);
  }
  /**
   * Called upon socket error.
   *
   * @private
   */
  onerror(err) {
    debug("error", err);
    this.emitReserved("error", err);
  }
  /**
   * Creates a new socket for the given `nsp`.
   *
   * @return {Socket}
   * @public
   */
  socket(nsp, opts) {
    let socket2 = this.nsps[nsp];
    if (!socket2) {
      socket2 = new socket_1.Socket(this, nsp, opts);
      this.nsps[nsp] = socket2;
    }
    return socket2;
  }
  /**
   * Called upon a socket close.
   *
   * @param socket
   * @private
   */
  _destroy(socket2) {
    const nsps = Object.keys(this.nsps);
    for (const nsp of nsps) {
      const socket3 = this.nsps[nsp];
      if (socket3.active) {
        debug("socket %s is still active, skipping close", nsp);
        return;
      }
    }
    this._close();
  }
  /**
   * Writes a packet.
   *
   * @param packet
   * @private
   */
  _packet(packet) {
    debug("writing packet %j", packet);
    const encodedPackets = this.encoder.encode(packet);
    for (let i2 = 0; i2 < encodedPackets.length; i2++) {
      this.engine.write(encodedPackets[i2], packet.options);
    }
  }
  /**
   * Clean up transport subscriptions and packet buffer.
   *
   * @private
   */
  cleanup() {
    debug("cleanup");
    this.subs.forEach((subDestroy) => subDestroy());
    this.subs.length = 0;
    this.decoder.destroy();
  }
  /**
   * Close the current socket.
   *
   * @private
   */
  _close() {
    debug("disconnect");
    this.skipReconnect = true;
    this._reconnecting = false;
    if ("opening" === this._readyState) {
      this.cleanup();
    }
    this.backoff.reset();
    this._readyState = "closed";
    if (this.engine)
      this.engine.close();
  }
  /**
   * Alias for close()
   *
   * @private
   */
  disconnect() {
    return this._close();
  }
  /**
   * Called upon engine close.
   *
   * @private
   */
  onclose(reason) {
    debug("onclose");
    this.cleanup();
    this.backoff.reset();
    this._readyState = "closed";
    this.emitReserved("close", reason);
    if (this._reconnection && !this.skipReconnect) {
      this.reconnect();
    }
  }
  /**
   * Attempt a reconnection.
   *
   * @private
   */
  reconnect() {
    if (this._reconnecting || this.skipReconnect)
      return this;
    const self2 = this;
    if (this.backoff.attempts >= this._reconnectionAttempts) {
      debug("reconnect failed");
      this.backoff.reset();
      this.emitReserved("reconnect_failed");
      this._reconnecting = false;
    } else {
      const delay = this.backoff.duration();
      debug("will wait %dms before reconnect attempt", delay);
      this._reconnecting = true;
      const timer = setTimeout(() => {
        if (self2.skipReconnect)
          return;
        debug("attempting reconnect");
        this.emitReserved("reconnect_attempt", self2.backoff.attempts);
        if (self2.skipReconnect)
          return;
        self2.open((err) => {
          if (err) {
            debug("reconnect attempt error");
            self2._reconnecting = false;
            self2.reconnect();
            this.emitReserved("reconnect_error", err);
          } else {
            debug("reconnect success");
            self2.onreconnect();
          }
        });
      }, delay);
      if (this.opts.autoUnref) {
        timer.unref();
      }
      this.subs.push(function subDestroy() {
        clearTimeout(timer);
      });
    }
  }
  /**
   * Called upon successful reconnect.
   *
   * @private
   */
  onreconnect() {
    const attempt = this.backoff.attempts;
    this._reconnecting = false;
    this.backoff.reset();
    this.emitReserved("reconnect", attempt);
  }
}
manager.Manager = Manager;
(function(module, exports) {
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Socket = exports.io = exports.Manager = exports.protocol = void 0;
  const url_1 = url$1;
  const manager_1 = manager;
  const socket_12 = socket;
  Object.defineProperty(exports, "Socket", { enumerable: true, get: function() {
    return socket_12.Socket;
  } });
  const debug2 = browserExports("socket.io-client");
  module.exports = exports = lookup;
  const cache2 = exports.managers = {};
  function lookup(uri, opts) {
    if (typeof uri === "object") {
      opts = uri;
      uri = void 0;
    }
    opts = opts || {};
    const parsed = url_1.url(uri, opts.path);
    const source = parsed.source;
    const id2 = parsed.id;
    const path = parsed.path;
    const sameNamespace = cache2[id2] && path in cache2[id2]["nsps"];
    const newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace;
    let io2;
    if (newConnection) {
      debug2("ignoring socket cache for %s", source);
      io2 = new manager_1.Manager(source, opts);
    } else {
      if (!cache2[id2]) {
        debug2("new io instance for %s", source);
        cache2[id2] = new manager_1.Manager(source, opts);
      }
      io2 = cache2[id2];
    }
    if (parsed.query && !opts.query) {
      opts.query = parsed.queryKey;
    }
    return io2.socket(parsed.path, opts);
  }
  exports.io = lookup;
  var socket_io_parser_12 = dist;
  Object.defineProperty(exports, "protocol", { enumerable: true, get: function() {
    return socket_io_parser_12.protocol;
  } });
  exports.connect = lookup;
  var manager_2 = manager;
  Object.defineProperty(exports, "Manager", { enumerable: true, get: function() {
    return manager_2.Manager;
  } });
  exports.default = lookup;
})(build, buildExports);
const io = /* @__PURE__ */ getDefaultExportFromCjs$1(buildExports);
io.Manager;
const baseHasOwnProperty = Object.prototype.hasOwnProperty;
function isObject(val) {
  return typeof val === "object" && val !== null;
}
function areGraphQLErrors(obj) {
  return Array.isArray(obj) && // must be at least one error
  obj.length > 0 && // error has at least a message
  obj.every((ob) => "message" in ob);
}
function hasOwnProperty(obj, prop2) {
  return baseHasOwnProperty.call(obj, prop2);
}
function hasOwnObjectProperty(obj, prop2) {
  return baseHasOwnProperty.call(obj, prop2) && isObject(obj[prop2]);
}
function hasOwnStringProperty(obj, prop2) {
  return baseHasOwnProperty.call(obj, prop2) && typeof obj[prop2] === "string";
}
function limitCloseReason(reason, whenTooLong) {
  return reason.length < 124 ? reason : whenTooLong;
}
const GRAPHQL_TRANSPORT_WS_PROTOCOL = "graphql-transport-ws";
var CloseCode;
(function(CloseCode2) {
  CloseCode2[CloseCode2["InternalServerError"] = 4500] = "InternalServerError";
  CloseCode2[CloseCode2["InternalClientError"] = 4005] = "InternalClientError";
  CloseCode2[CloseCode2["BadRequest"] = 4400] = "BadRequest";
  CloseCode2[CloseCode2["BadResponse"] = 4004] = "BadResponse";
  CloseCode2[CloseCode2["Unauthorized"] = 4401] = "Unauthorized";
  CloseCode2[CloseCode2["Forbidden"] = 4403] = "Forbidden";
  CloseCode2[CloseCode2["SubprotocolNotAcceptable"] = 4406] = "SubprotocolNotAcceptable";
  CloseCode2[CloseCode2["ConnectionInitialisationTimeout"] = 4408] = "ConnectionInitialisationTimeout";
  CloseCode2[CloseCode2["ConnectionAcknowledgementTimeout"] = 4504] = "ConnectionAcknowledgementTimeout";
  CloseCode2[CloseCode2["SubscriberAlreadyExists"] = 4409] = "SubscriberAlreadyExists";
  CloseCode2[CloseCode2["TooManyInitialisationRequests"] = 4429] = "TooManyInitialisationRequests";
})(CloseCode || (CloseCode = {}));
var MessageType;
(function(MessageType2) {
  MessageType2["ConnectionInit"] = "connection_init";
  MessageType2["ConnectionAck"] = "connection_ack";
  MessageType2["Ping"] = "ping";
  MessageType2["Pong"] = "pong";
  MessageType2["Subscribe"] = "subscribe";
  MessageType2["Next"] = "next";
  MessageType2["Error"] = "error";
  MessageType2["Complete"] = "complete";
})(MessageType || (MessageType = {}));
function isMessage(val) {
  if (isObject(val)) {
    if (!hasOwnStringProperty(val, "type")) {
      return false;
    }
    switch (val.type) {
      case MessageType.ConnectionInit:
        return !hasOwnProperty(val, "payload") || val.payload === void 0 || isObject(val.payload);
      case MessageType.ConnectionAck:
      case MessageType.Ping:
      case MessageType.Pong:
        return !hasOwnProperty(val, "payload") || val.payload === void 0 || isObject(val.payload);
      case MessageType.Subscribe:
        return hasOwnStringProperty(val, "id") && hasOwnObjectProperty(val, "payload") && (!hasOwnProperty(val.payload, "operationName") || val.payload.operationName === void 0 || val.payload.operationName === null || typeof val.payload.operationName === "string") && hasOwnStringProperty(val.payload, "query") && (!hasOwnProperty(val.payload, "variables") || val.payload.variables === void 0 || val.payload.variables === null || hasOwnObjectProperty(val.payload, "variables")) && (!hasOwnProperty(val.payload, "extensions") || val.payload.extensions === void 0 || val.payload.extensions === null || hasOwnObjectProperty(val.payload, "extensions"));
      case MessageType.Next:
        return hasOwnStringProperty(val, "id") && hasOwnObjectProperty(val, "payload");
      case MessageType.Error:
        return hasOwnStringProperty(val, "id") && areGraphQLErrors(val.payload);
      case MessageType.Complete:
        return hasOwnStringProperty(val, "id");
      default:
        return false;
    }
  }
  return false;
}
function parseMessage(data, reviver) {
  if (isMessage(data)) {
    return data;
  }
  if (typeof data !== "string") {
    throw new Error("Message not parsable");
  }
  const message = JSON.parse(data, reviver);
  if (!isMessage(message)) {
    throw new Error("Invalid message");
  }
  return message;
}
function stringifyMessage(msg, replacer2) {
  if (!isMessage(msg)) {
    throw new Error("Cannot stringify invalid message");
  }
  return JSON.stringify(msg, replacer2);
}
function createClient(options2) {
  const {
    url: url2,
    connectionParams,
    lazy = true,
    onNonLazyError = console.error,
    lazyCloseTimeout = 0,
    keepAlive = 0,
    disablePong,
    connectionAckWaitTimeout = 0,
    retryAttempts = 5,
    retryWait = async function randomisedExponentialBackoff(retries2) {
      let retryDelay = 1e3;
      for (let i2 = 0; i2 < retries2; i2++) {
        retryDelay *= 2;
      }
      await new Promise((resolve3) => setTimeout(resolve3, retryDelay + // add random timeout from 300ms to 3s
      Math.floor(Math.random() * (3e3 - 300) + 300)));
    },
    isFatalConnectionProblem = (errOrCloseEvent) => (
      // non `CloseEvent`s are fatal by default
      !isLikeCloseEvent(errOrCloseEvent)
    ),
    on: on2,
    webSocketImpl,
    /**
     * Generates a v4 UUID to be used as the ID using `Math`
     * as the random number generator. Supply your own generator
     * in case you need more uniqueness.
     *
     * Reference: https://gist.github.com/jed/982883
     */
    generateID = function generateUUID() {
      return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c2) => {
        const r2 = Math.random() * 16 | 0, v = c2 == "x" ? r2 : r2 & 3 | 8;
        return v.toString(16);
      });
    },
    jsonMessageReplacer: replacer2,
    jsonMessageReviver: reviver
  } = options2;
  let ws;
  if (webSocketImpl) {
    if (!isWebSocket(webSocketImpl)) {
      throw new Error("Invalid WebSocket implementation provided");
    }
    ws = webSocketImpl;
  } else if (typeof WebSocket !== "undefined") {
    ws = WebSocket;
  } else if (typeof global !== "undefined") {
    ws = global.WebSocket || // @ts-expect-error: Support more browsers
    global.MozWebSocket;
  } else if (typeof window !== "undefined") {
    ws = window.WebSocket || // @ts-expect-error: Support more browsers
    window.MozWebSocket;
  }
  if (!ws)
    throw new Error("WebSocket implementation missing");
  const WebSocketImpl = ws;
  const emitter = (() => {
    const message = (() => {
      const listeners2 = {};
      return {
        on(id2, listener) {
          listeners2[id2] = listener;
          return () => {
            delete listeners2[id2];
          };
        },
        emit(message2) {
          var _a2;
          if ("id" in message2)
            (_a2 = listeners2[message2.id]) === null || _a2 === void 0 ? void 0 : _a2.call(listeners2, message2);
        }
      };
    })();
    const listeners = {
      connecting: (on2 === null || on2 === void 0 ? void 0 : on2.connecting) ? [on2.connecting] : [],
      opened: (on2 === null || on2 === void 0 ? void 0 : on2.opened) ? [on2.opened] : [],
      connected: (on2 === null || on2 === void 0 ? void 0 : on2.connected) ? [on2.connected] : [],
      ping: (on2 === null || on2 === void 0 ? void 0 : on2.ping) ? [on2.ping] : [],
      pong: (on2 === null || on2 === void 0 ? void 0 : on2.pong) ? [on2.pong] : [],
      message: (on2 === null || on2 === void 0 ? void 0 : on2.message) ? [message.emit, on2.message] : [message.emit],
      closed: (on2 === null || on2 === void 0 ? void 0 : on2.closed) ? [on2.closed] : [],
      error: (on2 === null || on2 === void 0 ? void 0 : on2.error) ? [on2.error] : []
    };
    return {
      onMessage: message.on,
      on(event, listener) {
        const l2 = listeners[event];
        l2.push(listener);
        return () => {
          l2.splice(l2.indexOf(listener), 1);
        };
      },
      emit(event, ...args) {
        for (const listener of [...listeners[event]]) {
          listener(...args);
        }
      }
    };
  })();
  function errorOrClosed(cb) {
    const listening = [
      // errors are fatal and more critical than close events, throw them first
      emitter.on("error", (err) => {
        listening.forEach((unlisten) => unlisten());
        cb(err);
      }),
      // closes can be graceful and not fatal, throw them second (if error didnt throw)
      emitter.on("closed", (event) => {
        listening.forEach((unlisten) => unlisten());
        cb(event);
      })
    ];
  }
  let connecting, locks = 0, retrying = false, retries = 0, disposed = false;
  async function connect() {
    const [socket2, throwOnClose] = await (connecting !== null && connecting !== void 0 ? connecting : connecting = new Promise((connected, denied) => (async () => {
      if (retrying) {
        await retryWait(retries);
        if (!locks) {
          connecting = void 0;
          return denied({ code: 1e3, reason: "All Subscriptions Gone" });
        }
        retries++;
      }
      emitter.emit("connecting");
      const socket3 = new WebSocketImpl(typeof url2 === "function" ? await url2() : url2, GRAPHQL_TRANSPORT_WS_PROTOCOL);
      let connectionAckTimeout, queuedPing;
      function enqueuePing() {
        if (isFinite(keepAlive) && keepAlive > 0) {
          clearTimeout(queuedPing);
          queuedPing = setTimeout(() => {
            if (socket3.readyState === WebSocketImpl.OPEN) {
              socket3.send(stringifyMessage({ type: MessageType.Ping }));
              emitter.emit("ping", false, void 0);
            }
          }, keepAlive);
        }
      }
      errorOrClosed((errOrEvent) => {
        connecting = void 0;
        clearTimeout(connectionAckTimeout);
        clearTimeout(queuedPing);
        denied(errOrEvent);
      });
      socket3.onerror = (err) => emitter.emit("error", err);
      socket3.onclose = (event) => emitter.emit("closed", event);
      socket3.onopen = async () => {
        try {
          emitter.emit("opened", socket3);
          const payload = typeof connectionParams === "function" ? await connectionParams() : connectionParams;
          socket3.send(stringifyMessage(payload ? {
            type: MessageType.ConnectionInit,
            payload
          } : {
            type: MessageType.ConnectionInit
            // payload is completely absent if not provided
          }, replacer2));
          if (isFinite(connectionAckWaitTimeout) && connectionAckWaitTimeout > 0) {
            connectionAckTimeout = setTimeout(() => {
              socket3.close(CloseCode.ConnectionAcknowledgementTimeout, "Connection acknowledgement timeout");
            }, connectionAckWaitTimeout);
          }
          enqueuePing();
        } catch (err) {
          emitter.emit("error", err);
          socket3.close(CloseCode.InternalClientError, limitCloseReason(err instanceof Error ? err.message : new Error(err).message, "Internal client error"));
        }
      };
      let acknowledged = false;
      socket3.onmessage = ({ data }) => {
        try {
          const message = parseMessage(data, reviver);
          emitter.emit("message", message);
          if (message.type === "ping" || message.type === "pong") {
            emitter.emit(message.type, true, message.payload);
            if (message.type === "pong") {
              enqueuePing();
            } else if (!disablePong) {
              socket3.send(stringifyMessage(message.payload ? {
                type: MessageType.Pong,
                payload: message.payload
              } : {
                type: MessageType.Pong
                // payload is completely absent if not provided
              }));
              emitter.emit("pong", false, message.payload);
            }
            return;
          }
          if (acknowledged)
            return;
          if (message.type !== MessageType.ConnectionAck)
            throw new Error(`First message cannot be of type ${message.type}`);
          clearTimeout(connectionAckTimeout);
          acknowledged = true;
          emitter.emit("connected", socket3, message.payload);
          retrying = false;
          retries = 0;
          connected([
            socket3,
            new Promise((_2, reject) => errorOrClosed(reject))
          ]);
        } catch (err) {
          socket3.onmessage = null;
          emitter.emit("error", err);
          socket3.close(CloseCode.BadResponse, limitCloseReason(err instanceof Error ? err.message : new Error(err).message, "Bad response"));
        }
      };
    })()));
    if (socket2.readyState === WebSocketImpl.CLOSING)
      await throwOnClose;
    let release = () => {
    };
    const released = new Promise((resolve3) => release = resolve3);
    return [
      socket2,
      release,
      Promise.race([
        // wait for
        released.then(() => {
          if (!locks) {
            const complete = () => socket2.close(1e3, "Normal Closure");
            if (isFinite(lazyCloseTimeout) && lazyCloseTimeout > 0) {
              setTimeout(() => {
                if (!locks && socket2.readyState === WebSocketImpl.OPEN)
                  complete();
              }, lazyCloseTimeout);
            } else {
              complete();
            }
          }
        }),
        // or
        throwOnClose
      ])
    ];
  }
  function shouldRetryConnectOrThrow(errOrCloseEvent) {
    if (isLikeCloseEvent(errOrCloseEvent) && (isFatalInternalCloseCode(errOrCloseEvent.code) || [
      CloseCode.InternalServerError,
      CloseCode.InternalClientError,
      CloseCode.BadRequest,
      CloseCode.BadResponse,
      CloseCode.Unauthorized,
      // CloseCode.Forbidden, might grant access out after retry
      CloseCode.SubprotocolNotAcceptable,
      // CloseCode.ConnectionInitialisationTimeout, might not time out after retry
      // CloseCode.ConnectionAcknowledgementTimeout, might not time out after retry
      CloseCode.SubscriberAlreadyExists,
      CloseCode.TooManyInitialisationRequests
    ].includes(errOrCloseEvent.code)))
      throw errOrCloseEvent;
    if (disposed)
      return false;
    if (isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1e3)
      return locks > 0;
    if (!retryAttempts || retries >= retryAttempts)
      throw errOrCloseEvent;
    if (isFatalConnectionProblem(errOrCloseEvent))
      throw errOrCloseEvent;
    return retrying = true;
  }
  if (!lazy) {
    (async () => {
      locks++;
      for (; ; ) {
        try {
          const [, , throwOnClose] = await connect();
          await throwOnClose;
        } catch (errOrCloseEvent) {
          try {
            if (!shouldRetryConnectOrThrow(errOrCloseEvent))
              return;
          } catch (errOrCloseEvent2) {
            return onNonLazyError === null || onNonLazyError === void 0 ? void 0 : onNonLazyError(errOrCloseEvent2);
          }
        }
      }
    })();
  }
  return {
    on: emitter.on,
    subscribe(payload, sink) {
      const id2 = generateID();
      let done = false, errored = false, releaser = () => {
        locks--;
        done = true;
      };
      (async () => {
        locks++;
        for (; ; ) {
          try {
            const [socket2, release, waitForReleaseOrThrowOnClose] = await connect();
            if (done)
              return release();
            const unlisten = emitter.onMessage(id2, (message) => {
              switch (message.type) {
                case MessageType.Next: {
                  sink.next(message.payload);
                  return;
                }
                case MessageType.Error: {
                  errored = true, done = true;
                  sink.error(message.payload);
                  releaser();
                  return;
                }
                case MessageType.Complete: {
                  done = true;
                  releaser();
                  return;
                }
              }
            });
            socket2.send(stringifyMessage({
              id: id2,
              type: MessageType.Subscribe,
              payload
            }, replacer2));
            releaser = () => {
              if (!done && socket2.readyState === WebSocketImpl.OPEN)
                socket2.send(stringifyMessage({
                  id: id2,
                  type: MessageType.Complete
                }, replacer2));
              locks--;
              done = true;
              release();
            };
            await waitForReleaseOrThrowOnClose.finally(unlisten);
            return;
          } catch (errOrCloseEvent) {
            if (!shouldRetryConnectOrThrow(errOrCloseEvent))
              return;
          }
        }
      })().then(() => {
        if (!errored)
          sink.complete();
      }).catch((err) => {
        sink.error(err);
      });
      return () => {
        if (!done)
          releaser();
      };
    },
    async dispose() {
      disposed = true;
      if (connecting) {
        const [socket2] = await connecting;
        socket2.close(1e3, "Normal Closure");
      }
    }
  };
}
function isLikeCloseEvent(val) {
  return isObject(val) && "code" in val && "reason" in val;
}
function isFatalInternalCloseCode(code3) {
  if ([
    1e3,
    1001,
    1006,
    1005,
    1012,
    1013,
    1013
    // Bad Gateway
  ].includes(code3))
    return false;
  return code3 >= 1e3 && code3 <= 1999;
}
function isWebSocket(val) {
  return typeof val === "function" && "constructor" in val && "CLOSED" in val && "CLOSING" in val && "CONNECTING" in val && "OPEN" in val;
}
function _extends() {
  return (_extends = Object.assign || function(t2) {
    for (var e = 1; e < arguments.length; e++) {
      var n = arguments[e];
      for (var r2 in n) {
        if (Object.prototype.hasOwnProperty.call(n, r2)) {
          t2[r2] = n[r2];
        }
      }
    }
    return t2;
  }).apply(this, arguments);
}
function getName(e) {
  return e.name.value;
}
function getFragmentTypeName(e) {
  return e.typeCondition.name.value;
}
function getFieldAlias(e) {
  return e.alias ? e.alias.value : getName(e);
}
function getSelectionSet(e) {
  return e.selectionSet ? e.selectionSet.selections : [];
}
function getTypeCondition(e) {
  return e.typeCondition ? getName(e.typeCondition) : null;
}
function isFieldNode(e) {
  return e.kind === Kind.FIELD;
}
function isInlineFragment(e) {
  return e.kind === Kind.INLINE_FRAGMENT;
}
function getFieldArguments(e, t2) {
  var r2 = {};
  var i2 = 0;
  if (e.arguments && e.arguments.length) {
    for (var n = 0, a2 = e.arguments.length; n < a2; n++) {
      var o2 = e.arguments[n];
      var s2 = valueFromASTUntyped(o2.value, t2);
      if (null != s2) {
        r2[getName(o2)] = s2;
        i2++;
      }
    }
  }
  return i2 > 0 ? r2 : null;
}
function filterVariables(e, t2) {
  if (!t2 || !e.variableDefinitions) {
    return;
  }
  var r2 = {};
  for (var i2 = 0, n = e.variableDefinitions.length; i2 < n; i2++) {
    var a2 = getName(e.variableDefinitions[i2].variable);
    r2[a2] = t2[a2];
  }
  return r2;
}
function normalizeVariables(e, t2) {
  var r2 = {};
  if (!t2) {
    return r2;
  }
  if (e.variableDefinitions) {
    for (var i2 = 0, n = e.variableDefinitions.length; i2 < n; i2++) {
      var a2 = e.variableDefinitions[i2];
      var o2 = getName(a2.variable);
      r2[o2] = void 0 === t2[o2] && a2.defaultValue ? valueFromASTUntyped(a2.defaultValue, t2) : t2[o2];
    }
  }
  for (var s2 in t2) {
    if (!(s2 in r2)) {
      r2[s2] = t2[s2];
    }
  }
  return r2;
}
var N = "\nhttps://bit.ly/2XbVrpR#";
function invariant(e, t2, r2) {
  if (!e) {
    var i2 = t2 || "Minfied Error #" + r2 + "\n";
    var n = new Error(i2 + N + r2);
    n.name = "Graphcache Error";
    throw n;
  }
}
function getMainOperation(e) {
  for (var t2 = 0; t2 < e.definitions.length; t2++) {
    if (e.definitions[t2].kind === Kind.OPERATION_DEFINITION) {
      return e.definitions[t2];
    }
  }
  invariant(false, "", 1);
}
function getFragments(e) {
  var t2 = {};
  for (var r2 = 0; r2 < e.definitions.length; r2++) {
    var i2 = e.definitions[r2];
    if (i2.kind === Kind.FRAGMENT_DEFINITION) {
      t2[getName(i2)] = i2;
    }
  }
  return t2;
}
function shouldInclude(e, t2) {
  for (var r2 = 0; e.directives && r2 < e.directives.length; r2++) {
    var i2 = e.directives[r2];
    var n = getName(i2);
    if (("include" === n || "skip" === n) && i2.arguments && i2.arguments[0] && "if" === getName(i2.arguments[0])) {
      var a2 = valueFromASTUntyped(i2.arguments[0].value, t2);
      return "include" === n ? !!a2 : !a2;
    }
  }
  return true;
}
function isDeferred(e, t2) {
  for (var r2 = 0; e.directives && r2 < e.directives.length; r2++) {
    var i2 = e.directives[r2];
    if ("defer" === getName(i2)) {
      for (var n = 0; i2.arguments && n < i2.arguments.length; n++) {
        var a2 = i2.arguments[r2];
        if ("if" === getName(a2)) {
          return !!valueFromASTUntyped(a2.value, t2);
        }
      }
      return true;
    }
  }
  return false;
}
function isFieldNullable(e, t2, r2) {
  var i2 = getField(e, t2, r2);
  return !!i2 && "NON_NULL" !== i2.type.kind;
}
function isListNullable(e, t2, r2) {
  var i2 = getField(e, t2, r2);
  if (!i2) {
    return false;
  }
  var n = "NON_NULL" === i2.type.kind ? i2.type.ofType : i2.type;
  return "LIST" === n.kind && "NON_NULL" !== n.ofType.kind;
}
function isInterfaceOfType(e, t2, r2) {
  if (!r2) {
    return false;
  }
  var i2 = getTypeCondition(t2);
  if (!i2 || r2 === i2) {
    return true;
  } else if (e.types[i2] && "OBJECT" === e.types[i2].kind) {
    return i2 === r2;
  }
  !function expectAbstractType(e2, t3) {
    invariant(e2.types[t3] && ("INTERFACE" === e2.types[t3].kind || "UNION" === e2.types[t3].kind), "", 5);
  }(e, i2);
  expectObjectType(e, r2);
  return e.isSubType(i2, r2);
}
function getField(e, t2, r2) {
  if (0 === r2.indexOf("__") || 0 === t2.indexOf("__")) {
    return;
  }
  expectObjectType(e, t2);
  var i2 = e.types[t2].fields[r2];
  return i2;
}
function expectObjectType(e, t2) {
  invariant(e.types[t2] && "OBJECT" === e.types[t2].kind, "", 3);
}
function keyOfField(t2, r2) {
  return r2 ? t2 + "(" + stringifyVariables(r2) + ")" : t2;
}
function joinKeys(e, t2) {
  return e + "." + t2;
}
function fieldInfoOfKey(e) {
  var t2 = e.indexOf("(");
  if (t2 > -1) {
    return {
      fieldKey: e,
      fieldName: e.slice(0, t2),
      arguments: JSON.parse(e.slice(t2 + 1, -1))
    };
  } else {
    return {
      fieldKey: e,
      fieldName: e,
      arguments: null
    };
  }
}
function deserializeKeyInfo(e) {
  var t2 = e.indexOf(".");
  return {
    entityKey: e.slice(0, t2).replace(/%2e/g, "."),
    fieldKey: e.slice(t2 + 1)
  };
}
function makeDict() {
  return /* @__PURE__ */ Object.create(null);
}
var _ = null;
var E = null;
var b = null;
var D = null;
var w = null;
var F = null;
var S = false;
function makeNodeMap() {
  return {
    optimistic: makeDict(),
    base: /* @__PURE__ */ new Map()
  };
}
function makeData(e) {
  var t2;
  if (e) {
    if (_.has(e)) {
      return e;
    }
    t2 = E.get(e) || _extends({}, e);
    E.set(e, t2);
  } else {
    t2 = {};
  }
  _.add(t2);
  return t2;
}
function ownsData(e) {
  return !!e && _.has(e);
}
function initDataState(e, t2, r2, i2) {
  _ = /* @__PURE__ */ new Set();
  E = /* @__PURE__ */ new Map();
  b = e;
  D = t2;
  w = makeDict();
  S = !!i2;
  if (!r2) {
    F = null;
  } else if (i2 || t2.optimisticOrder.length > 0) {
    if (!i2 && !t2.commutativeKeys.has(r2)) {
      reserveLayer(t2, r2);
    } else if (i2) {
      t2.commutativeKeys.delete(r2);
    }
    F = r2;
    !function createLayer(e2, t3) {
      if (-1 === e2.optimisticOrder.indexOf(t3)) {
        e2.optimisticOrder.unshift(t3);
      }
      if (!e2.refLock[t3]) {
        e2.refLock[t3] = makeDict();
        e2.links.optimistic[t3] = /* @__PURE__ */ new Map();
        e2.records.optimistic[t3] = /* @__PURE__ */ new Map();
      }
    }(t2, r2);
  } else {
    F = null;
    deleteLayer(t2, r2);
  }
}
function clearDataState() {
  var t2 = D;
  var r2 = F;
  S = false;
  F = null;
  if (r2 && t2.optimisticOrder.indexOf(r2) > -1) {
    var i2 = t2.optimisticOrder.length;
    while (--i2 >= 0 && t2.refLock[t2.optimisticOrder[i2]] && t2.commutativeKeys.has(t2.optimisticOrder[i2]) && !t2.deferredKeys.has(t2.optimisticOrder[i2])) {
      squashLayer(t2.optimisticOrder[i2]);
    }
  }
  _ = null;
  E = null;
  b = null;
  D = null;
  w = null;
  if (!t2.defer) {
    t2.defer = true;
    Promise.resolve().then(function() {
      initDataState("read", t2, null);
      !function gc() {
        D.gc.forEach(function(e, t3, r3) {
          if ((D.refCount[e] || 0) > 0) {
            r3.delete(e);
            return;
          }
          for (var i3 in D.refLock) {
            var n = D.refLock[i3];
            if ((n[e] || 0) > 0) {
              return;
            }
            delete n[e];
          }
          delete D.refCount[e];
          r3.delete(e);
          D.records.base.delete(e);
          var a2 = D.links.base.get(e);
          if (a2) {
            D.links.base.delete(e);
            for (var o2 in a2) {
              updateRCForLink(r3, D.refCount, a2[o2], -1);
            }
          }
        });
      }();
      !function persistData() {
        if (D.storage) {
          S = true;
          b = "read";
          var t3 = makeDict();
          D.persist.forEach(function(r3) {
            var i3 = deserializeKeyInfo(r3);
            var n = i3.entityKey;
            var a2 = i3.fieldKey;
            var o2;
            if (void 0 !== (o2 = readLink(n, a2))) {
              t3[r3] = ":" + stringifyVariables(o2);
            } else if (void 0 !== (o2 = readRecord(n, a2))) {
              t3[r3] = stringifyVariables(o2);
            } else {
              t3[r3] = void 0;
            }
          });
          S = false;
          D.storage.writeData(t3);
          D.persist.clear();
        }
      }();
      clearDataState();
      t2.defer = false;
    });
  }
}
function noopDataState(e, t2, r2) {
  if (t2 && !r2) {
    e.deferredKeys.delete(t2);
  }
  initDataState("read", e, t2, r2);
  clearDataState();
}
function getCurrentOperation() {
  invariant(null !== b, "", 2);
  return b;
}
function getCurrentDependencies() {
  invariant(null !== w, "", 2);
  return w;
}
function setNode(e, t2, r2, i2) {
  var n = F ? e.optimistic[F] : e.base;
  var a2 = n.get(t2);
  if (void 0 === a2) {
    n.set(t2, a2 = makeDict());
  }
  if (void 0 === i2 && !F) {
    delete a2[r2];
  } else {
    a2[r2] = i2;
  }
}
function getNode(e, t2, r2) {
  var i2;
  var n = !S && "read" === b && F && D.commutativeKeys.has(F);
  for (var a2 = 0, o2 = D.optimisticOrder.length; a2 < o2; a2++) {
    var s2 = D.optimisticOrder[a2];
    var u2 = e.optimistic[s2];
    n = n && s2 !== F;
    if (u2 && (!n || !D.commutativeKeys.has(s2)) && (!S || "write" === b || D.commutativeKeys.has(s2)) && void 0 !== (i2 = u2.get(t2)) && r2 in i2) {
      return i2[r2];
    }
  }
  return void 0 !== (i2 = e.base.get(t2)) ? i2[r2] : void 0;
}
function updateRCForEntity(e, t2, r2, i2) {
  var n = void 0 !== t2[r2] ? t2[r2] : 0;
  var a2 = t2[r2] = n + i2 | 0;
  if (void 0 !== e) {
    if (a2 <= 0) {
      e.add(r2);
    } else if (n <= 0 && a2 > 0) {
      e.delete(r2);
    }
  }
}
function updateRCForLink(e, t2, r2, i2) {
  if ("string" == typeof r2) {
    updateRCForEntity(e, t2, r2, i2);
  } else if (Array.isArray(r2)) {
    for (var n = 0, a2 = r2.length; n < a2; n++) {
      if (Array.isArray(r2[n])) {
        updateRCForLink(e, t2, r2[n], i2);
      } else if (r2[n]) {
        updateRCForEntity(e, t2, r2[n], i2);
      }
    }
  }
}
function extractNodeFields(e, t2, r2) {
  if (void 0 !== r2) {
    for (var i2 in r2) {
      if (!t2.has(i2)) {
        e.push(fieldInfoOfKey(i2));
        t2.add(i2);
      }
    }
  }
}
function extractNodeMapFields(e, t2, r2, i2) {
  extractNodeFields(e, t2, i2.base.get(r2));
  for (var n = 0, a2 = D.optimisticOrder.length; n < a2; n++) {
    var o2 = i2.optimistic[D.optimisticOrder[n]];
    if (void 0 !== o2) {
      extractNodeFields(e, t2, o2.get(r2));
    }
  }
}
function updateDependencies(e, t2) {
  if ("__typename" !== t2) {
    if (e !== D.queryRootKey) {
      w[e] = true;
    } else if (void 0 !== t2) {
      w[joinKeys(e, t2)] = true;
    }
  }
}
function updatePersist(e, t2) {
  if (!S && D.storage) {
    D.persist.add(function serializeKeys(e2, t3) {
      return e2.replace(/\./g, "%2e") + "." + t3;
    }(e, t2));
  }
}
function readRecord(e, t2) {
  updateDependencies(e, t2);
  return getNode(D.records, e, t2);
}
function readLink(e, t2) {
  updateDependencies(e, t2);
  return getNode(D.links, e, t2);
}
function writeRecord(e, t2, r2) {
  updateDependencies(e, t2);
  updatePersist(e, t2);
  setNode(D.records, e, t2, r2);
}
function writeLink(e, t2, r2) {
  var i2 = D;
  var n;
  var a2;
  var o2;
  if (F) {
    n = i2.refLock[F] || (i2.refLock[F] = makeDict());
    a2 = i2.links.optimistic[F];
  } else {
    n = i2.refCount;
    a2 = i2.links.base;
    o2 = i2.gc;
  }
  var s2 = a2 && a2.get(e);
  var u2 = s2 && s2[t2];
  updateDependencies(e, t2);
  updatePersist(e, t2);
  setNode(i2.links, e, t2, r2);
  updateRCForLink(o2, n, u2, -1);
  updateRCForLink(o2, n, r2, 1);
}
function reserveLayer(e, t2, r2) {
  var i2 = e.optimisticOrder.indexOf(t2);
  if (-1 === i2) {
    e.optimisticOrder.unshift(t2);
  } else if (!e.commutativeKeys.has(t2)) {
    clearLayer(e, t2);
    e.optimisticOrder.splice(i2, 1);
    e.optimisticOrder.unshift(t2);
  }
  if (r2) {
    e.deferredKeys.add(t2);
  } else {
    e.deferredKeys.delete(t2);
  }
  e.commutativeKeys.add(t2);
}
function clearLayer(e, t2) {
  if (e.refLock[t2]) {
    delete e.refLock[t2];
    delete e.records.optimistic[t2];
    delete e.links.optimistic[t2];
    e.deferredKeys.delete(t2);
  }
}
function deleteLayer(e, t2) {
  var r2 = e.optimisticOrder.indexOf(t2);
  if (r2 > -1) {
    e.optimisticOrder.splice(r2, 1);
    e.commutativeKeys.delete(t2);
  }
  clearLayer(e, t2);
}
function squashLayer(e) {
  var t2 = w;
  w = makeDict();
  var r2 = D.links.optimistic[e];
  if (r2) {
    r2.forEach(function(e2, t3) {
      for (var r3 in e2) {
        writeLink(t3, r3, e2[r3]);
      }
    });
  }
  var i2 = D.records.optimistic[e];
  if (i2) {
    i2.forEach(function(e2, t3) {
      for (var r3 in e2) {
        writeRecord(t3, r3, e2[r3]);
      }
    });
  }
  w = t2;
  deleteLayer(D, e);
}
function inspectFields(e) {
  var t2 = D.links;
  var r2 = D.records;
  var i2 = [];
  var n = /* @__PURE__ */ new Set();
  updateDependencies(e);
  extractNodeMapFields(i2, n, e, t2);
  extractNodeMapFields(i2, n, e, r2);
  return i2;
}
var L = {
  current: null
};
var x = {
  current: false
};
function getFieldError(e) {
  return e.__internal.path.length > 0 && e.__internal.errorMap ? e.__internal.errorMap[e.__internal.path.join(".")] : void 0;
}
function makeContext(e, t2, r2, i2, n, a2, o2) {
  var s2 = {
    store: e,
    variables: t2,
    fragments: r2,
    parent: {
      __typename: i2
    },
    parentTypeName: i2,
    parentKey: n,
    parentFieldKey: "",
    fieldName: "",
    error: void 0,
    partial: false,
    optimistic: !!a2,
    __internal: {
      path: [],
      errorMap: void 0
    }
  };
  if (o2 && o2.graphQLErrors) {
    for (var u2 = 0; u2 < o2.graphQLErrors.length; u2++) {
      var c2 = o2.graphQLErrors[u2];
      if (c2.path && c2.path.length) {
        if (!s2.__internal.errorMap) {
          s2.__internal.errorMap = /* @__PURE__ */ Object.create(null);
        }
        s2.__internal.errorMap[c2.path.join(".")] = c2;
      }
    }
  }
  return s2;
}
function updateContext(e, t2, r2, i2, n, a2) {
  L.current = e;
  e.parent = t2;
  e.parentTypeName = r2;
  e.parentKey = i2;
  e.parentFieldKey = n;
  e.fieldName = a2;
  e.error = getFieldError(e);
}
function isFragmentHeuristicallyMatching(e, t2, r2, i2) {
  if (!t2) {
    return false;
  }
  var n = getTypeCondition(e);
  if (!n || t2 === n) {
    return true;
  }
  return !getSelectionSet(e).some(function(e2) {
    if (!isFieldNode(e2)) {
      return false;
    }
    var t3 = keyOfField(getName(e2), getFieldArguments(e2, i2));
    return !function hasField(e3, t4) {
      return void 0 !== readRecord(e3, t4) || void 0 !== readLink(e3, t4);
    }(r2, t3);
  });
}
function makeSelectionIterator(e, t2, r2, i2) {
  var n = false;
  var a2;
  var o2 = 0;
  return function next() {
    if (!x.current && n) {
      x.current = n;
    }
    if (a2) {
      var s2 = a2();
      if (null != s2) {
        return s2;
      }
      a2 = void 0;
      n = false;
    }
    while (o2 < r2.length) {
      var u2 = r2[o2++];
      if (!shouldInclude(u2, i2.variables)) {
        continue;
      } else if (!isFieldNode(u2)) {
        var c2 = !isInlineFragment(u2) ? i2.fragments[getName(u2)] : u2;
        if (void 0 !== c2) {
          if (i2.store.schema ? isInterfaceOfType(i2.store.schema, c2, e) : isFragmentHeuristicallyMatching(c2, e, t2, i2.variables)) {
            n = !!isDeferred(u2, i2.variables);
            if (!x.current && n) {
              x.current = n;
            }
            return (a2 = makeSelectionIterator(e, t2, getSelectionSet(c2), i2))();
          }
        }
      } else {
        return u2;
      }
    }
  };
}
function ensureData(e) {
  return null == e ? null : e;
}
function ensureLink(e, t2) {
  if (null == t2) {
    return t2;
  } else if (Array.isArray(t2)) {
    var r2 = new Array(t2.length);
    for (var i2 = 0, n = r2.length; i2 < n; i2++) {
      r2[i2] = ensureLink(e, t2[i2]);
    }
    return r2;
  }
  var a2 = e.keyOfEntity(t2);
  return a2;
}
function write(e, t2, r2, i2, n) {
  initDataState("write", e.data, n || null);
  var a2 = startWrite(e, t2, r2, i2);
  clearDataState();
  return a2;
}
function startWrite(e, t2, r2, i2, n) {
  var a2 = getMainOperation(t2.query);
  var o2 = {
    data: r2,
    dependencies: getCurrentDependencies()
  };
  var s2 = e.rootFields[a2.operation];
  var u2 = makeContext(e, normalizeVariables(a2, t2.variables), getFragments(t2.query), s2, s2, !!n, i2);
  writeSelection(u2, s2, getSelectionSet(a2), r2);
  return o2;
}
function writeSelection(e, t2, r2, i2) {
  var n = t2 === e.store.rootFields.query;
  var a2 = !n && !!e.store.rootNames[t2];
  var o2 = a2 || n ? t2 : i2.__typename;
  if (!o2) {
    return;
  } else if (!a2 && !n && t2) {
    writeRecord(t2, "__typename", o2);
  }
  var s2 = makeSelectionIterator(o2, t2 || o2, r2, e);
  var u2;
  while (u2 = s2()) {
    var c2 = getName(u2);
    var l2 = getFieldArguments(u2, e.variables);
    var d2 = keyOfField(c2, l2);
    var f2 = getFieldAlias(u2);
    var p2 = i2[f2];
    if ("__typename" === c2 || void 0 === p2 && x.current) {
      continue;
    }
    e.__internal.path.push(f2);
    if (e.optimistic && a2) {
      var v = e.store.optimisticMutations[c2];
      if (!v) {
        continue;
      }
      updateContext(e, i2, o2, o2, d2, c2);
      p2 = i2[f2] = ensureData(v(l2 || {}, e.store, e));
    }
    if (u2.selectionSet) {
      if (t2 && !a2) {
        var y2 = joinKeys(t2, d2);
        writeLink(t2 || o2, d2, writeField(e, getSelectionSet(u2), ensureData(p2), y2));
      } else {
        writeField(e, getSelectionSet(u2), ensureData(p2));
      }
    } else if (t2 && !a2) {
      writeRecord(t2 || o2, d2, null !== p2 || !getFieldError(e) ? p2 : void 0);
    }
    if (a2) {
      var m2 = e.store.updates[o2][c2];
      if (m2) {
        updateContext(e, i2, o2, o2, joinKeys(o2, d2), c2);
        i2[c2] = p2;
        m2(i2, l2 || {}, e.store, e);
      }
    }
    e.__internal.path.pop();
  }
}
function writeField(e, t2, r2, i2) {
  if (Array.isArray(r2)) {
    var n = new Array(r2.length);
    for (var a2 = 0, o2 = r2.length; a2 < o2; a2++) {
      e.__internal.path.push(a2);
      var s2 = i2 ? joinKeys(i2, "" + a2) : void 0;
      var u2 = writeField(e, t2, r2[a2], s2);
      n[a2] = u2;
      e.__internal.path.pop();
    }
    return n;
  } else if (null === r2) {
    return getFieldError(e) ? void 0 : null;
  }
  var c2 = e.store.keyOfEntity(r2);
  r2.__typename;
  var d2 = c2 || i2;
  writeSelection(e, d2, t2, r2);
  return d2 || null;
}
function Store(e) {
  var t2, r2;
  this.keyOfField = keyOfField;
  this.resolveFieldByKey = this.resolve;
  if (!e) {
    e = {};
  }
  this.resolvers = e.resolvers || {};
  this.optimisticMutations = e.optimistic || {};
  this.keys = e.keys || {};
  var i2 = "Query";
  var n = "Mutation";
  var a2 = "Subscription";
  if (e.schema) {
    var o2 = function buildClientSchema(e2) {
      var t3 = e2.__schema;
      var r3 = {};
      function buildNameMap(e3) {
        var t4 = {};
        for (var r4 = 0; r4 < e3.length; r4++) {
          t4[e3[r4].name] = e3[r4];
        }
        return t4;
      }
      function buildType(e3) {
        switch (e3.kind) {
          case "OBJECT":
          case "INTERFACE":
            return {
              name: e3.name,
              kind: e3.kind,
              interfaces: buildNameMap(e3.interfaces || []),
              fields: buildNameMap(e3.fields.map(function(e4) {
                return {
                  name: e4.name,
                  type: e4.type,
                  args: buildNameMap(e4.args)
                };
              }))
            };
          case "UNION":
            return {
              name: e3.name,
              kind: e3.kind,
              types: buildNameMap(e3.possibleTypes || [])
            };
        }
      }
      var i3 = {
        query: t3.queryType ? t3.queryType.name : null,
        mutation: t3.mutationType ? t3.mutationType.name : null,
        subscription: t3.subscriptionType ? t3.subscriptionType.name : null,
        types: void 0,
        isSubType: function isSubType(e3, t4) {
          var i4 = r3[e3];
          var n3 = r3[t4];
          if (!i4 || !n3) {
            return false;
          } else if ("UNION" === i4.kind) {
            return !!i4.types[t4];
          } else if ("OBJECT" !== i4.kind && "OBJECT" === n3.kind) {
            return !!n3.interfaces[e3];
          } else {
            return e3 === t4;
          }
        }
      };
      if (t3.types) {
        i3.types = r3;
        for (var n2 = 0; n2 < t3.types.length; n2++) {
          var a3 = t3.types[n2];
          if (a3 && a3.name) {
            var o3 = buildType(a3);
            if (o3) {
              r3[a3.name] = o3;
            }
          }
        }
      }
      return i3;
    }(e.schema);
    i2 = o2.query || i2;
    n = o2.mutation || n;
    a2 = o2.subscription || a2;
    if (o2.types) {
      this.schema = o2;
    }
  }
  this.updates = ((t2 = {})[n] = e.updates && e.updates.Mutation || {}, t2[a2] = e.updates && e.updates.Subscription || {}, t2);
  this.rootFields = {
    query: i2,
    mutation: n,
    subscription: a2
  };
  this.rootNames = ((r2 = {})[i2] = "query", r2[n] = "mutation", r2[a2] = "subscription", r2);
  this.data = function make(e2) {
    return {
      defer: false,
      gc: /* @__PURE__ */ new Set(),
      persist: /* @__PURE__ */ new Set(),
      queryRootKey: e2,
      refCount: makeDict(),
      refLock: makeDict(),
      links: makeNodeMap(),
      records: makeNodeMap(),
      deferredKeys: /* @__PURE__ */ new Set(),
      commutativeKeys: /* @__PURE__ */ new Set(),
      optimisticOrder: [],
      storage: null
    };
  }(i2);
  if (this.schema && false) {
    !function expectValidKeyingConfig(e2, t3) {
    }(this.schema, this.keys);
    !function expectValidUpdatesConfig(e2, t3) {
      {
        return;
      }
    }(this.schema, this.updates);
    !function expectValidResolversConfig(e2, t3) {
      {
        return;
      }
    }(this.schema, this.resolvers);
    !function expectValidOptimisticMutationsConfig(e2, t3) {
      {
        return;
      }
    }(this.schema, this.optimisticMutations);
  }
}
Store.prototype.keyOfEntity = function keyOfEntity(e) {
  if (L.current && e === L.current.parent) {
    return L.current.parentKey;
  }
  if (null == e || "string" == typeof e) {
    return e || null;
  }
  if (!e.__typename) {
    return null;
  }
  if (this.rootNames[e.__typename]) {
    return e.__typename;
  }
  var t2;
  if (this.keys[e.__typename]) {
    t2 = this.keys[e.__typename](e);
  } else if (null != e.id) {
    t2 = "" + e.id;
  } else if (null != e._id) {
    t2 = "" + e._id;
  }
  return t2 ? e.__typename + ":" + t2 : null;
};
Store.prototype.resolve = function resolve2(e, t2, r2) {
  var i2 = keyOfField(t2, r2);
  var n = this.keyOfEntity(e);
  if (!n) {
    return null;
  }
  var a2 = readRecord(n, i2);
  if (void 0 !== a2) {
    return a2;
  }
  return readLink(n, i2) || null;
};
Store.prototype.invalidate = function invalidate(e, t2, r2) {
  var i2 = this.keyOfEntity(e);
  invariant(i2, "", 19);
  !function invalidateEntity(e2, t3, r3) {
    var i3 = t3 ? [{
      fieldKey: keyOfField(t3, r3)
    }] : inspectFields(e2);
    for (var n = 0, a2 = i3.length; n < a2; n++) {
      var o2 = i3[n].fieldKey;
      if (void 0 !== readLink(e2, o2)) {
        writeLink(e2, o2, void 0);
      } else {
        writeRecord(e2, o2, void 0);
      }
    }
  }(i2, t2, r2);
};
Store.prototype.inspectFields = function inspectFields$1(e) {
  var t2 = this.keyOfEntity(e);
  return t2 ? inspectFields(t2) : [];
};
Store.prototype.updateQuery = function updateQuery(e, i2) {
  var n = createRequest(e.query, e.variables);
  n.query = formatDocument(n.query);
  var a2 = i2(this.readQuery(n));
  if (null !== a2) {
    startWrite(this, n, a2);
  }
};
Store.prototype.readQuery = function readQuery(e) {
  var i2 = createRequest(e.query, e.variables);
  i2.query = formatDocument(i2.query);
  return read$1(this, i2).data;
};
Store.prototype.readFragment = function readFragment$1(e, t2, i2) {
  return function readFragment(e2, t3, r2, i3) {
    var n = getFragments(t3);
    var a2 = Object.keys(n);
    var o2 = n[a2[0]];
    if (!o2) {
      return null;
    }
    var s2 = getFragmentTypeName(o2);
    if ("string" != typeof r2 && !r2.__typename) {
      r2.__typename = s2;
    }
    var u2 = e2.keyOfEntity(r2);
    if (!u2) {
      return null;
    }
    var c2 = readSelection(makeContext(e2, i3 || {}, n, s2, u2), u2, getSelectionSet(o2), makeData()) || null;
    return c2;
  }(this, formatDocument(e), t2, i2);
};
Store.prototype.writeFragment = function writeFragment$1(e, t2, i2) {
  !function writeFragment(e2, t3, r2, i3) {
    var n = getFragments(t3);
    var a2 = n[Object.keys(n)[0]];
    if (!a2) {
      return void 0;
    }
    var o2 = getFragmentTypeName(a2);
    var s2 = _extends({}, {
      __typename: o2
    }, r2);
    var u2 = e2.keyOfEntity(s2);
    if (!u2) {
      return void 0;
    }
    writeSelection(makeContext(e2, i3 || {}, n, o2, u2, void 0), u2, getSelectionSet(a2), s2);
  }(this, formatDocument(e), t2, i2);
};
Store.prototype.link = function link3(e, t2, r2, i2) {
  var n = void 0 !== i2 ? r2 : null;
  var link4 = void 0 !== i2 ? i2 : r2;
  var a2 = ensureLink(this, e);
  if ("string" == typeof a2) {
    writeLink(a2, keyOfField(t2, n), ensureLink(this, link4));
  }
};
function query(e, t2, r2, i2, n) {
  initDataState("read", e.data, n);
  var a2 = read$1(e, t2, r2, i2);
  clearDataState();
  return a2;
}
function read$1(e, t2, r2, i2) {
  var n = getMainOperation(t2.query);
  var a2 = e.rootFields[n.operation];
  var o2 = getSelectionSet(n);
  var s2 = makeContext(e, normalizeVariables(n, t2.variables), getFragments(t2.query), a2, a2, false, i2);
  if (!r2) {
    r2 = makeData();
  }
  var u2 = a2 !== s2.store.rootFields.query ? readRoot(s2, a2, o2, r2) : readSelection(s2, a2, o2, r2);
  return {
    dependencies: getCurrentDependencies(),
    partial: s2.partial || !u2,
    data: u2 || null
  };
}
function readRoot(e, t2, r2, i2) {
  if ("string" != typeof (e.store.rootNames[t2] ? t2 : i2.__typename)) {
    return i2;
  }
  var n = makeSelectionIterator(t2, t2, r2, e);
  var a2;
  var o2 = false;
  var s2 = makeData(i2);
  while (a2 = n()) {
    var u2 = getFieldAlias(a2);
    var c2 = i2[u2];
    e.__internal.path.push(u2);
    var l2 = void 0;
    if (a2.selectionSet && null !== c2) {
      l2 = readRootField(e, getSelectionSet(a2), ensureData(c2));
    } else {
      l2 = c2;
    }
    o2 = o2 || l2 !== c2;
    if (void 0 !== l2) {
      s2[u2] = l2;
    }
    e.__internal.path.pop();
  }
  return o2 ? s2 : i2;
}
function readRootField(e, t2, r2) {
  if (Array.isArray(r2)) {
    var i2 = new Array(r2.length);
    var n = false;
    for (var a2 = 0, o2 = r2.length; a2 < o2; a2++) {
      e.__internal.path.push(a2);
      i2[a2] = readRootField(e, t2, r2[a2]);
      n = n || i2[a2] !== r2[a2];
      e.__internal.path.pop();
    }
    return n ? i2 : r2;
  } else if (null === r2) {
    return null;
  }
  var s2 = e.store.keyOfEntity(r2);
  if (null !== s2) {
    return readSelection(e, s2, t2, r2) || null;
  } else {
    return readRoot(e, r2.__typename, t2, r2);
  }
}
function readSelection(e, t2, r2, i2, n) {
  var a2 = e.store;
  var o2 = t2 === a2.rootFields.query;
  var s2 = n && a2.keyOfEntity(n) || t2;
  var u2 = !o2 ? readRecord(s2, "__typename") || n && n.__typename : t2;
  if ("string" != typeof u2) {
    return;
  } else if (n && u2 !== n.__typename) {
    return;
  }
  var c2 = makeSelectionIterator(u2, s2, r2, e);
  var l2 = false;
  var d2 = false;
  var f2 = u2 !== i2.__typename;
  var p2;
  var v = makeData(i2);
  while (void 0 !== (p2 = c2())) {
    var y2 = getName(p2);
    var m2 = getFieldArguments(p2, e.variables);
    var h2 = getFieldAlias(p2);
    var g = keyOfField(y2, m2);
    var N2 = joinKeys(s2, g);
    var k = readRecord(s2, g);
    var O2 = n ? n[y2] : void 0;
    var _2 = a2.resolvers[u2];
    e.__internal.path.push(h2);
    var E2 = void 0;
    if ("__typename" === y2) {
      E2 = u2;
    } else if (void 0 !== O2 && void 0 === p2.selectionSet) {
      E2 = O2;
    } else if ("read" === getCurrentOperation() && _2 && "function" == typeof _2[y2]) {
      updateContext(e, v, u2, s2, N2, y2);
      if (void 0 !== k) {
        v[h2] = k;
      }
      E2 = _2[y2](v, m2 || {}, a2, e);
      if (p2.selectionSet) {
        E2 = resolveResolverResult(e, u2, y2, N2, getSelectionSet(p2), void 0 !== v[h2] ? v[h2] : i2[h2], E2, ownsData(i2));
      }
      if (a2.schema && null === E2 && !isFieldNullable(a2.schema, u2, y2)) {
        return;
      }
    } else if (!p2.selectionSet) {
      E2 = k;
    } else if (void 0 !== O2) {
      E2 = resolveResolverResult(e, u2, y2, N2, getSelectionSet(p2), void 0 !== v[h2] ? v[h2] : i2[h2], O2, ownsData(i2));
    } else {
      var b2 = readLink(s2, g);
      if (void 0 !== b2) {
        E2 = resolveLink(e, b2, u2, y2, getSelectionSet(p2), void 0 !== v[h2] ? v[h2] : i2[h2], ownsData(i2));
      } else if ("object" == typeof k && null !== k) {
        E2 = k;
      }
    }
    if (void 0 === E2 && x.current) {
      l2 = true;
    } else if (void 0 === E2 && (a2.schema && isFieldNullable(a2.schema, u2, y2) || getFieldError(e))) {
      d2 = true;
      E2 = null;
    } else if (void 0 === E2) {
      e.__internal.path.pop();
      return;
    } else {
      l2 = l2 || "__typename" !== y2;
    }
    e.__internal.path.pop();
    f2 = f2 || E2 !== i2[h2];
    if (void 0 !== E2) {
      v[h2] = E2;
    }
  }
  e.partial = e.partial || d2;
  return o2 && d2 && !l2 ? void 0 : f2 ? v : i2;
}
function resolveResolverResult(e, t2, r2, i2, n, a2, o2, s2) {
  if (Array.isArray(o2)) {
    var u2 = e.store;
    var c2 = u2.schema ? isListNullable(u2.schema, t2, r2) : false;
    var l2 = new Array(o2.length);
    var d2 = !Array.isArray(a2) || o2.length !== a2.length;
    for (var f2 = 0, p2 = o2.length; f2 < p2; f2++) {
      e.__internal.path.push(f2);
      var v = resolveResolverResult(e, t2, r2, joinKeys(i2, "" + f2), n, null != a2 ? a2[f2] : void 0, o2[f2], s2);
      e.__internal.path.pop();
      if (void 0 === v && !c2) {
        return;
      } else {
        e.partial = e.partial || void 0 === v && c2;
        l2[f2] = null != v ? v : null;
        d2 = d2 || l2[f2] !== a2[f2];
      }
    }
    return d2 ? l2 : a2;
  } else if (null == o2) {
    return o2;
  } else if (s2 && null === a2) {
    return null;
  } else if (function isDataOrKey(e2) {
    return "string" == typeof e2 || "object" == typeof e2 && "string" == typeof e2.__typename;
  }(o2)) {
    var y2 = a2 || makeData();
    return "string" == typeof o2 ? readSelection(e, o2, n, y2) : readSelection(e, i2, n, y2, o2);
  } else {
    return;
  }
}
function resolveLink(e, t2, r2, i2, n, a2, o2) {
  if (Array.isArray(t2)) {
    var s2 = e.store;
    var u2 = s2.schema ? isListNullable(s2.schema, r2, i2) : false;
    var c2 = new Array(t2.length);
    var l2 = !Array.isArray(a2) || c2.length !== a2.length;
    for (var d2 = 0, f2 = t2.length; d2 < f2; d2++) {
      e.__internal.path.push(d2);
      var p2 = resolveLink(e, t2[d2], r2, i2, n, null != a2 ? a2[d2] : void 0, o2);
      e.__internal.path.pop();
      if (void 0 === p2 && !u2) {
        return;
      } else {
        e.partial = e.partial || void 0 === p2 && u2;
        c2[d2] = p2 || null;
        l2 = l2 || c2[d2] !== a2[d2];
      }
    }
    return l2 ? c2 : a2;
  } else if (null === t2 || null === a2 && o2) {
    return null;
  }
  return readSelection(e, t2, n, a2 || makeData());
}
function addCacheOutcome(e, t2) {
  return makeOperation(e.kind, e, _extends({}, e.context, {
    meta: _extends({}, e.context.meta, {
      cacheOutcome: t2
    })
  }));
}
function toRequestPolicy(e, t2) {
  return makeOperation(e.kind, e, _extends({}, e.context, {
    requestPolicy: t2
  }));
}
function cacheExchange(e) {
  return function(t2) {
    var v = t2.forward;
    var y2 = t2.client;
    t2.dispatchDebug;
    var h2 = new Store(e);
    var g;
    if (e && e.storage) {
      g = e.storage.readData().then(function(t3) {
        !function hydrateData(e2, t4, r2) {
          initDataState("write", e2, null);
          for (var i2 in r2) {
            var n = r2[i2];
            if (void 0 !== n) {
              var a2 = deserializeKeyInfo(i2);
              var o2 = a2.entityKey;
              var s2 = a2.fieldKey;
              if (":" === n[0]) {
                writeLink(o2, s2, JSON.parse(n.slice(1)));
              } else {
                writeRecord(o2, s2, JSON.parse(n));
              }
            }
          }
          clearDataState();
          e2.storage = t4;
        }(h2.data, e.storage, t3);
      });
    }
    var N2 = /* @__PURE__ */ new Map();
    var k = [];
    var O2 = /* @__PURE__ */ new Map();
    var _2 = /* @__PURE__ */ new Map();
    var E2 = makeDict();
    var b2 = /* @__PURE__ */ new Set();
    var D2 = makeDict();
    function isBlockedByOptimisticUpdate(e2) {
      for (var t3 in e2) {
        if (E2[t3]) {
          return true;
        }
      }
      return false;
    }
    function collectPendingOperations(e2, t3) {
      if (t3) {
        for (var r2 in t3) {
          var i2 = D2[r2];
          if (i2) {
            D2[r2] = [];
            for (var n = 0, a2 = i2.length; n < a2; n++) {
              e2.add(i2[n]);
            }
          }
        }
      }
    }
    function executePendingOperations(e2, t3) {
      t3.forEach(function(t4) {
        if (t4 !== e2.key) {
          var r2 = O2.get(t4);
          if (r2) {
            O2.delete(t4);
            var i2 = "cache-first";
            if (b2.has(t4)) {
              b2.delete(t4);
              i2 = "cache-and-network";
            }
            y2.reexecuteOperation(toRequestPolicy(r2, i2));
          }
        }
      });
    }
    function prepareForwardedOperation(e2) {
      if ("query" === e2.kind) {
        reserveLayer(h2.data, e2.key);
      } else if ("teardown" === e2.kind) {
        O2.delete(e2.key);
        _2.delete(e2.key);
        noopDataState(h2.data, e2.key);
      } else if ("mutation" === e2.kind && "network-only" !== e2.context.requestPolicy) {
        var t3 = function writeOptimistic(e3, t4, r2) {
          initDataState("write", e3.data, r2, true);
          var i2 = startWrite(e3, t4, {}, void 0, true);
          clearDataState();
          return i2;
        }(h2, e2, e2.key).dependencies;
        if (!function isDictEmpty(e3) {
          for (var t4 in e3) {
            return false;
          }
          return true;
        }(t3)) {
          for (var n in t3) {
            E2[n] = true;
          }
          N2.set(e2.key, t3);
          var a2 = /* @__PURE__ */ new Set();
          collectPendingOperations(a2, t3);
          executePendingOperations(e2, a2);
        }
      }
      return makeOperation(e2.kind, {
        key: e2.key,
        query: formatDocument(e2.query),
        variables: e2.variables ? filterVariables(getMainOperation(e2.query), e2.variables) : e2.variables
      }, e2.context);
    }
    function updateDependencies2(e2, t3) {
      for (var r2 in t3) {
        (D2[r2] || (D2[r2] = [])).push(e2.key);
        O2.set(e2.key, e2);
      }
    }
    function operationResultFromCache(e2) {
      var t3 = query(h2, e2, _2.get(e2.key));
      var r2 = t3.data ? !t3.partial ? "hit" : "partial" : "miss";
      _2.set(e2.key, t3.data);
      updateDependencies2(e2, t3.dependencies);
      return {
        outcome: r2,
        operation: e2,
        data: t3.data,
        dependencies: t3.dependencies
      };
    }
    function updateCacheWithResult(e2, t3) {
      var r2 = e2.operation;
      var i2 = e2.error;
      var n = e2.extensions;
      var a2 = r2.key;
      if ("mutation" === r2.kind) {
        collectPendingOperations(t3, N2.get(a2));
        N2.delete(a2);
      }
      reserveLayer(h2.data, r2.key, e2.hasNext);
      var o2;
      var s2 = e2.data;
      if (s2) {
        collectPendingOperations(t3, write(h2, r2, s2, e2.error, a2).dependencies);
        var u2 = query(h2, r2, "query" === r2.kind ? _2.get(r2.key) || s2 : s2, e2.error, a2);
        s2 = u2.data;
        if ("query" === r2.kind) {
          collectPendingOperations(t3, o2 = u2.dependencies);
          _2.set(r2.key, e2.data);
        }
      } else {
        noopDataState(h2.data, r2.key);
      }
      if (o2) {
        updateDependencies2(e2.operation, o2);
      }
      return {
        data: s2,
        error: i2,
        extensions: n,
        operation: r2
      };
    }
    return function(e2) {
      var t3 = share$1(e2);
      var r2 = g ? share$1(merge$1([D$1(p$1)(buffer$1(fromPromise$1(g))(t3)), skipUntil$1(fromPromise$1(g))(t3)])) : t3;
      var i2 = share$1(map$1$1(operationResultFromCache)(filter$1(function(e3) {
        return "query" === e3.kind && "network-only" !== e3.context.requestPolicy;
      })(r2)));
      var O3 = filter$1(function(e3) {
        return "query" !== e3.kind || "network-only" === e3.context.requestPolicy;
      })(r2);
      var _3 = map$1$1(function(e3) {
        return addCacheOutcome(e3.operation, "miss");
      })(filter$1(function(e3) {
        return "miss" === e3.outcome && "cache-only" !== e3.operation.context.requestPolicy && !isBlockedByOptimisticUpdate(e3.dependencies);
      })(i2));
      var D3 = map$1$1(function(e3) {
        var t4 = e3.operation;
        var r3 = e3.outcome;
        var i3 = e3.dependencies;
        var n = {
          operation: addCacheOutcome(t4, r3),
          data: e3.data,
          error: e3.error,
          extensions: e3.extensions
        };
        if ("cache-and-network" === t4.context.requestPolicy || "cache-first" === t4.context.requestPolicy && "partial" === r3) {
          n.stale = true;
          if (!isBlockedByOptimisticUpdate(i3)) {
            y2.reexecuteOperation(toRequestPolicy(t4, "network-only"));
          } else if ("cache-and-network" === t4.context.requestPolicy) {
            b2.add(t4.key);
          }
        }
        return n;
      })(filter$1(function(e3) {
        return "miss" !== e3.outcome || "cache-only" === e3.operation.context.requestPolicy;
      })(i2));
      var w2 = share$1(v(map$1$1(prepareForwardedOperation)(merge$1([O3, _3]))));
      var F2 = map$1$1(function(e3) {
        var t4 = /* @__PURE__ */ new Set();
        var r3 = updateCacheWithResult(e3, t4);
        executePendingOperations(e3.operation, t4);
        return r3;
      })(filter$1(function(e3) {
        return !N2.has(e3.operation.key);
      })(w2));
      var S2 = D$1(function(e3) {
        if (k.push(e3) < N2.size) {
          return u$2;
        }
        for (var t4 = 0; t4 < k.length; t4++) {
          reserveLayer(h2.data, k[t4].operation.key);
        }
        for (var r3 in E2) {
          delete E2[r3];
        }
        var i3 = [];
        var n = /* @__PURE__ */ new Set();
        var a2;
        while (a2 = k.shift()) {
          i3.push(updateCacheWithResult(a2, n));
        }
        executePendingOperations(e3.operation, n);
        return p$1(i3);
      })(filter$1(function(e3) {
        return N2.has(e3.operation.key);
      })(w2));
      return merge$1([F2, S2, D3]);
    };
  };
}
var a = {
  __typename: "PageInfo",
  endCursor: null,
  startCursor: null,
  hasNextPage: false,
  hasPreviousPage: false
};
function ensureKey(e) {
  return "string" == typeof e ? e : null;
}
function concatEdges(e, r2, a2) {
  var n = /* @__PURE__ */ new Set();
  for (var t2 = 0, o2 = r2.length; t2 < o2; t2++) {
    var s2 = e.resolve(r2[t2], "node");
    if ("string" == typeof s2) {
      n.add(s2);
    }
  }
  var i2 = r2.slice();
  for (var f2 = 0, u2 = a2.length; f2 < u2; f2++) {
    var v = a2[f2];
    var l2 = e.resolve(v, "node");
    if ("string" == typeof l2 && !n.has(l2)) {
      n.add(l2);
      i2.push(v);
    }
  }
  return i2;
}
function concatNodes(e, r2) {
  var a2 = /* @__PURE__ */ new Set();
  for (var n = 0, t2 = e.length; n < t2; n++) {
    var o2 = e[n];
    if ("string" == typeof o2) {
      a2.add(o2);
    }
  }
  var s2 = e.slice();
  for (var i2 = 0, f2 = r2.length; i2 < f2; i2++) {
    var u2 = r2[i2];
    if ("string" == typeof u2 && !a2.has(u2)) {
      a2.add(u2);
      s2.push(u2);
    }
  }
  return s2;
}
function compareArgs(e, a2) {
  for (var n in a2) {
    if ("first" === n || "last" === n || "after" === n || "before" === n) {
      continue;
    } else if (!(n in e)) {
      return false;
    }
    var t2 = e[n];
    var o2 = a2[n];
    if (typeof t2 != typeof o2 || "object" != typeof t2 ? t2 !== o2 : stringifyVariables(t2) !== stringifyVariables(o2)) {
      return false;
    }
  }
  for (var s2 in e) {
    if ("first" === s2 || "last" === s2 || "after" === s2 || "before" === s2) {
      continue;
    }
    if (!(s2 in a2)) {
      return false;
    }
  }
  return true;
}
function getPage(e, r2, n) {
  var t2 = ensureKey(e.resolve(r2, n));
  if (!t2) {
    return null;
  }
  var o2 = e.resolve(t2, "__typename");
  var s2 = e.resolve(t2, "edges") || [];
  var i2 = e.resolve(t2, "nodes") || [];
  if ("string" != typeof o2) {
    return null;
  }
  var f2 = {
    __typename: o2,
    edges: s2,
    nodes: i2,
    pageInfo: a
  };
  var u2 = e.resolve(t2, "pageInfo");
  if ("string" == typeof u2) {
    var v = ensureKey(e.resolve(u2, "__typename"));
    var l2 = ensureKey(e.resolve(u2, "endCursor"));
    var g = ensureKey(e.resolve(u2, "startCursor"));
    var c2 = e.resolve(u2, "hasNextPage");
    var d2 = e.resolve(u2, "hasPreviousPage");
    var p2 = f2.pageInfo = {
      __typename: "string" == typeof v ? v : "PageInfo",
      hasNextPage: "boolean" == typeof c2 ? c2 : !!l2,
      hasPreviousPage: "boolean" == typeof d2 ? d2 : !!g,
      endCursor: l2,
      startCursor: g
    };
    if (null === p2.endCursor) {
      var y2 = s2[s2.length - 1];
      if (y2) {
        var m2 = e.resolve(y2, "cursor");
        p2.endCursor = ensureKey(m2);
      }
    }
    if (null === p2.startCursor) {
      var h2 = s2[0];
      if (h2) {
        var P = e.resolve(h2, "cursor");
        p2.startCursor = ensureKey(P);
      }
    }
  }
  return f2;
}
function relayPagination(r2) {
  if (void 0 === r2) {
    r2 = {};
  }
  var n = r2.mergeMode || "inwards";
  return function(r3, t2, o2, s2) {
    var i2 = s2.parentKey;
    var f2 = s2.fieldName;
    var u2 = o2.inspectFields(i2).filter(function(e) {
      return e.fieldName === f2;
    });
    var v = u2.length;
    if (0 === v) {
      return;
    }
    var l2 = null;
    var g = [];
    var c2 = [];
    var d2 = [];
    var p2 = [];
    var y2 = _extends({}, a);
    for (var m2 = 0; m2 < v; m2++) {
      var h2 = u2[m2];
      var P = h2.fieldKey;
      var _2 = h2.arguments;
      if (null === _2 || !compareArgs(t2, _2)) {
        continue;
      }
      var N2 = getPage(o2, i2, P);
      if (null === N2) {
        continue;
      }
      if (!N2.nodes.length && !N2.edges.length && l2) {
        continue;
      }
      if ("inwards" === n && "number" == typeof _2.last && "number" == typeof _2.first) {
        var C2 = N2.edges.slice(0, _2.first + 1);
        var I = N2.edges.slice(-_2.last);
        var K2 = N2.nodes.slice(0, _2.first + 1);
        var b2 = N2.nodes.slice(-_2.last);
        g = concatEdges(o2, g, C2);
        c2 = concatEdges(o2, I, c2);
        d2 = concatNodes(d2, K2);
        p2 = concatNodes(b2, p2);
        y2 = N2.pageInfo;
      } else if (_2.after) {
        g = concatEdges(o2, g, N2.edges);
        d2 = concatNodes(d2, N2.nodes);
        y2.endCursor = N2.pageInfo.endCursor;
        y2.hasNextPage = N2.pageInfo.hasNextPage;
      } else if (_2.before) {
        c2 = concatEdges(o2, N2.edges, c2);
        p2 = concatNodes(N2.nodes, p2);
        y2.startCursor = N2.pageInfo.startCursor;
        y2.hasPreviousPage = N2.pageInfo.hasPreviousPage;
      } else if ("number" == typeof _2.last) {
        c2 = concatEdges(o2, N2.edges, c2);
        p2 = concatNodes(N2.nodes, p2);
        y2 = N2.pageInfo;
      } else {
        g = concatEdges(o2, g, N2.edges);
        d2 = concatNodes(d2, N2.nodes);
        y2 = N2.pageInfo;
      }
      if (N2.pageInfo.__typename !== y2.__typename) {
        y2.__typename = N2.pageInfo.__typename;
      }
      if (l2 !== N2.__typename) {
        l2 = N2.__typename;
      }
    }
    if ("string" != typeof l2) {
      return;
    }
    if (!!!ensureKey(o2.resolve(i2, f2, t2))) {
      if (!s2.store.schema) {
        return;
      } else {
        s2.partial = true;
      }
    }
    return {
      __typename: l2,
      edges: "inwards" === n ? concatEdges(o2, g, c2) : concatEdges(o2, c2, g),
      nodes: "inwards" === n ? concatNodes(d2, p2) : concatNodes(p2, d2),
      pageInfo: {
        __typename: y2.__typename,
        endCursor: y2.endCursor,
        startCursor: y2.startCursor,
        hasNextPage: y2.hasNextPage,
        hasPreviousPage: y2.hasPreviousPage
      }
    };
  };
}
const urqlCacheKeys = {
  keys: {
    DevState: (data) => data.__typename,
    Wizard: (data) => data.__typename,
    Migration: (data) => data.__typename,
    CloudRunCommitInfo: () => null,
    GitInfo: () => null,
    MigrationFile: () => null,
    MigrationFilePart: () => null,
    CodeFrame: () => null,
    ProjectPreferences: (data) => data.__typename,
    VersionData: () => null,
    ScaffoldedFile: () => null,
    SpecDataAggregate: () => null,
    LocalSettings: (data) => data.__typename,
    LocalSettingsPreferences: () => null,
    AuthState: () => null,
    CloudProjectNotFound: (data) => data.__typename,
    CloudProjectSpecNotFound: (data) => null,
    CloudProjectUnauthorized: (data) => data.__typename,
    CloudLatestRunUpdateSpecData: (data) => null,
    CloudProjectSpecFlakyStatus: (data) => null,
    CloudPollingIntervals: (data) => null,
    GeneratedSpecError: () => null,
    GenerateSpecResponse: (data) => data.__typename,
    CloudFeatureNotEnabled: () => null,
    UsageLimitExceeded: () => null
  },
  resolvers: {
    CloudProject: {
      runs: relayPagination({ mergeMode: "outwards" })
    }
  }
};
const urqlSchema = {
  "__schema": {
    "queryType": {
      "name": "Query"
    },
    "mutationType": {
      "name": "Mutation"
    },
    "subscriptionType": {
      "name": "Subscription"
    },
    "types": [
      {
        "kind": "OBJECT",
        "name": "AuthState",
        "fields": [
          {
            "name": "browserOpened",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "message",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Browser",
        "fields": [
          {
            "name": "channel",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "disabled",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "displayName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "family",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isFocusSupported",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isSelected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isVersionSupported",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "majorVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "path",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "version",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "warning",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CachedUser",
        "fields": [
          {
            "name": "email",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fullName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudBrowserInfo",
        "fields": [
          {
            "name": "formattedName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "formattedNameWithVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "formattedVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "unformattedName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "unformattedVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudCiBuildInfo",
        "fields": [
          {
            "name": "ciBuildNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "ciBuildNumberFormatted",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "formattedProvider",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "provider",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudFeatureNotEnabled",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudLatestRunUpdateSpecData",
        "fields": [
          {
            "name": "mostRecentUpdate",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "pollingInterval",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudOperatingSystem",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "nameWithVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "platform",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "unformattedName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "version",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudOrganization",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projects",
            "type": {
              "kind": "OBJECT",
              "name": "CloudProjectConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudOrganizationConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudOrganizationEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudOrganization",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudOrganizationEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudOrganization",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudPollingIntervals",
        "fields": [
          {
            "name": "runByNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "runsByCommitShas",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProject",
        "fields": [
          {
            "name": "cloudProjectSettingsUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "cloudProjectUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "latestRun",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRun",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "organization",
            "type": {
              "kind": "OBJECT",
              "name": "CloudOrganization",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "recordKeys",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "OBJECT",
                  "name": "CloudRecordKey",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "runByNumber",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRun",
              "ofType": null
            },
            "args": [
              {
                "name": "runNumber",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "runs",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRunConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "cypressVersion",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "status",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "runsByCommitShas",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudRun",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "commitShas",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              },
              {
                "name": "runLimit",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "slug",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudProjectEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudProject",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudProject",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectNotFound",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "CloudProjectResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CloudProject"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectNotFound"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectUnauthorized"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectSpec",
        "fields": [
          {
            "name": "averageDuration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "averageDurationForRunIds",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "flakyStatus",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecFlakyResult",
              "ofType": null
            },
            "args": [
              {
                "name": "flakyRunsWindow",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "flakyStatusForRunIds",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecFlakyResult",
              "ofType": null
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isConsideredFlaky",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "isConsideredFlakyForRunIds",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "retrievedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specPath",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specRuns",
            "type": {
              "kind": "OBJECT",
              "name": "CloudSpecRunConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "fromBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "specRunsForRunIds",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudSpecRun",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "cloudRunIds",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "UNION",
        "name": "CloudProjectSpecFlakyResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CloudFeatureNotEnabled"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpecFlakyStatus"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectSpecFlakyStatus",
        "fields": [
          {
            "name": "dashboardUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "flakyRuns",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "flakyRunsWindow",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastFlaky",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastFlakyRunCommitSha",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastFlakyRunNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "severity",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectSpecNotFound",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "retrievedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "CloudProjectSpecResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpec"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpecNotFound"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectUnauthorized"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudProjectUnauthorized",
        "fields": [
          {
            "name": "hasRequestedAccess",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRecordKey",
        "fields": [
          {
            "name": "createdAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "key",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastUsedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRun",
        "fields": [
          {
            "name": "cancelOnFailure",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cancelledAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cancelledBy",
            "type": {
              "kind": "OBJECT",
              "name": "CloudUser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "ci",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudCiBuildInfo",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "commitInfo",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRunCommitInfo",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "completedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "completedInstanceCount",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createdAt",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errors",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "groups",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudRunGroup",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isHidden",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "overLimitActionType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "overLimitActionUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "reasonsRunIsHidden",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "UNION",
                  "name": "CloudRunHidingReason",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "runNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "scheduledToCompleteAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specs",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudSpecRun",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "tags",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudRunTag",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "testsForReview",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudTestResult",
                    "ofType": null
                  }
                }
              }
            },
            "args": [
              {
                "name": "limit",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "totalDuration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFailed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFlakyTests",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalInstanceCount",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPassed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPending",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalRunning",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalSkipped",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalTests",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunCommitInfo",
        "fields": [
          {
            "name": "authorAvatar",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "authorEmail",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "authorName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "branch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "branchUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "message",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "truncate",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "sha",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "summary",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudRunEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudRun",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudRun",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunGroup",
        "fields": [
          {
            "name": "browser",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudBrowserInfo",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "completedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createdAt",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "duration",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "groupName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "os",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudOperatingSystem",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "testingType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalFailures",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalPasses",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalPending",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "totalSkipped",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "UNION",
        "name": "CloudRunHidingReason",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "DataRetentionLimitExceeded"
          },
          {
            "kind": "OBJECT",
            "name": "UsageLimitExceeded"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunInstance",
        "fields": [
          {
            "name": "groupId",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasReplay",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasScreenshots",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasStdout",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasVideo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "replayUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "screenshotsUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "stdoutUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFailed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPassed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalPending",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalRunning",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalSkipped",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "videoUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudRunTag",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudSpecRun",
        "fields": [
          {
            "name": "basename",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "completedAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createdAt",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "extension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "groupCount",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "groupIds",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "path",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "runNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "shortPath",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specDuration",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "testsFailed",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "testsPassed",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "testsPending",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "testsSkipped",
            "type": {
              "kind": "OBJECT",
              "name": "SpecDataAggregate",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "url",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudSpecRunConnection",
        "fields": [
          {
            "name": "edges",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudSpecRunEdge",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "nodes",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "CloudSpecRun",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "pageInfo",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "PageInfo",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudSpecRunEdge",
        "fields": [
          {
            "name": "cursor",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CloudSpecRun",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CloudTestResult",
        "fields": [
          {
            "name": "duration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "instance",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRunInstance",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "isFlaky",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specId",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "state",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "testUrl",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "thumbprint",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": [
              {
                "name": "depth",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "titleParts",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CloudUser",
        "fields": [
          {
            "name": "cloudOrganizationsUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cloudProfileUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "createCloudOrganizationUrl",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "email",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fullName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "organizations",
            "type": {
              "kind": "OBJECT",
              "name": "CloudOrganizationConnection",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "first",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "last",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "userIsViewer",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "CodeFrame",
        "fields": [
          {
            "name": "codeBlock",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "column",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "file",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "FileParts",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "line",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CodeGenGlobs",
        "fields": [
          {
            "name": "component",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "Cohort",
        "fields": [
          {
            "name": "cohort",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CommitInfo",
        "fields": [
          {
            "name": "message",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "sha",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "CurrentProject",
        "fields": [
          {
            "name": "activeBrowser",
            "type": {
              "kind": "OBJECT",
              "name": "Browser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "branch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "browserStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "browsers",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "OBJECT",
                  "name": "Browser",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "cloudProject",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cloudProjectRemote",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "codeGenCandidates",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "FileParts",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "glob",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "codeGenFramework",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "codeGenGlobs",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "CodeGenGlobs",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "config",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configFile",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "configFileAbsolutePath",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "currentTestingType",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "defaultSpecFileName",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fileExtensionToUse",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasNonExampleSpec",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasValidConfigFile",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isCTConfigured",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isDefaultSpecPattern",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isE2EConfigured",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isFullConfigReady",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isLoadingConfigFile",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isLoadingNodeEvents",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isUsingTypeScript",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "needsLegacyConfigMigration",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "packageManager",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "preferences",
            "type": {
              "kind": "OBJECT",
              "name": "ProjectPreferences",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "projectId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projectRoot",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "savedState",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "serveConfig",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specs",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "Spec",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "ProjectLike"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "DataRetentionLimitExceeded",
        "fields": [
          {
            "name": "dataRetentionDays",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "DevState",
        "fields": [
          {
            "name": "needsRelaunch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "state",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Editor",
        "fields": [
          {
            "name": "binary",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ErrorWrapper",
        "fields": [
          {
            "name": "codeFrame",
            "type": {
              "kind": "OBJECT",
              "name": "CodeFrame",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "errorMessage",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errorName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errorStack",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "errorType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isUserCodeError",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "FileParts",
        "fields": [
          {
            "name": "absolute",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "baseName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "column",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "contents",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileExtension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "line",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "GenerateSpecResponse",
        "fields": [
          {
            "name": "currentProject",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "generatedSpecResult",
            "type": {
              "kind": "UNION",
              "name": "GeneratedSpecResult",
              "ofType": null
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "GeneratedSpecError",
        "fields": [
          {
            "name": "erroredCodegenCandidate",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "GeneratedSpecResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "GeneratedSpecError"
          },
          {
            "kind": "OBJECT",
            "name": "ScaffoldedFile"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "GitInfo",
        "fields": [
          {
            "name": "author",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastModifiedHumanReadable",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "lastModifiedTimestamp",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "shortHash",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "statusType",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "subject",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "GlobalProject",
        "fields": [
          {
            "name": "cloudProjectRemote",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "projectId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projectRoot",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "ProjectLike"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "LocalSettings",
        "fields": [
          {
            "name": "availableEditors",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "Editor",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "preferences",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "LocalSettingsPreferences",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "LocalSettingsPreferences",
        "fields": [
          {
            "name": "autoScrollingEnabled",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "debugSlideshowComplete",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "desktopNotificationsEnabled",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "dismissNotificationBannerUntil",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isSideNavigationOpen",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "isSpecsListOpen",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "majorVersionWelcomeDismissed",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "notifyWhenRunCompletes",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "notifyWhenRunStarts",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "notifyWhenRunStartsFailing",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "preferredEditorBinary",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "proxyBypass",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "proxyServer",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "reporterWidth",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specListWidth",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "wasBrowserSetInCLI",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ManualMigration",
        "fields": [
          {
            "name": "completed",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "files",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ManualMigrationFile",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "ManualMigrationFile",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "moved",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "Migration",
        "fields": [
          {
            "name": "componentFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configAfterCode",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configBeforeCode",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configFileNameAfter",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "configFileNameBefore",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "filteredSteps",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "MigrationStep",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "hasComponentTesting",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomComponentFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomComponentTestFiles",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomIntegrationFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasCustomIntegrationTestFiles",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "integrationFolder",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isUsingTypeScript",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "manualFiles",
            "type": {
              "kind": "OBJECT",
              "name": "ManualMigration",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "shouldMigratePreExtension",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "specFiles",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "MigrationFile",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "supportFiles",
            "type": {
              "kind": "OBJECT",
              "name": "MigrationFile",
              "ofType": null
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "MigrationFile",
        "fields": [
          {
            "name": "after",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "MigrationFileData",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "before",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "MigrationFileData",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "testingType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "MigrationFileData",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "parts",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "MigrationFilePart",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "MigrationFilePart",
        "fields": [
          {
            "name": "group",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "highlight",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "text",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "MigrationRegexp",
        "fields": [
          {
            "name": "afterComponent",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "afterE2E",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "beforeComponent",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "beforeE2E",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "MigrationStep",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "index",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isCompleted",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isCurrentStep",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "Mutation",
        "fields": [
          {
            "name": "_clearCloudCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "_cloudCacheInvalidate",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "args",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "_showUrqlCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "addProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "open",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "path",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "clearCurrentProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "clearCurrentTestingType",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "closeBrowser",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "cloudProjectCreate",
            "type": {
              "kind": "OBJECT",
              "name": "CloudProject",
              "ofType": null
            },
            "args": [
              {
                "name": "campaign",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "ciProviders",
                "type": {
                  "kind": "LIST",
                  "ofType": {
                    "kind": "NON_NULL",
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Any"
                    }
                  }
                }
              },
              {
                "name": "cohort",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "medium",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "orgId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "public",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "source",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "cloudProjectRequestAccess",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "projectSlug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudRecordEvent",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "localTestCounts",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "completeSetup",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "copyTextToClipboard",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "text",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "determineCohort",
            "type": {
              "kind": "OBJECT",
              "name": "Cohort",
              "ofType": null
            },
            "args": [
              {
                "name": "cohortConfig",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "devRelaunch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "action",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "dismissWarning",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "e2eExamples",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ScaffoldedFile",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "finishedRenamingComponentSpecs",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "focusActiveBrowserWindow",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "generateSpecFromSource",
            "type": {
              "kind": "OBJECT",
              "name": "GenerateSpecResponse",
              "ofType": null
            },
            "args": [
              {
                "name": "codeGenCandidate",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "componentName",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "isDefault",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "type",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "getReactComponentsFromFile",
            "type": {
              "kind": "OBJECT",
              "name": "ReactComponentResponse",
              "ofType": null
            },
            "args": [
              {
                "name": "filePath",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "initializeCtFrameworks",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "internal_clearAllProjectPreferencesCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "internal_clearLatestProjectCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "internal_clearProjectPreferencesCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "projectTitle",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "launchOpenProject",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": [
              {
                "name": "shouldLaunchNewTab",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "specPath",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "launchpadSetBrowser",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "loadRemoteFetchables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "INTERFACE",
                  "name": "RemoteFetchable",
                  "ofType": null
                }
              }
            },
            "args": [
              {
                "name": "ids",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "login",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "utmContent",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "utmMedium",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "utmSource",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "logout",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "matchesSpecPattern",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": [
              {
                "name": "specFile",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "migrateCloseManualRenameWatcher",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "migrateComponentTesting",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateConfigFile",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateRenameSpecs",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "after",
                "type": {
                  "kind": "LIST",
                  "ofType": {
                    "kind": "NON_NULL",
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Any"
                    }
                  }
                }
              },
              {
                "name": "before",
                "type": {
                  "kind": "LIST",
                  "ofType": {
                    "kind": "NON_NULL",
                    "ofType": {
                      "kind": "SCALAR",
                      "name": "Any"
                    }
                  }
                }
              },
              {
                "name": "skip",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "migrateRenameSpecsFolder",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateRenameSupport",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "migrateSkipManualRename",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "moveToRelevantRun",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "runNumber",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openDirectoryInIDE",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openExternal",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "includeGraphqlPort",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "url",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openFileInIDE",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "input",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "openInFinder",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "pingBaseUrl",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "reconfigureProject",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "recordEvent",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "campaign",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "cohort",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "includeMachineId",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              },
              {
                "name": "medium",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "messageId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "payload",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "refetchRemote",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "refreshCloudViewer",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "removeProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "resetAuthState",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Query",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "resetErrorAndLoadConfig",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "resetLatestVersionTelemetry",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "resetWizard",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "runSpec",
            "type": {
              "kind": "UNION",
              "name": "RunSpecResult",
              "ofType": null
            },
            "args": [
              {
                "name": "specPath",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "scaffoldTestingType",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "setAndLoadCurrentTestingType",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "testingType",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setCurrentProject",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "path",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setPreferences",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "type",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "value",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setProjectIdInConfigFile",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "projectId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setProjectPreferencesInGlobalCache",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Query",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "testingType",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setPromptShown",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "slug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "setRunAllSpecs",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "runAllSpecs",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "setTestsForRun",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "testsBySpec",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "showDebugForCloudRun",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": [
              {
                "name": "runNumber",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "showSystemNotification",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "body",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "title",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "switchTestingTypeAndRelaunch",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": [
              {
                "name": "testingType",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "testsForRun",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            },
            "args": [
              {
                "name": "spec",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "wizardUpdate",
            "type": {
              "kind": "OBJECT",
              "name": "Wizard",
              "ofType": null
            },
            "args": [
              {
                "name": "input",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          }
        ],
        "interfaces": []
      },
      {
        "kind": "INTERFACE",
        "name": "Node",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [],
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "Browser"
          },
          {
            "kind": "OBJECT",
            "name": "CachedUser"
          },
          {
            "kind": "OBJECT",
            "name": "CloudBrowserInfo"
          },
          {
            "kind": "OBJECT",
            "name": "CloudCiBuildInfo"
          },
          {
            "kind": "OBJECT",
            "name": "CloudOperatingSystem"
          },
          {
            "kind": "OBJECT",
            "name": "CloudOrganization"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProject"
          },
          {
            "kind": "OBJECT",
            "name": "CloudProjectSpec"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRecordKey"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRun"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRunGroup"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRunInstance"
          },
          {
            "kind": "OBJECT",
            "name": "CloudRunTag"
          },
          {
            "kind": "OBJECT",
            "name": "CloudSpecRun"
          },
          {
            "kind": "OBJECT",
            "name": "CloudTestResult"
          },
          {
            "kind": "OBJECT",
            "name": "CloudUser"
          },
          {
            "kind": "OBJECT",
            "name": "CodeGenGlobs"
          },
          {
            "kind": "OBJECT",
            "name": "CurrentProject"
          },
          {
            "kind": "OBJECT",
            "name": "FileParts"
          },
          {
            "kind": "OBJECT",
            "name": "GlobalProject"
          },
          {
            "kind": "OBJECT",
            "name": "ManualMigration"
          },
          {
            "kind": "OBJECT",
            "name": "ManualMigrationFile"
          },
          {
            "kind": "OBJECT",
            "name": "MigrationFileData"
          },
          {
            "kind": "OBJECT",
            "name": "MigrationFilePart"
          },
          {
            "kind": "OBJECT",
            "name": "MigrationStep"
          },
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectResult"
          },
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectSpecResult"
          },
          {
            "kind": "OBJECT",
            "name": "Spec"
          },
          {
            "kind": "OBJECT",
            "name": "TestingTypeInfo"
          },
          {
            "kind": "OBJECT",
            "name": "WizardBundler"
          },
          {
            "kind": "OBJECT",
            "name": "WizardErroredFramework"
          },
          {
            "kind": "OBJECT",
            "name": "WizardFrontendFramework"
          },
          {
            "kind": "OBJECT",
            "name": "WizardNpmPackage"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "PageInfo",
        "fields": [
          {
            "name": "endCursor",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "hasNextPage",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "hasPreviousPage",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "startCursor",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "INTERFACE",
        "name": "ProjectLike",
        "fields": [
          {
            "name": "cloudProjectRemote",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "projectId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "projectRoot",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [],
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "CurrentProject"
          },
          {
            "kind": "OBJECT",
            "name": "GlobalProject"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "ProjectPreferences",
        "fields": [
          {
            "name": "testingType",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "PushFragmentPayload",
        "fields": [
          {
            "name": "data",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "errors",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fragment",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "invalidateCache",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "target",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "variables",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Query",
        "fields": [
          {
            "name": "authState",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "AuthState",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "baseError",
            "type": {
              "kind": "OBJECT",
              "name": "ErrorWrapper",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cachedUser",
            "type": {
              "kind": "OBJECT",
              "name": "CachedUser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cloudLatestRunUpdateSpecData",
            "type": {
              "kind": "OBJECT",
              "name": "CloudLatestRunUpdateSpecData",
              "ofType": null
            },
            "args": [
              {
                "name": "commitBranch",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "projectSlug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "sinceDateTime",
                "type": {
                  "kind": "SCALAR",
                  "name": "Any"
                }
              }
            ]
          },
          {
            "name": "cloudNode",
            "type": {
              "kind": "INTERFACE",
              "name": "Node",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudNodesByIds",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "INTERFACE",
                "name": "Node",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "ids",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "cloudProjectBySlug",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": [
              {
                "name": "slug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudProjectsBySlugs",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "UNION",
                "name": "CloudProjectResult",
                "ofType": null
              }
            },
            "args": [
              {
                "name": "slugs",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "LIST",
                    "ofType": {
                      "kind": "NON_NULL",
                      "ofType": {
                        "kind": "SCALAR",
                        "name": "Any"
                      }
                    }
                  }
                }
              }
            ]
          },
          {
            "name": "cloudSpecByPath",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecResult",
              "ofType": null
            },
            "args": [
              {
                "name": "projectSlug",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              },
              {
                "name": "specPath",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "cloudViewer",
            "type": {
              "kind": "OBJECT",
              "name": "CloudUser",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cohort",
            "type": {
              "kind": "OBJECT",
              "name": "Cohort",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "currentProject",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "dev",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "DevState",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "invokedFromCli",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isGlobalMode",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "localSettings",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "LocalSettings",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "machineId",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "migration",
            "type": {
              "kind": "OBJECT",
              "name": "Migration",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "node",
            "type": {
              "kind": "INTERFACE",
              "name": "Node",
              "ofType": null
            },
            "args": [
              {
                "name": "id",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "pollingIntervals",
            "type": {
              "kind": "OBJECT",
              "name": "CloudPollingIntervals",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "projects",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "INTERFACE",
                    "name": "ProjectLike",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "scaffoldedFiles",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "NON_NULL",
                "ofType": {
                  "kind": "OBJECT",
                  "name": "ScaffoldedFile",
                  "ofType": null
                }
              }
            },
            "args": []
          },
          {
            "name": "versions",
            "type": {
              "kind": "OBJECT",
              "name": "VersionData",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "warnings",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ErrorWrapper",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "wizard",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Wizard",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ReactComponentDescriptor",
        "fields": [
          {
            "name": "exportName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isDefault",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "ReactComponentResponse",
        "fields": [
          {
            "name": "components",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "ReactComponentDescriptor",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "errored",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "RelevantRun",
        "fields": [
          {
            "name": "all",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "RelevantRunInfo",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "commitsAhead",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "currentCommitInfo",
            "type": {
              "kind": "OBJECT",
              "name": "CommitInfo",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "latest",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "RelevantRunInfo",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "selectedRunNumber",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "RelevantRunInfo",
        "fields": [
          {
            "name": "runId",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "runNumber",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "sha",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "totalFailed",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "INTERFACE",
        "name": "RemoteFetchable",
        "fields": [
          {
            "name": "dataRaw",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "error",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fetchingStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operation",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationHash",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationVariables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ],
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectResult"
          },
          {
            "kind": "OBJECT",
            "name": "RemoteFetchableCloudProjectSpecResult"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "RemoteFetchableCloudProjectResult",
        "fields": [
          {
            "name": "data",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectResult",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "dataRaw",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "error",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fetchingStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operation",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationHash",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationVariables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "RemoteFetchable"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "RemoteFetchableCloudProjectSpecResult",
        "fields": [
          {
            "name": "data",
            "type": {
              "kind": "UNION",
              "name": "CloudProjectSpecResult",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "dataRaw",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "error",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "fetchingStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operation",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationHash",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "operationVariables",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          },
          {
            "kind": "INTERFACE",
            "name": "RemoteFetchable"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "RunSpecError",
        "fields": [
          {
            "name": "code",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "detailMessage",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "RunSpecResponse",
        "fields": [
          {
            "name": "browser",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Browser",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "spec",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Spec",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "testingType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "UNION",
        "name": "RunSpecResult",
        "possibleTypes": [
          {
            "kind": "OBJECT",
            "name": "RunSpecError"
          },
          {
            "kind": "OBJECT",
            "name": "RunSpecResponse"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "ScaffoldedFile",
        "fields": [
          {
            "name": "description",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "file",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "FileParts",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "status",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Spec",
        "fields": [
          {
            "name": "absolute",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "baseName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "cloudSpec",
            "type": {
              "kind": "OBJECT",
              "name": "RemoteFetchableCloudProjectSpecResult",
              "ofType": null
            },
            "args": [
              {
                "name": "name",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "fileExtension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "fileName",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "gitInfo",
            "type": {
              "kind": "OBJECT",
              "name": "GitInfo",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "relative",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specFileExtension",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "specType",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "SpecDataAggregate",
        "fields": [
          {
            "name": "max",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "min",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Subscription",
        "fields": [
          {
            "name": "authChange",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "branchChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "browserStatusChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "cloudViewerChange",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "configChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "devChange",
            "type": {
              "kind": "OBJECT",
              "name": "DevState",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "errorWarningChange",
            "type": {
              "kind": "OBJECT",
              "name": "Query",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "frameworkDetectionChange",
            "type": {
              "kind": "OBJECT",
              "name": "Wizard",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "gitInfoChange",
            "type": {
              "kind": "LIST",
              "ofType": {
                "kind": "OBJECT",
                "name": "Spec",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "pushFragment",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "PushFragmentPayload",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "relevantRunSpecChange",
            "type": {
              "kind": "OBJECT",
              "name": "CloudRun",
              "ofType": null
            },
            "args": [
              {
                "name": "runId",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "relevantRuns",
            "type": {
              "kind": "OBJECT",
              "name": "RelevantRun",
              "ofType": null
            },
            "args": [
              {
                "name": "location",
                "type": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "SCALAR",
                    "name": "Any"
                  }
                }
              }
            ]
          },
          {
            "name": "specsChange",
            "type": {
              "kind": "OBJECT",
              "name": "CurrentProject",
              "ofType": null
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "TestingTypeInfo",
        "fields": [
          {
            "name": "description",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "title",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "type",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "UsageLimitExceeded",
        "fields": [
          {
            "name": "monthlyTests",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Version",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "released",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "version",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "VersionData",
        "fields": [
          {
            "name": "current",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Version",
                "ofType": null
              }
            },
            "args": []
          },
          {
            "name": "latest",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "OBJECT",
                "name": "Version",
                "ofType": null
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "Wizard",
        "fields": [
          {
            "name": "allBundlers",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardBundler",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "bundler",
            "type": {
              "kind": "OBJECT",
              "name": "WizardBundler",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "erroredFrameworks",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardErroredFramework",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "framework",
            "type": {
              "kind": "OBJECT",
              "name": "WizardFrontendFramework",
              "ofType": null
            },
            "args": []
          },
          {
            "name": "frameworks",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardFrontendFramework",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "installDependenciesCommand",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "packagesToInstall",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardNpmPackage",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          }
        ],
        "interfaces": []
      },
      {
        "kind": "OBJECT",
        "name": "WizardBundler",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isDetected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "type",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "WizardErroredFramework",
        "fields": [
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "path",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "WizardFrontendFramework",
        "fields": [
          {
            "name": "category",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "icon",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isDetected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "isSelected",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "supportStatus",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "supportedBundlers",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "LIST",
                "ofType": {
                  "kind": "NON_NULL",
                  "ofType": {
                    "kind": "OBJECT",
                    "name": "WizardBundler",
                    "ofType": null
                  }
                }
              }
            },
            "args": []
          },
          {
            "name": "type",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "OBJECT",
        "name": "WizardNpmPackage",
        "fields": [
          {
            "name": "description",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "detectedVersion",
            "type": {
              "kind": "SCALAR",
              "name": "Any"
            },
            "args": []
          },
          {
            "name": "id",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "minVersion",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "name",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "package",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          },
          {
            "name": "satisfied",
            "type": {
              "kind": "NON_NULL",
              "ofType": {
                "kind": "SCALAR",
                "name": "Any"
              }
            },
            "args": []
          }
        ],
        "interfaces": [
          {
            "kind": "INTERFACE",
            "name": "Node"
          }
        ]
      },
      {
        "kind": "SCALAR",
        "name": "Any"
      }
    ],
    "directives": []
  }
};
const pubSubExchange = (io2) => {
  return ({ client, forward }) => {
    const watchedOperations = /* @__PURE__ */ new Map();
    const observedOperations = /* @__PURE__ */ new Map();
    const awaitingMount = {};
    function reexecuteOperation2(op, refetchHeader = "true") {
      client.reexecuteOperation(
        client.createRequestOperation("query", op, {
          requestPolicy: "cache-and-network",
          fetchOptions: {
            headers: {
              "x-cypress-graphql-refetch": refetchHeader
            }
          }
        })
      );
    }
    io2.on("graphql-refetch", (refreshOnly) => {
      if (refreshOnly == null ? void 0 : refreshOnly.operation) {
        const fieldHeader = `${refreshOnly.operation}.${refreshOnly.field}`;
        const toRefresh = Array.from(watchedOperations.values()).find((o2) => getOperationName(o2.query) === refreshOnly.operation);
        if (!toRefresh) {
          awaitingMount[refreshOnly.operation] = refreshOnly;
        } else {
          reexecuteOperation2(toRefresh, fieldHeader);
        }
      } else {
        watchedOperations.forEach((op) => {
          reexecuteOperation2(op);
        });
      }
    });
    const processIncomingOperation = (op) => {
      if (op.kind === "teardown" && observedOperations.has(op.key)) {
        observedOperations.delete(op.key);
        watchedOperations.delete(op.key);
      }
    };
    const processResultOperation = (op) => {
      if (op.operation.kind === "query" && !observedOperations.has(op.operation.key)) {
        observedOperations.set(op.operation.key, 1);
        watchedOperations.set(op.operation.key, op.operation);
        const name2 = getOperationName(op.operation.query);
        if (name2 && awaitingMount[name2]) {
          const awaiting = awaitingMount[name2];
          delete awaitingMount[name2];
          reexecuteOperation2(op.operation, `${awaiting.operation}.${awaiting.field}`);
        }
      }
    };
    return (ops$) => {
      if (typeof window === "undefined") {
        return forward(ops$);
      }
      return pipe(forward(pipe(ops$, H(processIncomingOperation))), H(processResultOperation));
    };
  };
};
function getOperationName(query2) {
  var _a2, _b2;
  return (_b2 = (_a2 = getPrimaryOperation(query2)) == null ? void 0 : _a2.name) == null ? void 0 : _b2.value;
}
function getPrimaryOperation(query2) {
  return query2.definitions.find(isOperationDefinitionNode);
}
function isOperationDefinitionNode(node) {
  return node.kind === "OperationDefinition";
}
const namedRouteExchange = ({ client, forward }) => {
  return (ops$) => {
    return forward(pipe(
      ops$,
      map$1$1((o2) => {
        if (!o2.context.url.endsWith("/graphql")) {
          return o2;
        }
        return {
          ...o2,
          context: {
            ...o2.context,
            url: `${o2.context.url}/${o2.kind}-${getOperationName$1(o2.query)}`
          }
        };
      })
    ));
  };
};
const urqlFetchSocketAdapter = (io2) => {
  return (url2, fetchOptions = {}) => {
    return new Promise((resolve3, reject) => {
      if (fetchOptions.signal) {
        fetchOptions.signal.onabort = () => {
          reject(new DOMException("Aborted", "AbortError"));
        };
        if (fetchOptions.signal.aborted) {
          return reject(new DOMException("Aborted", "AbortError"));
        }
      }
      const uid2 = _$1.uniqueId("gql");
      io2.emit(`graphql:request`, uid2, fetchOptions.body, (payload) => {
        resolve3(new Response(JSON.stringify(payload), {
          status: 200,
          headers: {
            "Content-Type": "application/json"
          }
        }));
      });
    });
  };
};
gql`
 subscription GlobalSubscriptions_PushFragment {
   pushFragment {
     target
     fragment
     data
     errors
     variables
     invalidateCache
   }
 }
`;
gql`
subscription GlobalSubscriptions_ErrorWarningChange {
  errorWarningChange {
    baseError {
      id
      ...BaseError
    }
    warnings {
      id
      ...WarningContent
    }
  }
}
`;
gql`
fragment WarningContent on ErrorWrapper {
  id
  title
  errorType
  errorMessage
}
`;
function initializeGlobalSubscriptions(client) {
  const { unsubscribe: unsubscribeErrorWarning } = pipe(
    client.subscription(GlobalSubscriptions_ErrorWarningChangeDocument),
    N$1(() => {
    })
  );
  const { unsubscribe: unsubscribePushFragment } = pipe(
    client.subscription(GlobalSubscriptions_PushFragmentDocument),
    N$1((val) => {
    })
  );
  return () => {
    unsubscribeErrorWarning();
    unsubscribePushFragment();
  };
}
useToast();
function showError(error2) {
  var _a2, _b2, _c, _d, _e, _f, _g;
  `
    GraphQL Field Path: [${(_c = (_b2 = (_a2 = error2.graphQLErrors) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.path) == null ? void 0 : _c.join(", ")}]:

    ${error2.message ?? ((_e = (_d = error2.graphQLErrors) == null ? void 0 : _d[0]) == null ? void 0 : _e.message)}

    ${error2.stack ?? ((_g = (_f = error2.graphQLErrors) == null ? void 0 : _f[0]) == null ? void 0 : _g.stack) ?? ""}
  `;
  console.error(error2);
}
function makeCacheExchange(schema = urqlSchema) {
  return cacheExchange({
    ...urqlCacheKeys,
    schema,
    updates: {
      Subscription: {
        pushFragment(parent, args, cache2, info) {
          var _a2;
          const { pushFragment } = parent;
          for (const toPush of pushFragment) {
            if (toPush.invalidateCache) {
              cache2.invalidate({ __typename: "Query" });
              continue;
            }
            cache2.writeFragment(toPush.fragment, toPush.data, toPush.variables ?? {});
            if ((_a2 = toPush.errors) == null ? void 0 : _a2.length) {
              showError({
                graphQLErrors: toPush.errors
              });
            }
          }
        }
      },
      Mutation: {
        logout(parent, args, cache2, info) {
          cache2.invalidate({ __typename: "Query" });
        }
      }
    }
  });
}
const cypressInRunMode = window.top === window && window.__CYPRESS_MODE__ === "run";
async function makeUrqlClient(config2) {
  const exchanges = [dedupExchange];
  const io2 = getPubSubSource(config2);
  const connectPromise = new Promise((resolve3) => {
    io2.once("connect", resolve3);
  });
  const socketClient = getSocketSource(config2);
  if (config2.target === "launchpad" || config2.target === "app" && !cypressInRunMode) {
    exchanges.push(pubSubExchange(io2));
  }
  exchanges.push(
    errorExchange({
      onError(error2) {
        showError(error2);
      }
    }),
    // https://formidable.com/open-source/urql/docs/graphcache/errors/
    makeCacheExchange(),
    namedRouteExchange,
    fetchExchange,
    subscriptionExchange({
      forwardSubscription(op) {
        return {
          subscribe: (sink) => {
            const dispose = socketClient.subscribe(op, sink);
            return {
              unsubscribe: dispose
            };
          }
        };
      }
    })
  );
  const url2 = config2.target === "launchpad" ? `/__launchpad/graphql` : `/${config2.namespace}/graphql`;
  const client2 = W({
    url: url2,
    requestPolicy: cypressInRunMode ? "cache-only" : "cache-first",
    exchanges,
    // Rather than authoring a custom exchange, let's just polyfill the "fetch"
    // exchange to adapt to a similar interface. This way it'll be simple to
    // swap in-and-out during integration tests.
    fetch: config2.target === "launchpad" || window.__CYPRESS_GQL_NO_SOCKET__ ? window.fetch : urqlFetchSocketAdapter(io2)
  });
  await connectPromise;
  if (window.__CYPRESS_MODE__ !== "run") {
    initializeGlobalSubscriptions(client2);
  }
  return client2;
}
function getPubSubSource(config2) {
  if (config2.target === "launchpad") {
    return io("/data-context", {
      path: "/__launchpad/socket",
      transports: ["websocket"]
    });
  }
  return io("/data-context", {
    path: config2.socketIoRoute,
    transports: ["websocket"]
  });
}
function getSocketSource(config2) {
  const protocol = window.location.protocol.replace("http", "ws");
  const wsUrl = config2.target === "launchpad" ? `ws://${window.location.host}/__launchpad/graphql-ws` : `${protocol}//${window.location.host}${config2.socketIoRoute}-graphql`;
  return createClient({
    url: wsUrl
  });
}
const _hoisted_1$5 = {
  key: 1,
  class: "w-[640px]"
};
const _hoisted_2$4 = { key: 0 };
const _hoisted_3$2 = { class: "flex font-normal my-[8px] text-[16px] leading-[24px] items-end justify-between" };
const _hoisted_4$1 = { class: "" };
const _hoisted_5 = { class: "flex font-normal text-[16px] leading-[24px] items-center justify-between" };
const _hoisted_6 = { class: "text-gray-800" };
const _hoisted_7 = /* @__PURE__ */ createBaseVNode("span", { class: "text-red-500" }, "*", -1);
const _hoisted_8 = { class: "flex font-normal mt-[24px] text-[16px] leading-[24px] items-center" };
const _hoisted_9 = {
  class: "grow",
  for: "projectName"
};
const _hoisted_10 = { class: "text-gray-800" };
const _hoisted_11 = /* @__PURE__ */ createBaseVNode("span", { class: "ml-[4px] text-red-500" }, "*", -1);
const _hoisted_12 = { class: "ml-[8px] text-gray-500" };
const _hoisted_13 = { class: "flex gap-[16px]" };
const _sfc_main$b = /* @__PURE__ */ defineComponent({
  __name: "SelectCloudProjectModal",
  props: {
    gql: null,
    utmMedium: null,
    utmContent: null
  },
  emits: ["success", "cancel", "update-projectId-failed"],
  setup(__props, { emit: emit2 }) {
    var _a2;
    const props = __props;
    const { t: t2 } = useI18n();
    const online = useOnline();
    gql`
fragment CloudProjectNode on CloudProject {
  id
  slug
  name
}
`;
    gql`
fragment SelectCloudProjectModal on Query {
  cloudViewer {
    id
    cloudOrganizationsUrl
    organizations(first: 100) { # Not expecting there will be > 100 orgs for a user. If there are we will implement pagination
      nodes {
        id
        name
        projects(first: 100) { # Not expecting there will be > 100 projects. If there are we will implement pagination
          nodes {
            id
            ...CloudProjectNode
          }
        }
      }
    }
  }
  currentProject{
    id
    title
    ...NeedManualUpdateModal
  }
}
`;
    gql`
mutation SelectCloudProjectModal_SetProjectId( $projectId: String! ) {
  setProjectIdInConfigFile(projectId: $projectId) {
    currentProject{
      id
      projectId
      cloudProject {
        __typename
        ... on CloudProject {
          id
          runs(first: 10) {
            nodes {
              id 
              createdAt
              status
              totalDuration
              url
              tags {
                id
                name
              }
              totalPassed
              totalFailed
              totalPending
              totalSkipped
              totalFlakyTests
              commitInfo {
                authorName
                authorEmail
                summary
                branch
              }
            }
          }
        }
      }
    }
  }
}
`;
    gql`
mutation SelectCloudProjectModal_CreateCloudProject( $name: String!, $orgId: ID!, $public: Boolean!, $campaign: String, $cohort: String, $medium: String, $source: String! ) {
  cloudProjectCreate(name: $name, orgId: $orgId, public: $public, campaign: $campaign, cohort: $cohort, medium: $medium, source: $source) {
    id
    slug
  }
}
`;
    const isInternalServerError = ref(false);
    const graphqlError = ref();
    const projectName = ref(((_a2 = props.gql.currentProject) == null ? void 0 : _a2.title) || "");
    const projectAccess = ref("private");
    const organizationOptions = computed(() => {
      var _a3, _b2, _c;
      const options2 = (_c = (_b2 = (_a3 = props.gql.cloudViewer) == null ? void 0 : _a3.organizations) == null ? void 0 : _b2.nodes) == null ? void 0 : _c.map((org) => {
        return {
          id: org.id,
          name: org.name,
          icon: FolderIcon
        };
      });
      return lodashExports.sortBy(options2 || [], "name");
    });
    const pickedOrganization = ref(organizationOptions.value.length >= 1 ? organizationOptions.value[0] : void 0);
    const projectOptions = computed(() => {
      var _a3, _b2, _c, _d, _e;
      const organization = (_c = (_b2 = (_a3 = props.gql.cloudViewer) == null ? void 0 : _a3.organizations) == null ? void 0 : _b2.nodes) == null ? void 0 : _c.find((org) => {
        var _a4;
        return org.id === ((_a4 = pickedOrganization == null ? void 0 : pickedOrganization.value) == null ? void 0 : _a4.id);
      });
      const options2 = (_e = (_d = organization == null ? void 0 : organization.projects) == null ? void 0 : _d.nodes) == null ? void 0 : _e.map((project) => {
        return {
          id: project.id,
          name: project.name,
          slug: project.slug
        };
      });
      return lodashExports.sortBy(options2 || [], "name");
    });
    const newProject = ref(projectOptions.value.length === 0);
    const pickedProject = ref();
    watch(projectOptions, (newVal, oldVal) => {
      if (lodashExports.isEqual(newVal, oldVal)) {
        return;
      }
      if (newVal.length === 1) {
        pickedProject.value = newVal[0];
      } else {
        pickedProject.value = newVal.find((p2) => p2.name === projectName.value);
      }
      newProject.value = newVal.length === 0;
    }, {
      immediate: true
    });
    const orgPlaceholder = t2("runs.connect.modal.selectProject.placeholderOrganizations");
    const projectPlaceholder = computed(() => {
      return pickedOrganization.value ? t2("runs.connect.modal.selectProject.placeholderProjects") : t2("runs.connect.modal.selectProject.placeholderProjectsPending");
    });
    const organizationUrl = computed(() => {
      var _a3;
      return (_a3 = props.gql.cloudViewer) == null ? void 0 : _a3.cloudOrganizationsUrl;
    });
    const createCloudProjectMutation = useMutation(SelectCloudProjectModal_CreateCloudProjectDocument);
    const setProjectIdMutation = useMutation(SelectCloudProjectModal_SetProjectIdDocument);
    async function createOrConnectProject() {
      var _a3, _b2, _c, _d, _e;
      let projectId;
      const isNewProject = Boolean(newProject.value && pickedOrganization.value);
      if (isNewProject) {
        const { data, error: error2 } = await createCloudProjectMutation.executeMutation({
          orgId: pickedOrganization.value.id,
          name: projectName.value,
          public: projectAccess.value === "public",
          campaign: "Create project",
          cohort: props.utmContent || "",
          medium: props.utmMedium,
          source: getUtmSource()
        });
        if (error2 == null ? void 0 : error2.graphQLErrors.length) {
          const err = error2.graphQLErrors[0];
          const extension = (_a3 = err.extensions) == null ? void 0 : _a3.code;
          isInternalServerError.value = extension === "INTERNAL_SERVER_ERROR";
          graphqlError.value = {
            extension,
            message: err.message
          };
        } else {
          graphqlError.value = void 0;
        }
        projectId = (_b2 = data == null ? void 0 : data.cloudProjectCreate) == null ? void 0 : _b2.slug;
      } else {
        projectId = (_c = pickedProject.value) == null ? void 0 : _c.slug;
      }
      if (projectId) {
        const { data } = await setProjectIdMutation.executeMutation({ projectId });
        const updatedProjectId = (_e = (_d = data == null ? void 0 : data.setProjectIdInConfigFile) == null ? void 0 : _d.currentProject) == null ? void 0 : _e.projectId;
        if (updatedProjectId === projectId) {
          emit2("success");
        } else {
          emit2("update-projectId-failed", projectId);
        }
      }
    }
    const isOnline = computed(() => online.value);
    const disableButton = computed(() => {
      if (newProject.value) {
        return !projectName.value;
      }
      return !pickedProject.value;
    });
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      return openBlock(), createBlock(_sfc_main$Y, {
        "model-value": "",
        title: newProject.value ? unref(t2)("runs.connect.modal.selectProject.createProject") : unref(t2)("runs.connect.modal.title"),
        "help-link": "https://on.cypress.io/adding-new-project",
        "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => emit2("cancel"))
      }, createSlots({
        default: withCtx(() => [
          !unref(isOnline) ? (openBlock(), createBlock(_sfc_main$e, {
            key: 0,
            class: "mt-[24px]"
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("launchpadErrors.noInternet.message")), 1)
            ]),
            _: 1
          })) : (openBlock(), createElementBlock("div", _hoisted_1$5, [
            graphqlError.value ? (openBlock(), createBlock(_sfc_main$1i, {
              key: 0,
              "v-model": Boolean(graphqlError.value),
              status: "error",
              title: isInternalServerError.value ? unref(t2)("runs.connect.errors.internalServerError.title") : unref(t2)("runs.connect.errors.baseError.title"),
              class: "mb-[16px]",
              icon: unref(WarningIcon$1),
              dismissible: isInternalServerError.value
            }, {
              default: withCtx(() => [
                !isInternalServerError.value ? (openBlock(), createElementBlock("p", _hoisted_2$4, toDisplayString$1(graphqlError.value.message), 1)) : (openBlock(), createBlock(_component_i18n_t, {
                  key: 1,
                  scope: "global",
                  keypath: "runs.connect.errors.internalServerError.description"
                }, {
                  default: withCtx(() => [
                    createVNode(_sfc_main$1x, { href: "https://www.cypressstatus.com/" }, {
                      default: withCtx(() => [
                        createTextVNode(toDisplayString$1(unref(t2)("runs.connect.errors.internalServerError.link")), 1)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }))
              ]),
              _: 1
            }, 8, ["v-model", "title", "icon", "dismissible"])) : createCommentVNode("", true),
            createVNode(_sfc_main$1p, {
              modelValue: pickedOrganization.value,
              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => pickedOrganization.value = $event),
              options: unref(organizationOptions),
              "item-value": "name",
              "item-key": "id",
              placeholder: unref(orgPlaceholder),
              "data-cy": "selectOrganization"
            }, {
              label: withCtx(() => [
                createBaseVNode("span", _hoisted_3$2, [
                  createBaseVNode("span", _hoisted_4$1, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.organization")), 1),
                  unref(organizationUrl) ? (openBlock(), createBlock(_sfc_main$1x, {
                    key: 0,
                    class: "cursor-pointer text-right text-indigo-500 hover:underline",
                    href: unref(organizationUrl)
                  }, {
                    default: withCtx(() => [
                      createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.manageOrgs")), 1)
                    ]),
                    _: 1
                  }, 8, ["href"])) : createCommentVNode("", true)
                ])
              ]),
              "input-prefix": withCtx(() => [
                createVNode(unref(__unplugin_components_0), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              "item-prefix": withCtx(() => [
                createVNode(unref(__unplugin_components_0), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              _: 1
            }, 8, ["modelValue", "options", "placeholder"]),
            !newProject.value ? (openBlock(), createBlock(_sfc_main$1p, {
              key: 1,
              modelValue: pickedProject.value,
              "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => pickedProject.value = $event),
              class: normalizeClass(["mt-[16px] transition-all", pickedOrganization.value ? void 0 : "opacity-50"]),
              options: unref(projectOptions),
              "item-value": "name",
              "item-key": "id",
              disabled: !pickedOrganization.value,
              placeholder: unref(projectPlaceholder),
              "data-cy": "selectProject"
            }, {
              label: withCtx(() => [
                createBaseVNode("div", _hoisted_5, [
                  createBaseVNode("p", _hoisted_6, [
                    createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.project")) + " ", 1),
                    _hoisted_7
                  ]),
                  createBaseVNode("a", {
                    class: "cursor-pointer my-[8px] text-right text-indigo-500 hover:underline",
                    onClick: _cache[1] || (_cache[1] = ($event) => newProject.value = true)
                  }, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.createNewProject")), 1)
                ])
              ]),
              "input-prefix": withCtx(() => [
                createVNode(unref(FolderIcon), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              "item-prefix": withCtx(() => [
                createVNode(unref(FolderIcon), { class: "h-[16px] w-[16px] icon-dark-gray-500" })
              ]),
              _: 1
            }, 8, ["modelValue", "class", "options", "disabled", "placeholder"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
              createBaseVNode("div", _hoisted_8, [
                createBaseVNode("label", _hoisted_9, [
                  createBaseVNode("span", _hoisted_10, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.projectName")), 1),
                  _hoisted_11,
                  createBaseVNode("span", _hoisted_12, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.projectNameDisclaimer")), 1)
                ]),
                unref(projectOptions).length > 0 ? (openBlock(), createElementBlock("a", {
                  key: 0,
                  class: "cursor-pointer text-indigo-500 hover:underline",
                  onClick: _cache[3] || (_cache[3] = ($event) => newProject.value = false)
                }, toDisplayString$1(unref(t2)("runs.connect.modal.selectProject.chooseExistingProject")), 1)) : createCommentVNode("", true)
              ]),
              createVNode(Input, {
                id: "projectName",
                modelValue: projectName.value,
                "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => projectName.value = $event),
                class: "mt-[8px]",
                "input-classes": "h-[38px]",
                "prefix-icon": unref(FolderIcon),
                "prefix-icon-classes": "icon-dark-gray-500"
              }, null, 8, ["modelValue", "prefix-icon"]),
              createVNode(Radio, {
                value: projectAccess.value,
                "onUpdate:value": _cache[5] || (_cache[5] = ($event) => projectAccess.value = $event),
                name: "projectAccess",
                label: unref(t2)("runs.connect.modal.selectProject.newProjectAccess"),
                options: [
                  {
                    label: unref(t2)("runs.connect.modal.selectProject.privateLabel"),
                    description: unref(t2)("runs.connect.modal.selectProject.privateDescription"),
                    value: "private"
                  },
                  {
                    label: unref(t2)("runs.connect.modal.selectProject.publicLabel"),
                    description: unref(t2)("runs.connect.modal.selectProject.publicDescription"),
                    value: "public"
                  }
                ]
              }, null, 8, ["value", "label", "options"])
            ], 64))
          ]))
        ]),
        _: 2
      }, [
        unref(isOnline) ? {
          name: "footer",
          fn: withCtx(() => [
            createBaseVNode("div", _hoisted_13, [
              createVNode(_sfc_main$1t, {
                size: "lg",
                "prefix-icon": newProject.value ? unref(CreateIcon) : unref(ConnectIcon),
                "prefix-icon-class": "icon-dark-white",
                disabled: unref(disableButton),
                "data-cy": "connect-project",
                onClick: createOrConnectProject
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(newProject.value ? unref(t2)("runs.connect.modal.selectProject.createProject") : unref(t2)("runs.connect.modal.selectProject.connectProject")), 1)
                ]),
                _: 1
              }, 8, ["prefix-icon", "disabled"]),
              createVNode(_sfc_main$1t, {
                variant: "outline",
                size: "lg",
                onClick: _cache[6] || (_cache[6] = ($event) => emit2("cancel"))
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.cancel")), 1)
                ]),
                _: 1
              })
            ])
          ]),
          key: "0"
        } : void 0
      ]), 1032, ["title"]);
    };
  }
});
const _hoisted_1$4 = {
  key: 1,
  class: "border border-dashed rounded border-gray-100 text-center p-[24px] w-[592px]"
};
const _hoisted_2$3 = { class: "mb-[16px] text-gray-700" };
const _hoisted_3$1 = { class: "flex gap-[16px]" };
const _sfc_main$a = /* @__PURE__ */ defineComponent({
  __name: "CreateCloudOrgModal",
  props: {
    gql: null
  },
  emits: ["cancel"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    const online = useOnline();
    gql`
fragment CreateCloudOrgModal on CloudUser {
  id
  createCloudOrganizationUrl
}
`;
    gql`
mutation CreateCloudOrgModal_CloudOrganizationsCheck {
  refreshCloudViewer {
    ...CloudConnectModals
  }
}
`;
    const refreshOrgs = useMutation(CreateCloudOrgModal_CloudOrganizationsCheckDocument);
    const refetch = useDebounceFn(() => refreshOrgs.executeMutation({}), 1e3);
    const waitingOrgToBeCreated = ref(false);
    let timer;
    function startWaitingOrgToBeCreated() {
      waitingOrgToBeCreated.value = true;
      timer = setTimeout(() => {
        waitingOrgToBeCreated.value = false;
      }, 6e4);
    }
    onBeforeUnmount(() => {
      window.clearTimeout(timer);
    });
    const createOrgUrl = computed(() => props.gql.createCloudOrganizationUrl);
    const isOnline = computed(() => online.value);
    return (_ctx, _cache) => {
      const _component_i_cy_office_building_x16 = __unplugin_components_0;
      const _component_i_cy_loading_x16 = __unplugin_components_0$l;
      return openBlock(), createBlock(_sfc_main$Y, {
        "model-value": "",
        title: unref(t2)("runs.connect.modal.title"),
        "help-link": "https://on.cypress.io/adding-new-project",
        "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => emit2("cancel"))
      }, createSlots({
        default: withCtx(() => [
          !unref(isOnline) ? (openBlock(), createBlock(_sfc_main$e, {
            key: 0,
            class: "mt-[24px]"
          }, {
            default: withCtx(() => [
              createTextVNode(toDisplayString$1(unref(t2)("launchpadErrors.noInternet.message")), 1)
            ]),
            _: 1
          })) : (openBlock(), createElementBlock("div", _hoisted_1$4, [
            createBaseVNode("p", _hoisted_2$3, toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.description")), 1),
            unref(createOrgUrl) ? (openBlock(), createBlock(_sfc_main$1x, {
              key: 0,
              class: "border rounded mx-auto outline-none bg-indigo-500 border-indigo-500 text-white max-h-[60px] py-[11px] px-[16px] inline-block hocus-default",
              href: unref(createOrgUrl),
              "include-graphql-port": true,
              onClick: _cache[0] || (_cache[0] = ($event) => startWaitingOrgToBeCreated())
            }, {
              default: withCtx(() => [
                createVNode(_component_i_cy_office_building_x16, { class: "inline-block icon-dark-white" }),
                createTextVNode(" " + toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.button")), 1)
              ]),
              _: 1
            }, 8, ["href"])) : createCommentVNode("", true)
          ]))
        ]),
        _: 2
      }, [
        unref(isOnline) ? {
          name: "footer",
          fn: withCtx(() => [
            createBaseVNode("div", _hoisted_3$1, [
              waitingOrgToBeCreated.value ? (openBlock(), createBlock(_sfc_main$1t, {
                key: 0,
                size: "lg",
                variant: "pending"
              }, {
                prefix: withCtx(() => [
                  createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
                ]),
                default: withCtx(() => [
                  createTextVNode(" " + toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.waitingButton")), 1)
                ]),
                _: 1
              })) : (openBlock(), createBlock(_sfc_main$1t, {
                key: 1,
                size: "lg",
                onClick: _cache[1] || (_cache[1] = ($event) => unref(refetch)())
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.createOrg.refreshButton")), 1)
                ]),
                _: 1
              })),
              createVNode(_sfc_main$1t, {
                variant: "outline",
                size: "lg",
                onClick: _cache[2] || (_cache[2] = ($event) => emit2("cancel"))
              }, {
                default: withCtx(() => [
                  createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.cancel")), 1)
                ]),
                _: 1
              })
            ])
          ]),
          key: "0"
        } : void 0
      ]), 1032, ["title"]);
    };
  }
});
const _hoisted_1$3 = { class: "mt-[24px] mb-[16px] text-[16px] leading-[24px]" };
const _hoisted_2$2 = /* @__PURE__ */ createBaseVNode("code", { class: "border rounded border-gray-200 m-[2px] py-[2px] px-[3px] text-purple-500 text-[16px]" }, "projectId", -1);
const _hoisted_3 = /* @__PURE__ */ createBaseVNode("span", { class: "text-indigo-500" }, "cypress.config.js", -1);
const _hoisted_4 = { class: "flex gap-[16px]" };
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
  __name: "NeedManualUpdateModal",
  props: {
    gql: null,
    newProjectId: null
  },
  emits: ["cancel"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const { t: t2 } = useI18n();
    gql`
fragment NeedManualUpdateModal on CurrentProject {
  id
  projectId
}`;
    const projectIdCode = computed(() => `projectId: '${props.newProjectId}'`);
    const helpCode = computed(() => {
      return `
export ${"default"} {
  ${projectIdCode.value}, // <- add this line
}`;
    });
    return (_ctx, _cache) => {
      const _component_i18n_t = resolveComponent("i18n-t");
      const _component_i_cy_loading_x16 = __unplugin_components_0$l;
      return openBlock(), createBlock(_sfc_main$Y, {
        "model-value": "",
        title: unref(t2)("runs.connect.modal.connectManually.title"),
        "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => emit2("cancel"))
      }, {
        footer: withCtx(() => [
          createBaseVNode("div", _hoisted_4, [
            createVNode(_sfc_main$1t, {
              size: "lg",
              variant: "pending"
            }, {
              prefix: withCtx(() => [
                createVNode(_component_i_cy_loading_x16, { class: "animate-spin icon-dark-white icon-light-gray-400" })
              ]),
              default: withCtx(() => [
                createTextVNode(" " + toDisplayString$1(unref(t2)("runs.connect.modal.connectManually.waitingButton")), 1)
              ]),
              _: 1
            }),
            createVNode(_sfc_main$1t, {
              variant: "outline",
              size: "lg",
              onClick: _cache[0] || (_cache[0] = ($event) => emit2("cancel"))
            }, {
              default: withCtx(() => [
                createTextVNode(toDisplayString$1(unref(t2)("runs.connect.modal.cancel")), 1)
              ]),
              _: 1
            })
          ])
        ]),
        default: withCtx(() => [
          createVNode(_sfc_main$1i, {
            status: "warning",
            title: unref(t2)("runs.connect.modal.connectManually.warning"),
            icon: unref(WarningIcon$1),
            "icon-classes": "icon-dark-orange-400"
          }, null, 8, ["title", "icon"]),
          createBaseVNode("p", _hoisted_1$3, [
            createVNode(_component_i18n_t, {
              scope: "global",
              keypath: "runs.connect.modal.connectManually.mainMessage"
            }, {
              projectId: withCtx(() => [
                _hoisted_2$2
              ]),
              configFile: withCtx(() => [
                _hoisted_3
              ]),
              _: 1
            })
          ]),
          createVNode(ShikiHighlight, {
            class: "rounded border border-gray-200",
            lang: "javascript",
            code: unref(helpCode),
            "line-numbers": "",
            "copy-button": ""
          }, null, 8, ["code"])
        ]),
        _: 1
      }, 8, ["title"]);
    };
  }
});
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
  __name: "CloudConnectModals",
  props: {
    gql: null,
    utmMedium: null,
    utmContent: null
  },
  emits: ["success", "cancel"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    gql`
fragment CloudConnectModals on Query {
  ...SelectCloudProjectModal
  cloudViewer {
    id
    ...CreateCloudOrgModal
    firstOrganization: organizations(first: 1) {
      nodes {
        id
      }
    }
  }
  currentProject{
    id
    ...NeedManualUpdateModal
  }
}
`;
    gql`
subscription CloudConnectModals_MonitorCloudViewer {
  cloudViewerChange {
    ...CloudConnectModals
  }
}
`;
    useSubscription({ query: CloudConnectModals_MonitorCloudViewerDocument });
    const newProjectId = ref("");
    const isManualUpdateOpen = ref(false);
    function showManualUpdate(projectId) {
      newProjectId.value = projectId;
      isManualUpdateOpen.value = true;
    }
    return (_ctx, _cache) => {
      var _a2, _b2;
      return isManualUpdateOpen.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
        props.gql.currentProject ? (openBlock(), createBlock(_sfc_main$9, {
          key: 0,
          gql: props.gql.currentProject,
          "new-project-id": newProjectId.value,
          onCancel: _cache[0] || (_cache[0] = ($event) => emit2("cancel"))
        }, null, 8, ["gql", "new-project-id"])) : createCommentVNode("", true)
      ], 64)) : ((_b2 = (_a2 = props.gql.cloudViewer) == null ? void 0 : _a2.organizations) == null ? void 0 : _b2.nodes.length) ?? 0 > 0 ? (openBlock(), createBlock(_sfc_main$b, {
        key: 1,
        gql: props.gql,
        show: "",
        "utm-medium": props.utmMedium,
        "utm-content": props.utmContent,
        onUpdateProjectIdFailed: showManualUpdate,
        onSuccess: _cache[1] || (_cache[1] = ($event) => emit2("success")),
        onCancel: _cache[2] || (_cache[2] = ($event) => emit2("cancel"))
      }, null, 8, ["gql", "utm-medium", "utm-content"])) : props.gql.cloudViewer ? (openBlock(), createBlock(_sfc_main$a, {
        key: 2,
        gql: props.gql.cloudViewer,
        onCancel: _cache[3] || (_cache[3] = ($event) => emit2("cancel"))
      }, null, 8, ["gql"])) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
  __name: "RecordPrompt",
  props: {
    recordKey: null,
    currentTestingType: null
  },
  setup(__props) {
    const props = __props;
    const firstRecordKey = computed(() => {
      return props.recordKey ?? "<record-key>";
    });
    const recordCommand = computed(() => {
      const componentFlagOrSpace = props.currentTestingType === "component" ? " --component " : " ";
      return `npx cypress run${componentFlagOrSpace}--record --key ${firstRecordKey.value}`;
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$1e, {
        command: unref(recordCommand),
        class: "bg-white max-w-[900px]"
      }, null, 8, ["command"]);
    };
  }
});
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
  __name: "RecordPromptAdapter",
  setup(__props) {
    gql`
query RecordPromptAdapter {
  currentProject {
    id
    title
    currentTestingType
    cloudProject {
      __typename
      ... on CloudProject {
        id
        recordKeys {
          id
          key
        }
      }
    }
  }
}
`;
    const query2 = useQuery({ query: RecordPromptAdapterDocument });
    return (_ctx, _cache) => {
      var _a2, _b2, _c, _d, _e, _f, _g, _h;
      return openBlock(), createBlock(_sfc_main$7, {
        "record-key": ((_c = (_b2 = (_a2 = unref(query2).data.value) == null ? void 0 : _a2.currentProject) == null ? void 0 : _b2.cloudProject) == null ? void 0 : _c.__typename) === "CloudProject" ? (_f = (_e = (_d = unref(query2).data.value) == null ? void 0 : _d.currentProject.cloudProject.recordKeys) == null ? void 0 : _e[0]) == null ? void 0 : _f.key : "",
        "current-testing-type": (_h = (_g = unref(query2).data.value) == null ? void 0 : _g.currentProject) == null ? void 0 : _h.currentTestingType
      }, null, 8, ["record-key", "current-testing-type"]);
    };
  }
});
const MAJOR_VERSION_FOR_CONTENT = "12";
const BannerIds = {
  ACI_082022_LOGIN: "aci_082022_login",
  ACI_082022_CREATE_ORG: "aci_082022_createOrganization",
  ACI_082022_CONNECT_PROJECT: "aci_082022_connectProject",
  ACI_082022_RECORD: "aci_082022_record",
  CT_052023_AVAILABLE: "ct_052023_available",
  ACI_052023_NO_RUNS_FOUND_FOR_BRANCH: "aci_052023_noRunsFoundForBranch",
  ACI_052023_GIT_NOT_DETECTED: "aci_052023_gitNotDetected"
};
const BANNER_ID_BY_STATE = {
  isLoggedOut: BannerIds.ACI_082022_LOGIN,
  needsOrgConnect: BannerIds.ACI_082022_CREATE_ORG,
  needsProjectConnect: BannerIds.ACI_082022_CONNECT_PROJECT,
  needsRecordedRun: BannerIds.ACI_082022_RECORD,
  isComponentTestingCandidate: BannerIds.CT_052023_AVAILABLE
};
const minTimeSinceEvent = (eventTime, waitTime) => {
  if (!eventTime) {
    return true;
  }
  const waitTimestamp = humanInterval_1(waitTime.toLocaleLowerCase());
  if (isNaN(waitTimestamp)) {
    throw new Error(`incorrect format for waitTime provided, value must be \`n days\`, \`n minutes\` etc. Value received was ${waitTime}`);
  }
  return Date.now() - eventTime > waitTimestamp;
};
const isAllowedFeature = (featureName, userProjectStatusStore, state = "allTasksCompleted") => {
  const {
    cypressFirstOpened,
    promptsShown,
    latestBannerShownTime,
    bannersState,
    project
  } = userProjectStatusStore;
  const events = {
    cypressFirstOpened,
    navCiPromptAutoOpened: promptsShown.ci1,
    loginModalRecordPromptShown: promptsShown.loginModalRecord,
    latestSmartBannerShown: latestBannerShownTime
  };
  function bannerForCurrentStatusWasNotDismissed() {
    var _a2;
    if (!state) {
      return true;
    }
    const bannerId = BANNER_ID_BY_STATE[state];
    if (!bannerId) {
      return true;
    }
    return !((_a2 = bannersState == null ? void 0 : bannersState[bannerId]) == null ? void 0 : _a2.dismissed);
  }
  function noOtherSmartBannerShownWithin(interval2) {
    const currentBannerId = BANNER_ID_BY_STATE[state];
    return Object.entries(BannerIds).map(([_2, bannerId]) => bannerId).filter((bannerId) => bannerId !== currentBannerId).map((bannerId) => {
      var _a2;
      return (_a2 = bannersState[bannerId]) == null ? void 0 : _a2.dismissed;
    }).every((bannerDismissed) => minTimeSinceEvent(bannerDismissed, interval2));
  }
  function bannersAreNotDisabledForTesting() {
    return !(bannersState == null ? void 0 : bannersState._disabled);
  }
  const rules = {
    specsListBanner: {
      base: [
        minTimeSinceEvent(events.cypressFirstOpened, "4 days"),
        minTimeSinceEvent(events.navCiPromptAutoOpened, "1 day"),
        bannerForCurrentStatusWasNotDismissed(),
        bannersAreNotDisabledForTesting()
      ],
      needsRecordedRun: [
        minTimeSinceEvent(events.loginModalRecordPromptShown, "1 day"),
        project.hasNonExampleSpec
      ],
      needsOrgConnect: [],
      needsProjectConnect: [],
      isLoggedOut: [],
      isComponentTestingCandidate: [
        noOtherSmartBannerShownWithin("2 days")
      ]
    },
    docsCiPrompt: {
      base: [
        minTimeSinceEvent(events.cypressFirstOpened, "4 days"),
        minTimeSinceEvent(events.latestSmartBannerShown, "1 day")
      ],
      needsRecordedRun: [],
      needsOrgConnect: [],
      needsProjectConnect: [],
      isLoggedOut: [],
      allTasksCompleted: [],
      isComponentTestingCandidate: []
    }
  };
  const baseRules = [...rules[featureName].base];
  const statusSpecificRules = (state && rules[featureName][state]) ?? [false];
  const rulesToCheck = baseRules.concat(statusSpecificRules);
  return rulesToCheck.every((rule) => rule === true);
};
gql`
mutation UsePromptManager_SetProjectPreferences($value: String!) {
  setPreferences(type: project, value: $value) {
    currentProject {
      id
      savedState
    }
  }
}
`;
gql`
mutation UsePromptManager_SetGlobalPreferences($value: String!) {
  setPreferences(type: global, value: $value) {
    localSettings {
      preferences {
        majorVersionWelcomeDismissed
      }
    }
  }
}
`;
function usePromptManager() {
  const setProjectPreferencesMutation = useMutation(UsePromptManager_SetProjectPreferencesDocument);
  const setGlobalPreferencesMutation = useMutation(UsePromptManager_SetGlobalPreferencesDocument);
  const userProjectStatusStore = useUserProjectStatusStore();
  function setPromptShown(slug) {
    return setProjectPreferencesMutation.executeMutation({ value: JSON.stringify({ promptsShown: { [slug]: Date.now() } }) });
  }
  function setMajorVersionWelcomeDismissed(majorVersion) {
    return setGlobalPreferencesMutation.executeMutation({ value: JSON.stringify({ majorVersionWelcomeDismissed: { [majorVersion]: Date.now() } }) });
  }
  const wrappedIsAllowedFeature = (featureName, state) => {
    return isAllowedFeature(featureName, userProjectStatusStore, state);
  };
  const getEffectiveBannerState = (featureName) => {
    const cloudStatus = userProjectStatusStore.cloudStatus;
    const projectStatus = userProjectStatusStore.projectStatus;
    if (featureName === "specsListBanner") {
      if (cloudStatus !== "allTasksCompleted" && wrappedIsAllowedFeature("specsListBanner", cloudStatus)) {
        return cloudStatus;
      }
      if (projectStatus !== "allTasksCompleted" && wrappedIsAllowedFeature("specsListBanner", projectStatus)) {
        return projectStatus;
      }
    }
    return null;
  };
  return {
    setPromptShown,
    isAllowedFeature: wrappedIsAllowedFeature,
    setMajorVersionWelcomeDismissed,
    getEffectiveBannerState
  };
}
const _hoisted_1$2 = { class: "max-w-[43.75rem] py-7 px-6 text-gray-600" };
const _hoisted_2$1 = { class: "mb-[24px]" };
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
  __name: "RecordRunModal",
  props: {
    utmMedium: null,
    utmContent: null
  },
  emits: ["cancel"],
  setup(__props, { emit: emit2 }) {
    const props = __props;
    const { setPromptShown } = usePromptManager();
    onMounted(() => {
      setPromptShown("loginModalRecord");
    });
    const { t: t2 } = useI18n();
    const isModalOpen = ref(true);
    const helpLink = getUrlWithParams({
      url: "https://on.cypress.io/cypress-run-record-key",
      params: {
        utm_medium: props.utmMedium,
        utm_source: getUtmSource(),
        utm_content: props.utmContent || ""
      }
    });
    return (_ctx, _cache) => {
      return openBlock(), createBlock(_sfc_main$Y, {
        class: "transition transition-all duration-200",
        variant: "bare",
        title: unref(t2)("specPage.banners.record.title"),
        "model-value": isModalOpen.value,
        "help-link": unref(helpLink),
        "no-help": !unref(helpLink),
        "data-cy": "record-run-modal",
        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit2("cancel"))
      }, {
        default: withCtx(() => [
          createBaseVNode("div", _hoisted_1$2, [
            createBaseVNode("p", _hoisted_2$1, toDisplayString$1(unref(t2)("specPage.banners.record.content")), 1),
            createVNode(_sfc_main$6)
          ])
        ]),
        _: 1
      }, 8, ["title", "model-value", "help-link", "no-help"]);
    };
  }
});
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
  __name: "LoginConnectModalsContent",
  props: {
    gql: null
  },
  setup(__props) {
    const props = __props;
    gql`
fragment LoginConnectModalsContent on Query {
  ...LoginModal
  ...CloudConnectModals
  currentProject {
    id
    currentTestingType
  }
}
`;
    const userProjectStatusStore = useUserProjectStatusStore();
    const { closeLoginConnectModal, cloudStatusMatches } = userProjectStatusStore;
    const keepLoginOpen = ref(false);
    watch(() => userProjectStatusStore.cloudStatus, (newVal, oldVal) => {
      if (oldVal === "isLoggedOut" && newVal !== "isLoggedOut") {
        keepLoginOpen.value = true;
      }
    }, {
      immediate: true
    });
    const handleCloseLogin = () => {
      if (cloudStatusMatches("allTasksCompleted")) {
        closeLoginConnectModal();
      } else {
        keepLoginOpen.value = false;
      }
    };
    const gqlRef = ref(null);
    debouncedWatch(() => props.gql, (newVal) => {
      if (newVal) {
        gqlRef.value = newVal;
      }
    }, {
      debounce: 10,
      immediate: true
    });
    return (_ctx, _cache) => {
      return unref(userProjectStatusStore).isLoginConnectOpen && gqlRef.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
        unref(cloudStatusMatches)("isLoggedOut") || keepLoginOpen.value ? (openBlock(), createBlock(_sfc_main$c, {
          key: 0,
          gql: gqlRef.value,
          "utm-medium": unref(userProjectStatusStore).utmMedium,
          "utm-content": unref(userProjectStatusStore).utmContent,
          onCancel: unref(closeLoginConnectModal),
          onClose: handleCloseLogin
        }, null, 8, ["gql", "utm-medium", "utm-content", "onCancel"])) : unref(cloudStatusMatches)("needsRecordedRun") ? (openBlock(), createBlock(_sfc_main$5, {
          key: 1,
          "utm-medium": unref(userProjectStatusStore).utmMedium,
          "utm-content": unref(userProjectStatusStore).utmContent,
          onCancel: unref(closeLoginConnectModal)
        }, null, 8, ["utm-medium", "utm-content", "onCancel"])) : unref(cloudStatusMatches)("needsProjectConnect") || unref(cloudStatusMatches)("needsOrgConnect") ? (openBlock(), createBlock(_sfc_main$8, {
          key: 2,
          show: unref(userProjectStatusStore).user.isLoggedIn,
          gql: gqlRef.value,
          "utm-medium": unref(userProjectStatusStore).utmMedium,
          "utm-content": unref(userProjectStatusStore).utmContent,
          onCancel: unref(closeLoginConnectModal),
          onSuccess: unref(closeLoginConnectModal)
        }, null, 8, ["show", "gql", "utm-medium", "utm-content", "onCancel", "onSuccess"])) : createCommentVNode("", true)
      ], 64)) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
  __name: "LoginConnectModals",
  setup(__props) {
    const userProjectStatusStore = useUserProjectStatusStore();
    gql`
query LoginConnectModals_LoginConnectModalsQuery {
  ...LoginConnectModalsContent
}
`;
    const query2 = useQuery({ query: LoginConnectModals_LoginConnectModalsQueryDocument, pause: true });
    const executeQuery = async () => {
      await query2.executeQuery();
    };
    whenever(() => userProjectStatusStore.isLoginConnectOpen, executeQuery);
    return (_ctx, _cache) => {
      return unref(userProjectStatusStore).isLoginConnectOpen ? (openBlock(), createBlock(_sfc_main$4, {
        key: 0,
        gql: unref(query2).data.value
      }, null, 8, ["gql"])) : createCommentVNode("", true);
    };
  }
});
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
  __name: "CloudViewerAndProject",
  setup(__props) {
    gql`
fragment CloudViewerAndProject on Query {
  cloudViewer {
    id
    fullName
    email
    firstOrganization: organizations(first: 1) {
      nodes {
        id
      }
    }
  }
  cachedUser {
    id
    fullName
    email
  }
  authState {
    name
  }
  currentProject {
    id
    projectId
    config
    currentTestingType
    isFullConfigReady
    isCTConfigured
    hasNonExampleSpec
    savedState
    branch
    cloudProject {
      __typename
      ... on CloudProject {
        id
        runs(first: 10) {
          nodes {
            id
            status
            url
          }
        }
      }
    }
  }
  wizard {
    framework {
      id
      name
      icon
      isDetected
    }
  }
}
`;
    gql`
query CloudViewerAndProject_RequiredData {
  ...CloudViewerAndProject
}
`;
    gql`
subscription CloudViewerAndProject_CheckCloudOrgMembership {
  cloudViewerChange {
    ...CloudViewerAndProject
  }
}
`;
    gql`
mutation CloudViewerAndProject_DetectCtFrameworks {
  initializeCtFrameworks
}
`;
    const hasDetectedFrameworks = ref(false);
    const userProjectStatusStore = useUserProjectStatusStore();
    const {
      setHasInitiallyLoaded,
      setUserFlag,
      setProjectFlag,
      setUserData,
      setPromptShown,
      setCypressFirstOpened,
      setTestingType,
      setProjectId,
      setBannersState
    } = userProjectStatusStore;
    useSubscription({ query: CloudViewerAndProject_CheckCloudOrgMembershipDocument });
    const query2 = useQuery({ query: CloudViewerAndProject_RequiredDataDocument });
    const detectCtFrameworks = useMutation(CloudViewerAndProject_DetectCtFrameworksDocument);
    watchEffect(async () => {
      var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
      if (!query2.data.value) {
        return;
      }
      if (!hasDetectedFrameworks.value && ((_a2 = query2.data.value.currentProject) == null ? void 0 : _a2.currentTestingType) === "e2e") {
        await detectCtFrameworks.executeMutation({});
        hasDetectedFrameworks.value = true;
        return;
      }
      setHasInitiallyLoaded();
      const {
        currentProject,
        cachedUser,
        cloudViewer,
        authState,
        wizard
      } = query2.data.value;
      const savedState = currentProject == null ? void 0 : currentProject.savedState;
      if (savedState == null ? void 0 : savedState.promptsShown) {
        for (const item in savedState.promptsShown) {
          setPromptShown(item, savedState.promptsShown[item]);
        }
      }
      if (savedState == null ? void 0 : savedState.firstOpened) {
        setCypressFirstOpened(savedState.firstOpened);
      }
      if (savedState == null ? void 0 : savedState.banners) {
        setBannersState(savedState.banners);
      }
      setTestingType((currentProject == null ? void 0 : currentProject.currentTestingType) ?? void 0);
      setProjectId((currentProject == null ? void 0 : currentProject.projectId) ?? void 0);
      const AUTH_STATE_ERRORS = ["AUTH_COULD_NOT_LAUNCH_BROWSER", "AUTH_ERROR_DURING_LOGIN", "AUTH_COULD_NOT_LAUNCH_BROWSER"];
      setUserData(cloudViewer ?? cachedUser ?? void 0);
      setUserFlag("isLoggedIn", !!(cachedUser == null ? void 0 : cachedUser.id) || !!(cloudViewer == null ? void 0 : cloudViewer.id));
      setUserFlag("loginError", AUTH_STATE_ERRORS.includes((authState == null ? void 0 : authState.name) ?? ""));
      if (cloudViewer) {
        setUserFlag("isOrganizationLoaded", !!cloudViewer.firstOrganization);
        setUserFlag("isMemberOfOrganization", (((_c = (_b2 = cloudViewer.firstOrganization) == null ? void 0 : _b2.nodes) == null ? void 0 : _c.length) ?? 0) > 0);
      }
      setProjectFlag("isConfigLoaded", !!(currentProject == null ? void 0 : currentProject.isFullConfigReady));
      setProjectFlag("isNotAuthorized", ((_d = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _d.__typename) === "CloudProjectUnauthorized");
      setProjectFlag("isNotFound", ((_e = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _e.__typename) === "CloudProjectNotFound");
      setProjectFlag("hasNonExampleSpec", !!(currentProject == null ? void 0 : currentProject.hasNonExampleSpec));
      setProjectFlag("hasNoRecordedRuns", ((_f = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _f.__typename) === "CloudProject" && (((_i = (_h = (_g = currentProject.cloudProject) == null ? void 0 : _g.runs) == null ? void 0 : _h.nodes) == null ? void 0 : _i.length) ?? 0) === 0);
      if ((currentProject == null ? void 0 : currentProject.cloudProject) || !userProjectStatusStore.user.isLoggedIn) {
        setProjectFlag("isProjectConnected", ((_j = currentProject == null ? void 0 : currentProject.cloudProject) == null ? void 0 : _j.__typename) === "CloudProject");
      }
      setProjectFlag("isCTConfigured", !!(currentProject == null ? void 0 : currentProject.isCTConfigured));
      setProjectFlag("hasDetectedCtFramework", ((_k = wizard == null ? void 0 : wizard.framework) == null ? void 0 : _k.isDetected) ?? false);
      setProjectFlag("isUsingGit", !!(currentProject == null ? void 0 : currentProject.branch));
    });
    return () => {
    };
  }
});
const _hoisted_1$1 = {
  key: 1,
  class: "px-[24px] pt-[86px] pb-[24px]"
};
const _hoisted_2 = /* @__PURE__ */ createBaseVNode("div", { "data-e2e": "" }, null, -1);
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
  __name: "Main",
  setup(__props) {
    const { setMajorVersionWelcomeDismissed } = usePromptManager();
    const { t: t2 } = useI18n();
    const isTestingTypeModalOpen = ref(false);
    gql`
fragment MainLaunchpadQueryData on Query {
  ...TestingTypeCards
  ...Wizard
  baseError {
    id
    ...BaseError
  }
  localSettings {
    preferences {
      majorVersionWelcomeDismissed
      wasBrowserSetInCLI
    }
  }
  currentProject {
    id
    isCTConfigured
    isE2EConfigured
    isLoadingConfigFile
    isLoadingNodeEvents
    isFullConfigReady
    needsLegacyConfigMigration
    currentTestingType
    activeBrowser {
      id
    }
  }
  isGlobalMode
  ...GlobalPage
  ...ScaffoldedFiles
  ...WarningList
}
`;
    gql`
query MainLaunchpadQuery {
  ...MainLaunchpadQueryData
}
`;
    gql`
mutation Main_ResetErrorsAndLoadConfig($id: ID!) {
  resetErrorAndLoadConfig(id: $id) {
    ...MainLaunchpadQueryData
  }
}
`;
    gql`
mutation Main_LaunchProject ($testingType: TestingTypeEnum!)  {
  launchOpenProject {
    id
  }
  setProjectPreferencesInGlobalCache(testingType: $testingType) {
    currentProject {
      id
      title
    }
  }
}
`;
    const mutation = useMutation(Main_ResetErrorsAndLoadConfigDocument);
    const launchProject = useMutation(Main_LaunchProjectDocument);
    const resetErrorAndLoadConfig = (id2) => {
      if (!mutation.fetching.value) {
        mutation.executeMutation({ id: id2 });
      }
    };
    const query2 = useQuery({ query: MainLaunchpadQueryDocument });
    const currentProject = computed(() => {
      var _a2;
      return (_a2 = query2.data.value) == null ? void 0 : _a2.currentProject;
    });
    function handleClearLandingPage() {
      var _a2, _b2, _c, _d;
      setMajorVersionWelcomeDismissed(MAJOR_VERSION_FOR_CONTENT);
      const wasBrowserSetInCLI = (_c = (_b2 = (_a2 = query2.data) == null ? void 0 : _a2.value) == null ? void 0 : _b2.localSettings.preferences) == null ? void 0 : _c.wasBrowserSetInCLI;
      const currentTestingType = (_d = currentProject.value) == null ? void 0 : _d.currentTestingType;
      if (wasBrowserSetInCLI && currentTestingType) {
        launchProject.executeMutation({ testingType: currentTestingType });
      }
    }
    const shouldShowWelcome = computed(() => {
      var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
      if (query2.data.value) {
        const hasThisVersionBeenSeen = (_d = (_c = (_b2 = (_a2 = query2.data.value) == null ? void 0 : _a2.localSettings) == null ? void 0 : _b2.preferences) == null ? void 0 : _c.majorVersionWelcomeDismissed) == null ? void 0 : _d[MAJOR_VERSION_FOR_CONTENT];
        const wasBrowserSetInCLI = (_g = (_f = (_e = query2.data) == null ? void 0 : _e.value) == null ? void 0 : _f.localSettings.preferences) == null ? void 0 : _g.wasBrowserSetInCLI;
        const currentTestingType = (_h = currentProject.value) == null ? void 0 : _h.currentTestingType;
        const activeBrowser = (_i = currentProject.value) == null ? void 0 : _i.activeBrowser;
        const needsActiveBrowser = wasBrowserSetInCLI && currentTestingType;
        if (needsActiveBrowser) {
          return !hasThisVersionBeenSeen && activeBrowser;
        }
        return !hasThisVersionBeenSeen;
      }
      return false;
    });
    return (_ctx, _cache) => {
      var _a2, _b2, _c, _d, _e;
      const _component_i_cy_arrow_right_x16 = __unplugin_components_0$n;
      return openBlock(), createElementBlock(Fragment, null, [
        unref(query2).data.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
          createVNode(_sfc_main$G, { class: "w-full z-10 fixed" }),
          unref(shouldShowWelcome) ? (openBlock(), createBlock(MajorVersionWelcome, {
            key: 0,
            class: "pt-[64px]",
            onClearLandingPage: handleClearLandingPage
          })) : (openBlock(), createElementBlock("div", _hoisted_1$1, [
            unref(query2).data.value.baseError ? (openBlock(), createBlock(_sfc_main$S, {
              key: 0,
              gql: unref(query2).data.value.baseError,
              onRetry: resetErrorAndLoadConfig
            }, null, 8, ["gql"])) : unref(query2).data.value.isGlobalMode && !((_a2 = unref(query2).data.value) == null ? void 0 : _a2.currentProject) ? (openBlock(), createBlock(_sfc_main$W, {
              key: 1,
              gql: unref(query2).data.value
            }, null, 8, ["gql"])) : ((_b2 = unref(currentProject)) == null ? void 0 : _b2.needsLegacyConfigMigration) ? (openBlock(), createBlock(_sfc_main$l, { key: 2 })) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
              unref(query2).data.value.scaffoldedFiles ? (openBlock(), createBlock(_sfc_main$i, {
                key: 0,
                gql: unref(query2).data.value
              }, null, 8, ["gql"])) : ((_c = unref(currentProject)) == null ? void 0 : _c.isLoadingConfigFile) ? (openBlock(), createBlock(Spinner, { key: 1 })) : !((_d = unref(currentProject)) == null ? void 0 : _d.currentTestingType) ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
                createVNode(_sfc_main$1a, {
                  gql: unref(query2).data.value
                }, null, 8, ["gql"]),
                createVNode(_sfc_main$19, {
                  title: unref(t2)("welcomePage.title"),
                  description: ""
                }, null, 8, ["title"]),
                createVNode(_sfc_main$Y, {
                  modelValue: isTestingTypeModalOpen.value,
                  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isTestingTypeModalOpen.value = $event),
                  class: "h-full w-full sm:h-auto sm:mx-[5%] sm:w-auto",
                  "help-link": "https://on.cypress.io/choosing-testing-type"
                }, {
                  title: withCtx(() => [
                    createTextVNode(toDisplayString$1(unref(t2)("welcomePage.compareTypes.modalTitle")), 1)
                  ]),
                  default: withCtx(() => [
                    createVNode(_sfc_main$C)
                  ]),
                  _: 1
                }, 8, ["modelValue"]),
                createBaseVNode("button", {
                  class: "mx-auto mt-[12px] text-indigo-500 text-[18px] block hocus-link-default group",
                  onClick: _cache[1] || (_cache[1] = ($event) => isTestingTypeModalOpen.value = true)
                }, [
                  createTextVNode(toDisplayString$1(unref(t2)("welcomePage.review")), 1),
                  createVNode(_component_i_cy_arrow_right_x16, { class: "ml-[4px] transform transition-transform ease-in translate-y-[-1px] duration-200 inline-block icon-dark-current group-hocus:translate-x-[2px]" })
                ]),
                createVNode(_sfc_main$1v, {
                  gql: unref(query2).data.value
                }, null, 8, ["gql"])
              ], 64)) : unref(currentProject).currentTestingType === "component" && !unref(currentProject).isCTConfigured ? (openBlock(), createBlock(_sfc_main$18, {
                key: 3,
                gql: unref(query2).data.value
              }, null, 8, ["gql"])) : !((_e = unref(currentProject)) == null ? void 0 : _e.isFullConfigReady) ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [
                createVNode(_sfc_main$19, {
                  title: unref(t2)("components.loading.config.title"),
                  description: unref(t2)("components.loading.config.description")
                }, null, 8, ["title", "description"]),
                createVNode(Spinner)
              ], 64)) : (openBlock(), createBlock(_sfc_main$f, { key: 5 }))
            ], 64))
          ])),
          createVNode(_sfc_main$2),
          createVNode(_sfc_main$3)
        ], 64)) : (openBlock(), createBlock(Spinner, { key: 1 })),
        _hoisted_2
      ], 64);
    };
  }
});
const _hoisted_1 = { class: "h-full mx-auto bg-white" };
const _sfc_main = /* @__PURE__ */ defineComponent({
  __name: "App",
  setup(__props) {
    gql`
subscription App_NeedsRelaunch {
  devChange {
    needsRelaunch
  }
}
`;
    gql`
mutation App_DevRelaunch($action: DevRelaunchAction!) {
  devRelaunch(action: $action)
}
`;
    useMutation(App_DevRelaunchDocument);
    ref(false);
    useToast();
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", _hoisted_1, [
        createVNode(_sfc_main$1)
      ]);
    };
  }
});
const index = "";
const createPinia = () => {
  return createPinia$1();
};
const app = createApp(_sfc_main);
app.use(VueToastificationPlugin, {
  position: POSITION.BOTTOM_RIGHT,
  draggable: false,
  closeOnClick: false
});
app.use(createI18n());
app.use(createPinia());
Promise.all([
  makeUrqlClient({ target: "launchpad" }).then((launchpadClient) => {
    app.use(install, launchpadClient);
    return launchpadClient.query(HeaderBar_HeaderBarQueryDocument$1).toPromise();
  }),
  // Make sure highlighter is initialized immediately at app
  // start, so it's available when we render code blocks
  initHighlighter()
]).then(() => {
  app.mount("#app");
});
